马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
function [x,y]=rk(ufunc,y0,h,a,b)
n=floor((b-a)/h); x(1)=a; y(:,1)=y0;
for ii=1:60
x(ii+1)=x(ii)+h;
k1=ufunc(x(ii),y(:,ii)); % 这一行出错!!
k2=ufunc(x(ii)+h/2,y(:,ii)+h*k1/2);
k3=ufunc(x(ii)+h/2,y(:,ii)+h*k2/2);
k4=ufunc(x(ii)+h,y(:,ii)+h*k3);
y(:,ii+1)=y(:,ii)+h*(k1+2*k2+2*k3+k4)/6;
end
function dy=test_fun(x,y)
dy = zeros(3,1);
dy(1) = y(1) * y(3);
dy(2) = -y(1) + y(3);
dy(3) = -0.51 * y(1) * y(2);
命令窗口
>> [t,y]=rk(@test_fun,[1;1;3],0.25,0,15);
??? Subscript indices must either be real positive integers or logicals.
Error in ==> d:\MATLAB6p5\work\rk.m
On line 5 ==> k1=ufunc(x(ii),y(:,ii));
请问是什么原因?x(ii)和y(:,ii)下标应该没错啊,ii=1.
[ 本帖最后由 ChaChing 于 2009-8-8 21:11 编辑 ] |