这货编的一个MATLAB程序一直死循环T function [xp,yp,xm,ym]=euler4(h)Vp=135;Vm=450;xp(1)=0; yp(1)=120;xm(1)=0;ym(1)=0;d(1)=120;T(1)=0;k=1; while d>0.1k=k+1; xp(k)=xp(k-1)+Vp*(yp(k-1)-ym(k-1))*h/d(k-1);yp(k)=yp(k-1)-Vp*(xp(k-1)-xm(k-1))*h/d(

来源:学生作业帮助网 编辑:作业帮 时间:2024/11/08 15:19:22

这货编的一个MATLAB程序一直死循环T function [xp,yp,xm,ym]=euler4(h)Vp=135;Vm=450;xp(1)=0; yp(1)=120;xm(1)=0;ym(1)=0;d(1)=120;T(1)=0;k=1; while d>0.1k=k+1; xp(k)=xp(k-1)+Vp*(yp(k-1)-ym(k-1))*h/d(k-1);yp(k)=yp(k-1)-Vp*(xp(k-1)-xm(k-1))*h/d(
这货编的一个MATLAB程序一直死循环T
function [xp,yp,xm,ym]=euler4(h)
Vp=135;Vm=450;
xp(1)=0;
yp(1)=120;
xm(1)=0;
ym(1)=0;
d(1)=120;
T(1)=0;
k=1;
while d>0.1
k=k+1;
xp(k)=xp(k-1)+Vp*(yp(k-1)-ym(k-1))*h/d(k-1);
yp(k)=yp(k-1)-Vp*(xp(k-1)-xm(k-1))*h/d(k-1);
xm(k)=xm(k-1)+Vm*(xp(k-1)-xm(k-1))*h/d(k-1);
ym(k)=ym(k-1)+Vm*(yp(k-1)-ym(k-1))*h/d(k-1);
d(k)=sqrt((xp(k)-xm(k))^2+(yp(k)-ym(k))^2);
T(k)=T(k-1)+h;
end;
end

这货编的一个MATLAB程序一直死循环T function [xp,yp,xm,ym]=euler4(h)Vp=135;Vm=450;xp(1)=0; yp(1)=120;xm(1)=0;ym(1)=0;d(1)=120;T(1)=0;k=1; while d>0.1k=k+1; xp(k)=xp(k-1)+Vp*(yp(k-1)-ym(k-1))*h/d(k-1);yp(k)=yp(k-1)-Vp*(xp(k-1)-xm(k-1))*h/d(
有可能是你的h取得太大,导致,上一步未相遇,下一步已经走远
未能满足小于一定距离
或许可以让判断条件定为距离差是否在变小
如果在变小说明还在靠近
一旦距离差变大,说明这一步已经让两者又重新远离
这时候循环就该结束了
那样就不会死循还