声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 887|回复: 2

[编程技巧] 请指导!急……!

[复制链接]
发表于 2006-12-5 18:35 | 显示全部楼层 |阅读模式

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

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

x
这是我自己编的关于显式3阶Runge_Kutta方法
M文件1:
function E=rk3(a,b,ya,m)
% a,b区间两端点值
% ya为给定某一点的函数值
% m最大迭代次数
h=(b-a)/m;
T=zeros(1,m+1);
Y=zeros(1,m+1);
T=a:h:b;
Y(1)=ya;
for y=1:m;
    k1=f(T(j),Y(j));
    k2=f(T(j)+0.5*h,Y(j)+0.5*h*k1);
    k3=f(T(j)+h,Y(j)-h*k1+2*h*k2);
    Y(j+1)=Y(j)+1/6*h*(k1+4*k2+k3);
end
E=[T',Y'];

M文件2:
function  z=f(x,y)
z=y-2*x/y;

脚本文件:
>> rk3(0,1,1,10);
可是每次运行的时候它总是报错:??? Input argument "b" is undefined.

                                                            Error in ==> rk3 at 5
                                                            h=(b-a)/m;

:@L
回复
分享到:

使用道具 举报

发表于 2006-12-6 13:03 | 显示全部楼层
应该没问题,是不是你的其它目录下有同名的m文件,再执行rk3命令时自动执行它了
但你上面的程序也有错误,for y=1:m; 后多了分号,循环变量应为j不是y
发表于 2006-12-6 14:24 | 显示全部楼层

where is j

for y=1:m;
    k1=f(T(j),Y(j));
    k2=f(T(j)+0.5*h,Y(j)+0.5*h*k1);
    k3=f(T(j)+h,Y(j)-h*k1+2*h*k2);
    Y(j+1)=Y(j)+1/6*h*(k1+4*k2+k3);
end

to check where j it is???
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-11-12 14:45 , Processed in 0.075863 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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