PDA

查看完整版本 : [求助]matlab的迭代问题


20040110430
2008-09-26, 22:52
今天老师布置一个试算的作业,我想通过matlab来实现这种迭代:

function shisuansuoli(V1,H1)
L=100;h=300;q=50000;S=500;EA=10^11;n=0; W=1;% W 为x,y的迭代精度
H=-H1;V=S*q-V1;T1=((V1)^2+H^2)^0.5;T=(V^2+H^2)^0.5;
L1=-H*(S/EA+1/q*log2((V+T)/(T1-V1)));h1=1/(2*EA*q)*(V^2-(V1)^2)+(T-T1)/q;
A1=-(S/EA+1/q*log2((V+T)/(T1-V1)))-(H1)^2/q*(1/(T*(T+V))-1/(T1*(T1+V1)));
A2=H1/q*(1/T-1/T1); B1=A2; B2=-S/EA-(V/T-V1/T1)/q; C=A1*B2-A2*B1;
Ex=L1-L;Ey=h1-h;
while (1)
V2=(Ex*B1-Ey*A1)/C+V1; H2=(Ey*A2-Ex*B2)/C+H1;
if abs(Ex)>W && abs(Ey)>W %若不满足迭代终止条件则继续迭代
V1=V2;H1=H2;n=n+1;
continue;
else
fprintf('迭代次数为:%f\n',n);
fprintf('V1的迭代值为:%f\n',V2);fprintf('H1的迭代值为:%f\n',H2)
break; %满足后输出结果并退出
end
end

然后在Command Window中键入:
clear;V1=input('Please input V1:');H1=input('Please input H1:');shisuansuoli(V1,H1)
回车输入H1,V1的值12500000,1670000之后回车
matlab就一直处于busy状态 这是怎么回事啊?:cool: :cool:

请教各路高手~~

20040110430
2008-09-26, 23:00
3个小时之后也还是BUSY状态 是不是进入了死循环了哦

请教如何解决 谢谢留言

meteora1005
2008-09-26, 23:09
你能不能具体说一下你作业的内容,我帮你看,快点

20040110430
2008-09-27, 10:07
这是桥梁工程中求悬索桥拉索内力的作业
在已知 L、h、q、EA、S的情况下,通过迭代求拉端力H1、V1~
中间那些公式我会编,应该不会错的。
麻烦你帮我看下迭代的那部分吧~谢谢

20040110430
2008-09-27, 10:08
单位制什么的都统一成国际制的m、N了

20040110430
2008-09-27, 10:26
可以加你为QQ好友吗?
我是matlab新手
有时会有很多问题
想找你做技术顾问 呵呵

20040110430
2008-09-27, 10:48
我的QQ494586792 谢谢

meteora1005
2008-09-27, 22:20
错误在这一句:if abs(Ex)>W && abs(Ey)>W
在第一次进入while时Ex =161.2233,Ey =-300,然后进入if后应该对EX和Ey作修改,但你没有,所以到这句一直执行if后的命令然后continue,所以才会出不了循环。你想办法每次循环后对Ex和Ey作一下修改吧。
我不常上QQ,但我会常上论坛的,有什么问题发帖子吧,呵呵

20040110430
2008-10-06, 21:49
谢谢 程序已经调试成功了~~~:smile: