x1=0;
xs=-0.2;
ap1=20;
aps=28;
z1=20;
zs=22;
invaps = tan((aps*pi)/180)-((aps*pi)/180);
invap1 = tan((ap1*pi)/180)-((ap1*pi)/180);
syms apw;
solve(2*(x1*tan(ap1*pi/180)-xs*tan(aps*pi/180))+(z1*invap1-zs*invaps)-(z1-zs)*(tan(apw*pi/180)-(apw*pi/180)))
qq=ans
solve是解渐开线方程式,得到的答案只有-256.多度
但从网上找来的渐开线计算器算出来的答案应为45.多度
请问要怎麼设定solve才能求出不同的解?
qingningleyun大大,请问您是怎麼解的呀?
我解出来依旧只有
ans =
matrix([[-256.80214247781401559244973137578]])
得不到45.18230125这个答案呀
麻烦指点一下!!!
上述代码直接执行的结果,换个 Matlab 试试,是否部分文件有问题。
追问用室友的的确解出来了
我的是r2010a 64bit版的
室友的是r2007b 32bit版的
会是因为作业系统的问题吗?
%从上面画图看出,apw 应该有无数个解,必须限定 apw 范围才有唯一解,
%各版本解方程的算法可能存在差异
%我用 R2012a 同样解得 -256.80214247781401559244973137578
我本来也是想找如何限定范围但依旧没收获呀
Matlab应该是牛顿跌代法去解solve
要如何限定apw的范围呢?
这问题搞了我快四周了,在不解出来恐怕赶不上时间了
麻烦大大了
>> x1=0;xs=-0.2;ap1=20;aps=28;z1=20;zs=22;
invaps = tan((aps*pi)/180)-((aps*pi)/180);
invap1 = tan((ap1*pi)/180)-((ap1*pi)/180);
fu=@(apw)2*(x1*tan(ap1*pi/180)-xs*tan(aps*pi/180))+(z1*invap1-zs*invaps)-(z1-zs)*(tan(apw*pi/180)-(apw*pi/180));
qq1=fzero(fu,-200) %用 fzero 的第二个参数限定方程解的范围
qq2=fzero(fu,0)
qq1 =
-256.8021
qq2 =
45.1823