Function definitions are not permitted at the prompt or in scripts 出错求助
需要解微分方程初值问题:y''+y=6x+x^3,y(0)=0,y'(0)=1尝试使用ODE45编程:
(由于方程中没有y'的显式,故不知道以下的作法是否正确,还请高手指教!)
function dy=z(t,y)
dz=6*t+t^3-y;
=ode45('z',,);
plot (t,y,'-');
系统告诉我:Function definitions are not permitted at the prompt or in scripts.
这里我就不明白了,function后面定义的不就是y'吗?,我这里错误出现在哪里呢?
[ 本帖最后由 eight 于 2008-5-4 21:44 编辑 ] [代码应该是这样:
%函数z
function dy=z(t,y)
dy=6*t+t^3-y;
end
%在Command Window输入的代码
=ode45('z',,);
plot (t,y,'-');
[ 本帖最后由 ChaChing 于 2009-4-18 14:19 编辑 ]
回复 2楼 的帖子
可是实际上z=y',而原方程中没有y' 的显式,只有z' 的显式,那么function该如何修改呢?而且使用您提供的程序还是不行。。。出现同样的问题:Function definitions are not permitted at the prompt or in scripts
[ 本帖最后由 ChaChing 于 2009-4-18 14:18 编辑 ] 楼主需要找本基本的matlab书来看看。
版面上、置顶帖和精华区都有关于微分方程的讨论,请自行搜索。
回复 4楼 的帖子
将文件名改一下 原帖由 kristi 于 2008-5-4 14:39 发表 http://www.chinavib.com/forum/images/common/back.gif而且使用您提供的程序还是不行。。。出现同样的问题:Function definitions are not permitted at the prompt or in scripts
你是不是没有把代码的前三句放在m文件里?
这是修改后的代码,附件是m文件,你再试试:
=ode45('z',,);
plot (t,y(:,1),'r-',t,y(:,2),'b--');
回复 7楼 的帖子
需要将文件名改成myz.m里面第一句相应改为function dy=myz(t,y)
估计lz已经有了一个z.m的m文件
[ 本帖最后由 sigma665 于 2008-5-4 16:11 编辑 ] 原帖由 sigma665 于 2008-5-4 15:52 发表 http://www.chinavib.com/forum/images/common/back.gif
需要将文件名改成myz.m
里面第一句相应改为function dy=z(t,y)
估计lz已经有了一个z.m的m文件
我用的Matlab版本是R2008a,不管改不改文件名,都不会报错的:@)
感谢大家的积极帮助,问题基本解决,总结如下
感谢大家的帮助,现在已经基本解决了问题,总结一下:1)function的定义需要在一个文件中最开始的位置,前面什么都不要有
2)ode是另一个函数,不要放在function的文件中使用,可以另建一个文件,调用function中定义的函数名,注意要用该函数名命名function所在的m文件
页:
[1]