matlab中使用龙格库塔法求解
来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/11/12 07:30:13
matlab中使用龙格库塔法求解
function [x,y]=runge_kutta(ufunc,y0,h,a,b)
n=floor(b-a)/h;
x(1)=a;
y(:,1)=y0;
for i=1:n
x(i+1)=x(i)+h;
k1=ufunc(x(i),y(:,i));
k2=ufunc(x(i)+h/2,y(:,i)+h*k1/2);
k3=ufunc(x(i)+h/2,y(:,i)+h*k2/2);
k4=ufunc(x(i)+h,y(:,i)+h*k2);
y(:,i+1)=y(:,i)+h*(k1+2*k2+2*k3+k4)/6;
end
n=floor(b-a)/h;
x(1)=a;
y(:,1)=y0;
for i=1:n
x(i+1)=x(i)+h;
k1=ufunc(x(i),y(:,i));
k2=ufunc(x(i)+h/2,y(:,i)+h*k1/2);
k3=ufunc(x(i)+h/2,y(:,i)+h*k2/2);
k4=ufunc(x(i)+h,y(:,i)+h*k2);
y(:,i+1)=y(:,i)+h*(k1+2*k2+2*k3+k4)/6;
end