wuygoon 发表于 2007-8-12 00:45

为什么程序运行和书上的不一样?

请教一下各位高手,我照着书本键入了以下的程序,但是得到的结果却于书上的差距很大,请各位帮忙看看,谢谢了!!!
function dx=jisi(t,x)
a=20;b=40;c=15;
s=sqrt((c-x(1))^2+(a*t-x(2)^2));
dx=;


ts=0:0.1:2;
x0=;
opt=odeset('reltol',1e-2,'abstol',1e-3);
=ode45(@jisi,ts,x0,opt);
,
plot(t,x),grid,
gtext('x(t)'),gtext('y(t)'),pause
plot(x(:,1),x(:,2)),grid,
gtext('x'),gtext('y')

作出的y(x)图形书本上最后是沿着x=15竖直向上的,没有回转,而且当t=1时,x(t)=3.9561,和实际的运算结果也不一样,是什么原因造成的呢?麻烦各位帮忙看看,不胜感激!!!

[ 本帖最后由 eight 于 2007-8-12 10:52 编辑 ]

octopussheng 发表于 2007-8-12 09:00

最好把你的结果和书上的结果都贴一下,这样看着也直观点!

wuygoon 发表于 2007-8-12 23:00

书上的结果贴不上啊....我没有电子稿哦....

octopussheng 发表于 2007-8-13 08:36

拿手机或者相机照一下也可以 啊!呵呵!

还有,你的这句话可能有点问题吧——
s=sqrt((c-x(1))^2+(a*t-x(2)^2));
是不是应该是这样的——
s=sqrt((c-x(1))^2+(a*t-x(2))^2);

无水1324 发表于 2007-8-13 09:41

回复 #1 wuygoon 的帖子

你的精度是不是太低了,

ts=0:0.1:2;%%% 步长太长
x0=;
opt=odeset('reltol',1e-2,'abstol',1e-3); %% 精度太低
=ode45(@jisi,ts,x0,opt);
,    % 没有必要的语句
plot(t,x),grid, % 确定你所需要的
gtext('x(t)'),gtext('y(t)'),pause
plot(x(:,1),x(:,2)),grid,
gtext('x'),gtext('y')

wuygoon 发表于 2007-8-13 10:48

谢谢octopussheng哈,我确实打错了,但是改好之后还是跟书上的不一样,最后结果里的曲线还是往回弯的。。。。
另外,我想请无水1324帮忙改改我的程序好吗?而且还有一个问题,像我在程序里输入类似“1e-3”的精度设置,但是最后显示的结果为什么没按照1e-3输出呢?麻烦各位再帮我看看,谢谢了。

[ 本帖最后由 eight 于 2007-8-15 19:41 编辑 ]
页: [1]
查看完整版本: 为什么程序运行和书上的不一样?