声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 3643|回复: 8

[编程技巧] Function definitions are not permitted at the prompt or in scripts 出错求助

[复制链接]
发表于 2008-5-4 14:19 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
需要解微分方程初值问题:y''+y=6x+x^3,y(0)=0,y'(0)=1

尝试使用ODE45编程:
(由于方程中没有y'的显式,故不知道以下的作法是否正确,还请高手指教!)

function dy=z(t,y)
dz=6*t+t^3-y;
[t,y]=ode45('z',[0,pi],[0,1]);
plot (t,y,'-');

系统告诉我:Function definitions are not permitted at the prompt or in scripts.
这里我就不明白了,function后面定义的不就是y'吗?,我这里错误出现在哪里呢?

[ 本帖最后由 eight 于 2008-5-4 21:44 编辑 ]
回复
分享到:

使用道具 举报

发表于 2008-5-4 14:31 | 显示全部楼层
[代码应该是这样:

%函数z
function dy=z(t,y)
dy=6*t+t^3-y;
end
%在Command Window输入的代码
[t,y]=ode45('z',[0,pi],[0,1]);
plot (t,y,'-');

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

评分

1

查看全部评分

 楼主| 发表于 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 编辑 ]
发表于 2008-5-4 14:50 | 显示全部楼层
楼主需要找本基本的matlab书来看看。
版面上、置顶帖和精华区都有关于微分方程的讨论,请自行搜索。
发表于 2008-5-4 15:47 | 显示全部楼层

回复 4楼 的帖子

将文件名改一下
发表于 2008-5-4 15:47 | 显示全部楼层


你是不是没有把代码的前三句放在m文件里?
这是修改后的代码,附件是m文件,你再试试:

[t,y]=ode45('z',[0,pi],[0,1]);
plot (t,y(:,1),'r-',t,y(:,2),'b--');

z.m

118 Bytes, 下载次数: 33

评分

1

查看全部评分

发表于 2008-5-4 15:52 | 显示全部楼层

回复 7楼 的帖子

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

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

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

评分

1

查看全部评分

发表于 2008-5-4 16:06 | 显示全部楼层
原帖由 sigma665 于 2008-5-4 15:52 发表
需要将文件名改成myz.m
里面第一句相应改为  function dy=z(t,y)

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


我用的Matlab版本是R2008a,不管改不改文件名,都不会报错的:@)
 楼主| 发表于 2008-5-4 20:25 | 显示全部楼层

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

感谢大家的帮助,现在已经基本解决了问题,总结一下:
1)function的定义需要在一个文件中最开始的位置,前面什么都不要有
2)ode是另一个函数,不要放在function的文件中使用,可以另建一个文件,调用function中定义的函数名,注意要用该函数名命名function所在的m文件

评分

1

查看全部评分

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-9-23 11:19 , Processed in 0.065163 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表