找回密码
 注册
Simdroid-非首页
楼主: laihai718

关于超越方程求解的问题(完整题目已经跟帖,希望能得到帮助)

[复制链接]
发表于 2009-10-24 22:42:14 | 显示全部楼层 来自 山东淄博
我用FcCurve(Forcal程序)绘制了一下,仅作参考:


  1. !const["pi",acos(0)*2,1];
  2. !const["r",pi/2-0.6685,1];
  3. f(fai::t)=1/16*(-2932650*cos(1/2*t-fai-r)*pi^2+2932650*cos(-fai-r+3/2*t)*pi^2+1857345*cos(-fai-r+t)*pi^2-1857345*cos(2*t-fai-r)*pi^2-3870720*fai*sin(-fai-r+t)+3677184*fai*sin(-fai-r+3/2*t))/pi^2;
  4. _x(t:fai)= fai=1,XSLSF::pqrt(HFor("f"),&fai,1e-6),105*cos(t-fai-r)-133/2*cos(3/2*t -fai-r); //黑色
  5. _y(t:fai)= fai=1,XSLSF::pqrt(HFor("f"),&fai,1e-6),105*sin(t-fai-r)-133/2*sin(3/2*t -fai-r); //红色
  6. _z(t:fai)= fai=1,XSLSF::pqrt(HFor("f"),&fai,1e-6),96*fai/(2*pi); //蓝色
  7. _R(t:fai)= fai=1,XSLSF::pqrt(HFor("f"),&fai,1e-6),((105*sin(-fai-r+t)-133/2*sin(-fai-r+3/2*t))^2+2304*fai^2/pi^2)^(1/2); //绿色

复制代码


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复 不支持

使用道具 举报

发表于 2009-10-24 22:42:58 | 显示全部楼层 来自 湖北武汉
Simdroid开发平台
这是x的图...

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复 不支持

使用道具 举报

发表于 2009-10-24 22:48:39 | 显示全部楼层 来自 北京
本帖最后由 rocwoods 于 2009-10-24 22:51 编辑

  1. r = pi/2-0.6685;
  2. f=@(t)@(fai)1/16*(-2932650*cos(1/2*t-fai-r)*pi^2+2932650*cos(-fai-r+3/2*t)*pi^2+1857345*cos(-fai-r+t)*pi^2-1857345*cos(2*t-fai-r)*pi^2-3870720*fai*sin(-fai-r+t)+3677184*fai*sin(-fai-r+3/2*t))/pi^2;
  3. x=@(t,fai) 105*cos(t-fai-r)-133/2*cos(3/2*t -fai-r);
  4. y=@(t,fai) 105*sin(t-fai-r)-133/2*sin(3/2*t -fai-r);
  5. z=@(fai) 96*fai/(2*pi);
  6. R=@(fai,t)((105*sin(-fai-r+t)-133/2*sin(-fai-r+3/2*t)).^2+2304*fai.^2/pi^2).^(1/2);
  7. FAI = arrayfun(@(t) fzero(f(t),t+0.1),0.6352:0.001:1.4259);
  8. X = x(0.6352:0.001:1.4259,FAI);
  9. Y = y(0.6352:0.001:1.4259,FAI);
  10. Z = z(FAI);
  11. RR = R(0.6352:0.001:1.4259,FAI);
复制代码

f是双层匿名函数,对于每个给定的t,f(t)可以生成一个关于那个t的函数句柄供fzero调用。
另外关于arrayfun的用法,可以看帮助文档,也可以查询本版,这个例子我以前给出过很多。

评分

1

查看全部评分

回复 不支持

使用道具 举报

发表于 2009-10-24 22:53:47 | 显示全部楼层 来自 山东淄博
Forcal程序中解方程结果没有验证,发现有问题,fai总是=5.4376899809773862,需要再查一下。
回复 不支持

使用道具 举报

发表于 2009-10-24 22:57:11 | 显示全部楼层 来自 湖北武汉
余下的图
y:


z:


R:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复 不支持

使用道具 举报

 楼主| 发表于 2009-10-24 23:02:57 | 显示全部楼层 来自 重庆沙坪坝区
:'(:'(:'(:'(:'(
太感谢你们的热情帮助了,感激
回复 不支持

使用道具 举报

 楼主| 发表于 2009-10-24 23:10:12 | 显示全部楼层 来自 重庆沙坪坝区
本帖最后由 laihai718 于 2009-10-24 23:27 编辑

我都不好意思再提问了
rocwoods 版主,我运行是提示arrayfun出错,然后我help了下,说没有这个函数的m文件,我用的7.0版本的,是不是我的版本太低了?

To:wanglu
fai值是随着t值变化的,这个我试验过

看您贴的这个X的图来说,感觉是对的,但为什么您算fai值没变呢(发帖次数到了,不让发帖子了,我可没有灌水之意哦:handshake  )
回复 不支持

使用道具 举报

 楼主| 发表于 2009-10-24 23:12:01 | 显示全部楼层 来自 重庆沙坪坝区
本帖最后由 laihai718 于 2009-10-24 23:13 编辑

其实我这个方程是个成型刀具的方程,解出来后R是刀具的半径,x,y,z描绘出来的是刀具的廓形。因为我是第一次设计刀具,这样的方程我确实少见,更别提解他了,现在是没办法,必须解出来。
回复 不支持

使用道具 举报

发表于 2009-10-24 23:19:51 | 显示全部楼层 来自 山东淄博
forcal代码:


  1. !const["pi",acos(0)*2,1];
  2. !const["r",pi/2-0.6685,1];
  3. f(fai::t)=fai-{1/16*(-2932650*cos(1/2*t-fai-r)*pi^2+2932650*cos(-fai-r+3/2*t)*pi^2+1857345*cos(-fai-r+t)*pi^2-1857345*cos(2*t-fai-r)*pi^2-3870720*fai*sin(-fai-r+t)+3677184*fai*sin(-fai-r+3/2*t))/pi^2};
  4. _x(_t:fai:t)= t=_t,fai=1,XSLSF::pqrt(HFor("f"),&fai,1e-6),105*cos(t-fai-r)-133/2*cos(3/2*t -fai-r); //黑色
  5. _y(_t:fai:t)= t=_t,fai=1,XSLSF::pqrt(HFor("f"),&fai,1e-6),105*sin(t-fai-r)-133/2*sin(3/2*t -fai-r); //红色
  6. _z(_t:fai:t)= t=_t,fai=1,XSLSF::pqrt(HFor("f"),&fai,1e-6),96*fai/(2*pi); //蓝色
  7. _R(_t:fai:t)= t=_t,fai=1,XSLSF::pqrt(HFor("f"),&fai,1e-6),((105*sin(-fai-r+t)-133/2*sin(-fai-r+3/2*t))^2+2304*fai^2/pi^2)^(1/2); //绿色
  8. _fai(_t:fai,i:t)=
  9. {
  10.   t=_t,fai=1,
  11.   i=XSLSF::pqrt(HFor("f"),&fai,1e-6),
  12.   if{i==10,printff{"已迭代{1,i}10次,但未满足精度要求,返回值仅作参考。fai={2,r}\r\n",i,fai}},
  13.   fai
  14. };
复制代码


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复 不支持

使用道具 举报

 楼主| 发表于 2009-10-24 23:21:10 | 显示全部楼层 来自 重庆沙坪坝区
forcal代码:


!const["pi",acos(0)*2,1];

wanglu 发表于 2009-10-24 23:19


太感谢您了
回复 不支持

使用道具 举报

发表于 2009-10-24 23:23:37 | 显示全部楼层 来自 山东淄博
x的图:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复 不支持

使用道具 举报

发表于 2009-10-24 23:25:20 | 显示全部楼层 来自 山东淄博
y的图:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复 不支持

使用道具 举报

发表于 2009-10-24 23:26:55 | 显示全部楼层 来自 湖北武汉
余下fai:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复 不支持

使用道具 举报

发表于 2009-10-24 23:27:04 | 显示全部楼层 来自 山东淄博
z的图:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复 不支持

使用道具 举报

发表于 2009-10-24 23:28:52 | 显示全部楼层 来自 山东淄博
R的图:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复 不支持

使用道具 举报

发表于 2009-10-24 23:31:49 | 显示全部楼层 来自 山东淄博
fai的图:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复 不支持

使用道具 举报

发表于 2009-10-24 23:46:17 | 显示全部楼层 来自 北京
本帖最后由 rocwoods 于 2009-10-24 23:54 编辑
我都不好意思再提问了
rocwoods 版主,我运行是提示arrayfun出错,然后我help了下,说没有这个函数的m文件,我用的7.0版本的,是不是我的版本太低了?

To:wanglu
fai值是随着t值变化的,这个我试验过

看您 ...
laihai718 发表于 2009-10-24 23:10

你的版本比较低,arrayfun应该是7.1以后才有的。不过你可以用下面代码:就是稍微麻烦些,解出来的FAI值我都代入f验证了。如果你的方程没错的话结果图如下:

  1. r = pi/2-0.6685;
  2. f=@(t)@(fai)1/16*(-2932650*cos(1/2*t-fai-r)*pi^2+2932650*cos(-fai-r+3/2*t)*pi^2+1857345*cos(-fai-r+t)*pi^2-1857345*cos(2*t-fai-r)*pi^2-3870720*fai*sin(-fai-r+t)+3677184*fai*sin(-fai-r+3/2*t))/pi^2;
  3. x=@(t,fai) 105*cos(t-fai-r)-133/2*cos(3/2*t -fai-r);
  4. y=@(t,fai) 105*sin(t-fai-r)-133/2*sin(3/2*t -fai-r);
  5. z=@(fai) 96*fai/(2*pi);
  6. R=@(fai,t)((105*sin(-fai-r+t)-133/2*sin(-fai-r+3/2*t)).^2+2304*fai.^2/pi^2).^(1/2);
  7. FAI = zeros(size(0.6352:0.001:1.4259));
  8. tt = 0.6352:0.001:1.4259;
  9. for k = 1:length(tt)
  10. FAI(k) =  fzero(f(tt(k)),tt(k)+0.1);
  11. end
  12. X = x(0.6352:0.001:1.4259,FAI);
  13. Y = y(0.6352:0.001:1.4259,FAI);
  14. Z = z(FAI);
  15. RR = R(0.6352:0.001:1.4259,FAI);
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×

评分

1

查看全部评分

回复 不支持

使用道具 举报

发表于 2009-10-25 01:54:42 | 显示全部楼层 来自 黑龙江哈尔滨
本帖最后由 TBE_Legend 于 2009-10-25 02:38 编辑
你的版本比较低,arrayfun应该是7.1以后才有的。不过你可以用下面代码:就是稍微麻烦些,解出来的FAI值我都代入f验证了。如果你的方程没错的话结果图如下:
r = pi/2-0.6685;
f=@(t)@(fai)1/16*(-2932650*cos(1/ ...
rocwoods 发表于 2009-10-24 23:46


求解时间和结果

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复 不支持

使用道具 举报

发表于 2009-10-25 06:37:12 | 显示全部楼层 来自 山东淄博
进一步验证求解结果,共绘制6条线(如图中所标注),基本代码:


  1. !const["pi",acos(0)*2,1];
  2. !const["r",pi/2-0.6685,1];
  3. f(fai::t)=1/16*(-2932650*cos(1/2*t-fai-r)*pi^2+2932650*cos(-fai-r+3/2*t)*pi^2+1857345*cos(-fai-r+t)*pi^2-1857345*cos(2*t-fai-r)*pi^2-3870720*fai*sin(-fai-r+t)+3677184*fai*sin(-fai-r+3/2*t))/pi^2;
  4. _x(_t:fai:t)= t=_t,fai=100,XSLSF::pqrt(HFor("f"),&fai,1e-6),105*cos(t-fai-r)-133/2*cos(3/2*t -fai-r); //黑色
  5. _y(_t:fai:t)= t=_t,fai=100,XSLSF::pqrt(HFor("f"),&fai,1e-6),105*sin(t-fai-r)-133/2*sin(3/2*t -fai-r); //红色
  6. _z(_t:fai:t)= t=_t,fai=100,XSLSF::pqrt(HFor("f"),&fai,1e-6),96*fai/(2*pi); //蓝色
  7. _R(_t:fai:t)= t=_t,fai=100,XSLSF::pqrt(HFor("f"),&fai,1e-6),((105*sin(-fai-r+t)-133/2*sin(-fai-r+3/2*t))^2+2304*fai^2/pi^2)^(1/2); //绿色
  8. _fai(_t:fai,i:t)=
  9. {
  10.   t=_t,fai=100,
  11.   i=XSLSF::pqrt(HFor("f"),&fai,1e-6),
  12.   if{i==10,printff{"已迭代{1,i}10次,但未满足精度要求,返回值仅作参考。fai={2,r}\r\n",i,fai}},
  13.   fai
  14. };
  15. 误差(fai,t)=1/16*(-2932650*cos(1/2*t-fai-r)*pi^2+2932650*cos(-fai-r+3/2*t)*pi^2+1857345*cos(-fai-r+t)*pi^2-1857345*cos(2*t-fai-r)*pi^2-3870720*fai*sin(-fai-r+t)+3677184*fai*sin(-fai-r+3/2*t))/pi^2;
  16. _误差(_t:fai,x:t)=
  17. {
  18.   t=_t,fai=100,
  19.   XSLSF::pqrt(HFor("f"),&fai,1e-6),
  20.   x=误差(fai,t),
  21.   if{abs(x)>1e-6,printff{"t={1,r}时,fai={2,r},误差={3,r}\r\n",t,fai,x}},
  22.   x
  23. };
复制代码


完整的FcCurve文件如下:


  1. FCC文件
  2. 缺省设置:
  3. (XNote=请修改为X轴单位) (YNote=请修改为Y轴单位)
  4. (AutoY=1) (XMin=0) (XMax=1) (YMin=0) (YMax=1)
  5. (BorderPixels=60) (MultiplyX=1) (MultiplyY=1) (Grid=0) (DivideXY=10) (XYNumWidth=3) (DataMax=2)
  6. (ForMax=50) (LoadDll=)
  7. [CODE]
  8. // 通用设置:
  9. // (XNote=x:黑色;y:红色;z蓝色;R:绿色;fai:浅蓝色;误差:棕色) (YNote=请修改为Y轴单位)
  10. // (AutoY=1) (XMin=0.6352) (XMax=1.4259) (YMin=-20) (YMax=200)
  11. // (BorderPixels=80) (MultiplyX=1) (MultiplyY=1) (Grid=0) (DivideXY=10)  (XYNumWidth=3) (DataMax=2)
  12. // (ForMax=50) (LoadDll="dll\FcData32W" "dll\XSLSF32W" ) (DotColor=0) (DotSize=10)
  13. /*[LINE]
  14. (_x=0,1000,0,0,0)
  15. (_y=0,1000,0,0,8388863)
  16. (_z=0,1000,0,0,16711680)
  17. (_R=0,1000,0,0,4259584)
  18. (_fai=0,1000,0,0,16776960)
  19. (_误差=1,1000,0,0,128)
  20. [LEND]*/
  21. // [BODY]
  22. !const["pi",acos(0)*2,1];
  23. !const["r",pi/2-0.6685,1];
  24. f(fai::t)=1/16*(-2932650*cos(1/2*t-fai-r)*pi^2+2932650*cos(-fai-r+3/2*t)*pi^2+1857345*cos(-fai-r+t)*pi^2-1857345*cos(2*t-fai-r)*pi^2-3870720*fai*sin(-fai-r+t)+3677184*fai*sin(-fai-r+3/2*t))/pi^2;
  25. _x(_t:fai:t)= t=_t,fai=100,XSLSF::pqrt(HFor("f"),&fai,1e-6),105*cos(t-fai-r)-133/2*cos(3/2*t -fai-r); //黑色
  26. _y(_t:fai:t)= t=_t,fai=100,XSLSF::pqrt(HFor("f"),&fai,1e-6),105*sin(t-fai-r)-133/2*sin(3/2*t -fai-r); //红色
  27. _z(_t:fai:t)= t=_t,fai=100,XSLSF::pqrt(HFor("f"),&fai,1e-6),96*fai/(2*pi); //蓝色
  28. _R(_t:fai:t)= t=_t,fai=100,XSLSF::pqrt(HFor("f"),&fai,1e-6),((105*sin(-fai-r+t)-133/2*sin(-fai-r+3/2*t))^2+2304*fai^2/pi^2)^(1/2); //绿色
  29. _fai(_t:fai,i:t)=
  30. {
  31.   t=_t,fai=100,
  32.   i=XSLSF::pqrt(HFor("f"),&fai,1e-6),
  33.   if{i==10,printff{"已迭代{1,i}10次,但未满足精度要求,返回值仅作参考。fai={2,r}\r\n",i,fai}},
  34.   fai
  35. };
  36. 误差(fai,t)=1/16*(-2932650*cos(1/2*t-fai-r)*pi^2+2932650*cos(-fai-r+3/2*t)*pi^2+1857345*cos(-fai-r+t)*pi^2-1857345*cos(2*t-fai-r)*pi^2-3870720*fai*sin(-fai-r+t)+3677184*fai*sin(-fai-r+3/2*t))/pi^2;
  37. _误差(_t:fai,x:t)=
  38. {
  39.   t=_t,fai=100,
  40.   XSLSF::pqrt(HFor("f"),&fai,1e-6),
  41.   x=误差(fai,t),
  42.   if{abs(x)>1e-6,printff{"t={1,r}时,fai={2,r},误差={3,r}\r\n",t,fai,x}},
  43.   x
  44. };
复制代码


以上代码保存为任意文本文件,用FcCurve打开即可。
FcCurve下载:http://xoomer.virgilio.it/forcal/xiazai/forcal9/fccurve.rar

误差函数“误差(fai,t)”在-1.8e-8~1.8e-8之间,如图:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复 不支持

使用道具 举报

发表于 2009-10-25 06:39:22 | 显示全部楼层 来自 山东淄博
fai在99.1~99.9之间,如图:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-9-28 09:29 , Processed in 0.056851 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表