Matlab用牛顿迭代法求角度的代码。
现已知R=150γ=b/Rb=60δ=20求θ值。我之前是用solve函数求解的,可是发现获得的θ值是带虚数的,而且只有一个解。代码如下:R=150b=60r=R/ba=...
现已知
R=150
γ=b/R
b=60
δ=20
求θ值。
我之前是用solve函数求解的,可是发现获得的θ值是带虚数的,而且只有一个解。
代码如下:
R=150b=60r=R/ba=20syms thetatheta1=solve(R*sqrt(2-2*cos(theta)+theta^2-(cos(theta-r)-cos(r)-cos(theta)+theta*r+1)^2/(2-2*cos(r)+r^2))==a)
我需要的角度值是要正数,且不带虚数的。求Matlab牛顿迭代法的代码。谢谢大神。
下面是可供验算的数值。
R=56
γ=b/R
b=73
δ=7.97
θ=16.87度
上面我的代码有个地方输错了。
应该是
R=150
b=60
r=b/R
a=20 展开
R=150
γ=b/R
b=60
δ=20
求θ值。
我之前是用solve函数求解的,可是发现获得的θ值是带虚数的,而且只有一个解。
代码如下:
R=150b=60r=R/ba=20syms thetatheta1=solve(R*sqrt(2-2*cos(theta)+theta^2-(cos(theta-r)-cos(r)-cos(theta)+theta*r+1)^2/(2-2*cos(r)+r^2))==a)
我需要的角度值是要正数,且不带虚数的。求Matlab牛顿迭代法的代码。谢谢大神。
下面是可供验算的数值。
R=56
γ=b/R
b=73
δ=7.97
θ=16.87度
上面我的代码有个地方输错了。
应该是
R=150
b=60
r=b/R
a=20 展开
展开全部
-20.5558285905308换成弧度是-0.358766883260444
选不同初值得到另外一个结果
0.758766883260445换成弧度 43.474140786708
两边同时平方相减得到fx
然后求导得到dfx
利用x = x - fx/dfx;进行迭代
选不同初值得到另外一个结果
0.758766883260445换成弧度 43.474140786708
两边同时平方相减得到fx
然后求导得到dfx
利用x = x - fx/dfx;进行迭代
更多追问追答
追问
你能不能够给我算出θ的完整代码?
追答
$b = 60;
$R = 150;
$r = $b/$R;
$a = 20;
$x = 1;
sub f{
$R**2*(2-2*cos($x)+$x**2 -
(cos($x-$r) -cos($r)-cos($x)+$r*$x+1)**2/(2-2*cos($r)+$r**2)
) - $a**2;
}
sub df
{
$R**2*(2*sin($x) + 2*$x
-(-sin($x-$r) +sin($x) + $r)*2*(cos($x-$r) -cos($r)-cos($x)+$r*$x+1)/(2-2*cos($r)+$r**2)
);
}
for (1..1000)
{
$x = $x - f()/df();
print f(), " $x ", $x*180/3.1415926,"\n";
}
别的语言写的仅供参考
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询