kristi 发表于 2008-5-4 14:19

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 编辑 ]

ch_j1985 发表于 2008-5-4 14:31

[代码应该是这样:

%函数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 编辑 ]

kristi 发表于 2008-5-4 14:39

回复 2楼 的帖子

可是实际上z=y',而原方程中没有y' 的显式,只有z' 的显式,那么function该如何修改呢?

而且使用您提供的程序还是不行。。。出现同样的问题:Function definitions are not permitted at the prompt or in scripts

[ 本帖最后由 ChaChing 于 2009-4-18 14:18 编辑 ]

sogooda 发表于 2008-5-4 14:50

楼主需要找本基本的matlab书来看看。
版面上、置顶帖和精华区都有关于微分方程的讨论,请自行搜索。

sigma665 发表于 2008-5-4 15:47

回复 4楼 的帖子

将文件名改一下

ch_j1985 发表于 2008-5-4 15:47

原帖由 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--');

sigma665 发表于 2008-5-4 15:52

回复 7楼 的帖子

需要将文件名改成myz.m
里面第一句相应改为function dy=myz(t,y)

估计lz已经有了一个z.m的m文件

[ 本帖最后由 sigma665 于 2008-5-4 16:11 编辑 ]

ch_j1985 发表于 2008-5-4 16:06

原帖由 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,不管改不改文件名,都不会报错的:@)

kristi 发表于 2008-5-4 20:25

感谢大家的积极帮助,问题基本解决,总结如下

感谢大家的帮助,现在已经基本解决了问题,总结一下:
1)function的定义需要在一个文件中最开始的位置,前面什么都不要有
2)ode是另一个函数,不要放在function的文件中使用,可以另建一个文件,调用function中定义的函数名,注意要用该函数名命名function所在的m文件
页: [1]
查看完整版本: Function definitions are not permitted at the prompt or in scripts 出错求助