24小时热门版块排行榜    

查看: 910  |  回复: 3

yanglqsky

金虫 (小有名气)

[求助] 牛顿迭代法求解中的循环次数控制问题 已有1人参与

本人想用牛顿迭代法求解一个关于t(i)的函数的解。
在此函数中,alpha(i)、x(i)、y(i)均为参数,在赋初值时已经给出,如下所列:
x = [-14.5544,-14.4189,-14.0954,-13.5936,-12.9904,-12.2873,-11.4907,-10.6066,-9.6418,-8.6036,-7.5,-6.3393,-5.1303,-3.8823,-2.6047,-1.5679,-0.5235,0,0.5235,1.5679,2.6047,3.8823,5.1303,6.3393,7.5,8.6036,9.6418,10.6066,11.4907,12.2873,12.9904,13.5946,14.0954,14.4189,14.5544];
y = [26.3712,25.8697,24.8697,23.6607,22.5,21.3964,20.3582,19.3934,18.5093,17.7127,17.0096,16.4052,15.9046,15.5111,15.2279,15.0822,15.0091,15,15.0091,15.0822,15.2279,15.5111,15.9046,16.4052,17.0096,17.7127,18.5093,19.3934,20.3582,21.3964,22.5,23.6607,24.8697,25.8697,26.3712];
alpha = [0.7854,-1.5168,-1.2640,-1.2651,-1.2036,-1.1484,-1.0885,-1.0280,-0.9652,-0.9007,-0.8308,-0.7661,-0.6653,-0.6790,-0.3680,-0.7005,-0.1166,-0.2669,-0.7789,-0.0167,-0.2584,0.0712,0.1374,0.2778,0.4046,0.5339,0.6592,0.7790,0.8929,0.9989,1.0954,1.2104,1.2331,-1.5219,0.7854];
对应于不同的 i 值,函数有不同的解t(i)。牛顿迭代法的核心公式如下,
for i = 1:n
    f(i) = 2700*t(i)*cos(alpha(i) - t(i)) - 2160*sin(alpha(i) - t(i)) + (102 - y(i)*cos(t(i)) + x(i)*sin(t(i)))*(x(i)*cos(alpha(i)) + y(i)*sin(alpha(i)));
    df(i) = 4860*cos(alpha(i) - t(i)) + (x(i)*cos(alpha(i)) + y(i)*sin(alpha(i)))*(x(i)*cos(t(i)) + y(i)*sin(t(i))) + 2700*t(i)*sin(alpha(i) - t(i));
    t(i) = t(i) - f(i)/df(i);
end
对应于每一个 i 值,我想让此循环语句执行多次(比如100次),但是不知道该如何控制。
还求大神伸出援手,解下兄弟心中郁结。
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

有韧性,很倔强,但是脑子反应稍慢,一直在努力励志,希望能找到一个让自己能坚持拼下去的道。
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

pippi6

铁杆木虫 (著名写手)

工程和科学数值计算咨询

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
yanglqsky: 金币+10, 有帮助 2014-12-26 14:53:58
yanglqsky: 金币+5 2014-12-31 10:42:31
tt=0
for i = 1:n
a=alpha(i)
yy= y(i)
xx= x(i)
for j=1,20
f= 2700*tt*cos(a -tt) - 2160*sin(a- tt) + (102 - yy*cos(tt) + xx*sin(tt))*(xx*cos(a + yy*sin(a));
  df= 4860*cos(a- tt) + (xx*cos(a) + yy*sin(a))*(xx*cos(tt) + yy*sin(tt)) + 2700*tt*sin(a - tt);
    tt = tt - f/df;
end
t(i)=tt
end
2楼2014-12-26 04:54:37
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yanglqsky

金虫 (小有名气)

引用回帖:
2楼: Originally posted by pippi6 at 2014-12-26 04:54:37
tt=0
for i = 1:n
a=alpha(i)
yy= y(i)
xx= x(i)
for j=1,20
f= 2700*tt*cos(a -tt) - 2160*sin(a- tt) + (102 - yy*cos(tt) + xx*sin(tt))*(xx*cos(a + yy*sin(a));
  df= 4860*cos(a- tt) + (xx*cos(a) ...

谢谢您的回答!我重新计算了一下,结果还是不理想,不知道是不是我之前的公式错了,得出的角度相差比较大,不合适。谢谢您!
有韧性,很倔强,但是脑子反应稍慢,一直在努力励志,希望能找到一个让自己能坚持拼下去的道。
3楼2014-12-26 14:54:00
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

pippi6

铁杆木虫 (著名写手)

工程和科学数值计算咨询

引用回帖:
3楼: Originally posted by yanglqsky at 2014-12-26 14:54:00
谢谢您的回答!我重新计算了一下,结果还是不理想,不知道是不是我之前的公式错了,得出的角度相差比较大,不合适。谢谢您!...

是不收敛还是解出来的东西不是你期待的?牛顿法如失效主要2个原因:迭代初值给的不好或导数求的不对。说说哪里不对

[ 发自小木虫客户端 ]
4楼2014-12-31 11:41:28
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 yanglqsky 的主题更新
信息提示
请填处理意见