| 查看: 710 | 回复: 11 | |||
| 当前主题已经存档。 | |||
| 当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖 | |||
ltqly木虫 (小有名气)
|
[交流]
【求助】方程求解
|
||
|
Sample Text tan(x*d/sqrt(a))=x/sqrt(a)*(H1+H2)/(x*x-H1*H2) 求解这个方程的解x, a=5.1e-6 H1=60.0/30.3 H2=30.0/30.3 本人已经初步试着,用牛顿法解过,求出的x*d/sqrt(a)接近于k*pi,pi=3.1415926,x有无穷解。 谢谢 |
» 猜你喜欢
球磨粉体时遇到了大的问题,请指教!
已经有15人回复
过年走亲戚时感受到了所开私家车的鄙视链
已经有5人回复
情人节自我反思:在爱情中有过遗憾吗?
已经有5人回复
江汉大学解明教授课题组招博士研究生/博士后
已经有3人回复

★ ★ ★ ★ ★
ltqly(金币+3,VIP+0):不错 4-12 22:54
ltqly(金币+2,VIP+0):谢谢 4-13 21:58
ltqly(金币+3,VIP+0):不错 4-12 22:54
ltqly(金币+2,VIP+0):谢谢 4-13 21:58
|
版主不用再给我金币了,这帖子我都得了额外的9个金币了,不好意思了,呵呵 右边的函数在-T/2到T/2有两个无穷间断点,分成三个区间,所以有三个解,其它的,在每个区间都有解,我用MATLAB二分法做的如下: function x=solvefun(A,B,tol) a=5.1e-6; d=0.006; H1=60.0/30.3; H2=30.0/30.3; T=pi./d.*sqrt(a); k=[ceil(A./T+sign(A)):ceil(B./T+sign(B))]; k=k.*T+sign(k)*T/2; k=[k -sqrt(H1*H2) sqrt(H1*H2) ]; k=sort(k); k=k(k>=A & k<=B & k~=0); k=[A k B]; n=length(k); tol=tol/10; x=[]; t=0; for i=1:n-1 xmin=k(i)+1e-8+tol; xmax=k(i+1)-1e-8-tol; xcur=(xmin+xmax)/2; if sign(fun(xmin))*sign(fun(xmax))>0 continue; end while xmax-xmin>tol if sign(fun(xmin))*sign(fun(xcur))>0 xmin=xcur; else xmax=xcur; end xcur=(xmin+xmax)/2; end t=t+1; x(t)=xcur; end x=x'; function y=fun(x) a=5.1e-6; d=0.006; H1=60.0/30.3; H2=30.0/30.3; y=tan(x.*d./sqrt(a))-x./sqrt(a).*(H1+H2)./(x.*x-H1*H2); >> x=solvefun(-20,20,1e-10) x = -19.5049 -18.3228 -17.1407 -15.9586 -14.7765 -13.5944 -12.4122 -11.2301 -10.0480 -8.8659 -7.6838 -6.5017 -5.3196 -4.1375 -2.9555 -1.7735 -0.0000 1.7735 2.9555 4.1375 5.3196 6.5017 7.6838 8.8659 10.0480 11.2301 12.4122 13.5944 14.7765 15.9586 17.1407 18.3228 19.5049 >> fun(x) ans = 1.0e-004 * 0.0001 0.0003 -0.0003 -0.0003 -0.0007 -0.0000 0.0010 -0.0015 0.0016 0.0012 -0.0011 -0.0035 -0.0073 -0.0060 0.0160 -0.1221 -0.0000 0.1221 -0.0160 0.0060 0.0073 0.0035 0.0011 -0.0012 -0.0016 0.0015 -0.0010 0.0000 0.0007 0.0003 0.0003 -0.0003 -0.0001 >> 由于曲线太陡,特别是接近0的区间,所以需要很高的精度才能保证函数值接近0。 [ Last edited by fspdlh on 2009-4-11 at 16:46 ] |
11楼2009-04-10 23:18:32
★ ★ ★ ★ ★ ★
sunxiao(金币+3,VIP+0):谢谢参与,欢迎常来仿真编程版 4-8 23:39
ltqly(金币+3,VIP+0):谢谢 4-9 12:07
sunxiao(金币+3,VIP+0):谢谢参与,欢迎常来仿真编程版 4-8 23:39
ltqly(金币+3,VIP+0):谢谢 4-9 12:07
|
d是多少啊,我用MATLAB搞了一下,设d=a算的,把方程的左边减右边设成一个函数,画图 function y=fun(x) a=5.1e-6; H1=60.0/30.3; H2=30.0/30.3; y=tan(x.*a./sqrt(a))-x./sqrt(a).*(H1+H2)./(x.*x-H1.*H2); 可以看出,原方程只有零解,正负1.4左右有两个无穷间断点,x有无穷解 [ Last edited by fspdlh on 2009-4-8 at 23:17 ] |
2楼2009-04-08 22:55:37
ltqly
木虫 (小有名气)
- 应助: 0 (幼儿园)
- 金币: 2863.3
- 散金: 716
- 帖子: 177
- 在线: 250.4小时
- 虫号: 686537
- 注册: 2009-01-02
- 性别: GG
- 专业: 零件成形制造

4楼2009-04-09 12:13:25
★ ★ ★ ★ ★
ltqly(金币+3,VIP+0):谢谢! 4-9 17:52
sunxiao(金币+2,VIP+0):谢谢参与,欢迎常来仿真编程版 4-9 23:10
ltqly(金币+3,VIP+0):谢谢! 4-9 17:52
sunxiao(金币+2,VIP+0):谢谢参与,欢迎常来仿真编程版 4-9 23:10
|
看了一下,确实应该是在每个区间都有解,上由于计算精度的原因画图得不到想要的曲线。 由于函数存在无穷间断点,牛顿法应该是不行的,可以仿照这个帖子中的方法,对每个有解区间分别用二分法来做。 帖子地址:http://muchong.com/bbs/viewthread.php?tid=1251344 [ Last edited by fspdlh on 2009-4-9 at 13:02 ] |
5楼2009-04-09 12:23:09













回复此楼