编程模拟遇到的一个问题
编程模拟碰到的一个问题,我对两个程序进行了对比,程序一是没有问题的:程序一:
clear;
x=2.5;y=25;a=0.1;b=0.2;i=1;
while x>0
z=a*y+b*x;
x=x-a*z;
y=b*(y-z+y;
X(i)=x;
Y(i)=y;
i=i+1;
end
plot(X,Y)
但是程序二却不知道该怎么解决,该程序中第一个等式必须要先求出z,下面的运算才能进行下去,我尝试过用solve求z,但是不行,请求达人给予指点,可以联系我邮箱robinforever@zju.edu.cn真是感激不尽!
程序二:
clear;
x=2.5;y=25;a=0.1;b=0.2;i=1;
while x>0
z=a*y+b*x+log(z);
x=x-a*z;
y=b*(y-z+y;
X(i)=x;
Y(i)=y;
i=i+1;
end
回复 楼主 的帖子
y=b*(y-z+y;你确定你能运行吗,第一个 我输入失误,括号少了半边,应该是y=b*(y-z)+y 先给个z初值
然后迭代呢 你的程序一貌似是死循环啊,还是你没有把变量给全 程序一应该不是死循环啊,我自己也运行过,可以的;
程序二我笔算了一下应该也不是死循环,但是我不知道怎么把z求出来,相当于 z=a*y+b*x+log(z) 要循环求解了,用solve不行的,楼上说的用迭代我也试过了,没有成功,很烦啊,弄了很久了,貌似一个很简单的程序,就是不知道该怎么办…… 求达人详解迷津,不胜感激啊! 我已经找到程序二的解决方法了,我一个初学者为这个问题真是破费周折,最后一个朋友帮我解决了,现贴出来以饷和我一样的初学者,同时感谢对我的帖子表示关心的楼友!
clear;
x=2.5;y=25;a=0.1;b=0.2;i=1;
while x>0
syms z
z=a*y+b*x+log(z)-z;
z=solve(z);
z=eval(z);
x=x-a*z;
y=b*(y-z)+y;
X(i)=x;
Y(i)=y;
i=i+1;
end
plot(X,Y) 原帖由 robinforever 于 2008-5-27 19:02 发表 http://www.chinavib.com/forum/images/common/back.gif
我已经找到程序二的解决方法了,我一个初学者为这个问题真是破费周折,最后一个朋友帮我解决了,现贴出来以饷和我一样的初学者,同时感谢对我的帖子表示关心的楼友!
clear;
x=2.5;y=25;a=0.1;b=0.2;i=1;
while x ...
请问您运行7楼的程序时,有没有报错? 抱歉,7楼程序y的赋值我弄错了,y=25导致程序没有解析解所以报错;程序本身没有问题
比如将赋值改为y=3,程序是可以运行的。
页:
[1]