📄 微分方程组的n=4龙格库塔解法.m
字号:
%偏微分方程组N=4的龙格-库塔方法求解
%形式:求t在区间[a,b]内微分方程组:
% x'1(t)=f1(t,x1(t),...xn(t))
% x'2(t)=f2(t,x1(t),...xn(t))
% ...
% x'n(t)=fn(t,x1(t),...xn(t))
% 初值条件:x1(a)=a1,x2(a)=a2...xn(a)=an,的近似解
%_______________________________________________________
%调用格式:先定义F函数,既定义方法如下(以三个方程组成的方程组为列:
%function Z=F(X)
% x=X(1);
% y=X(2);
% z=X(3);
% Z=zeros(1,2);
% Z(1)=3*x+2*y+z; //Z(1)相当于表达式f1(t,x1(t)...)
% Z(2)=x+2*y-z; //Z(2)相当于表达式f2(t,x1(t)...)
% Z(3)=x-3*z; //Z(3)相当于表达式f3(t,x1(t)...)
%然后直接调用[T,Z]=rks4(’F‘,a,b,Za,M),其中F上面的函数
% a合b是t的范围,Za为初值向量【X1(a) X2(a)...】
% M为需要把区间分为多少次进行代换即(b-a)/M
% Z的一列为x1(t),第二列为x2(t)........
%_______________________________________________________
function [T,Z]=rks4(F,a,b,Za,M)
h=(b-a)/M;
T=zeros(1,M+2);
Z=zeros(M+1,length(Za));
T=a:h:b;
Z(1,:)=Za;
for j=1:M
k1=h*feval(F,[T(j),Z(j,:)]);
k2=h*feval(F,[T(j)+h/2,Z(j,:)+k1/2]);
k3=h*feval(F,[T(j)+h/2,Z(j,:)+k2/2]);
k4=h*feval(F,[T(j)+h,Z(j,:)+k3]);
Z(j+1,:)=Z(j,:)+(k1+2*k2+2*k3+k4)/6;
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -