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
展开
 我来答
百度网友d580670
2014-02-07 · TA获得超过1983个赞
知道大有可为答主
回答量:2054
采纳率:82%
帮助的人:694万
展开全部
-20.5558285905308换成弧度是-0.358766883260444
选不同初值得到另外一个结果

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";
}
别的语言写的仅供参考
zhouw06
2014-02-07 · TA获得超过462个赞
知道小有建树答主
回答量:231
采纳率:0%
帮助的人:272万
展开全部
这是个什么公式怎么会这么复杂,两个向量叉积?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式