求助四阶Runge-Kutta法 解微分方程组程序
帮忙 给出四阶Runge-kutta法 解微分方程组程序不能用Matlab库函数程序谢谢
附加
最好是Burgers方程的:victory:回复 楼主 的帖子
直接根据Runge-kutta写一个应该就可以了吧论坛内有各种解法的原代码,你找一下
回复 楼主 的帖子
这个精华帖子你看看http://forum.vibunion.com/forum/viewthread.php?tid=15685&extra=page%3D1%26amp%3Bfilter%3Ddigest 这个是小事情...不过最好是自己写一个 % 4阶龙格库塔法求chen's吸引子
% 方程表达式
% dx/dt = a*(y-x)
% dy/dt = (c-a)*x - x*z + c*y
% dz/dt = x*y - b*z
clc;
close all;
clear all;
%参数值
a = 35;
b = 3;
c = 28;
%初始值
x_0 = -1;
y_0 = 0;
z_0 = 1;
h = 0.01; % 积分时间步长
step1 = 10000; % 前面的迭代点数
step2 = 5000; % 后面的迭代点数
X = [];
Y = [];
Z = [];
for(i = 1:1:(step1 + step2))
%e1
x_e1 = -a*x_0 + a*y_0;
y_e1 = c*y_0 + (c - a)*x_0 - x_0*z_0;
z_e1 = -b*z_0 + x_0*y_0;
%e2
y_h = y_0 + 0.5*h*y_e1;
x_e2 = -a*(x_0 + 0.5*h*x_e1) + a*y_h;
x_h = x_0 + 0.5*h*x_e1;
z_h = z_0 + 0.5*h*z_e1;
y_e2 = c*(y_0 + 0.5*h*y_e1) + (c - a)*x_h - x_h*z_h;
z_e2 = -b*(z_0 + 0.5*h*z_e1) + x_h*y_h;
%e3
y_h = y_0 + 0.5*h*y_e2;
x_e3 = -a*(x_0 + 0.5*h*x_e2) + a*y_h;
x_h = x_0 + 0.5*h*x_e2;
z_h = z_0 + 0.5*h*z_e2;
y_e3 = c*(y_0 + 0.5*h*y_e2) + (c - a)*x_h - x_h*z_h;
z_e3 = -b*(z_0 + 0.5*h*z_e2) + x_h*y_h;
%e4
y_h = y_0 + h*y_e3;
x_e4 = -a*(x_0 + h*x_e3) + a*y_h;
x_h = x_0 + h*x_e3;
z_h = z_0 + h*z_e3;
y_e4 = c*(y_0 + h*y_e2) + (c - a)*x_h - x_h*z_h;
z_e4 = -b*(z_0 + h*z_e2) + x_h*y_h;
%叠代
x_1 = x_0 + 1/6*h*(x_e1 + 2*x_e2 +2*x_e3 + x_e4);
y_1 = y_0 + 1/6*h*(y_e1 + 2*y_e2 +2*y_e3 + y_e4);
z_1 = z_0 + 1/6*h*(z_e1 + 2*z_e2 +2*z_e3 + z_e4);
X = ;
Y = ;
Z = ;
x_0 = x_1;
y_0 = y_1;
z_0 = z_1;
end
X = X(step2+1:end);
Y = Y(step2+1:end);
Z = Z(step2+1:end);
figure(1);
plot3(Z(1000:end),Y(1000:end),X(1000:end));
grid on
xlabel('x');
ylabel('y');
zlabel('z');
这个应该是可以借鉴的。
回复 6楼 的帖子
麻烦了点,但是程序还是比较好的求助
有没有求解微分方程组的Matlab程序 比如Du/Dt=Mu,其中u为69*1阶向量,M为69*69阶矩阵 怎么没人理呀,恳请各位高手帮忙,我很着急! 可以调用库函数ode45('odefun',,u0),可是我不会编odefun这个函数,请各位高手帮忙!回复 10楼 的帖子
还是一样的,只是fun书写比较麻烦而以 可是没有现成的例子我感觉有点无从下手,请问论坛里有没有这方面的例子呢?不好意思,我是初学者。 上面的精华贴可以参考! 10楼说的对,ode45就是lz要的库函数 我调用库函数 =ODE45(@fun,,V0,[ ],M0,M1);其中function f=fun(t,V,M0,M1)
%其中V为列向量M0,M1为矩阵
f=(M0+M1)*V;
运行结果显示
??? Attempt to execute SCRIPT ode45 as a function.
Error in ==> C:\Documents and Settings\hp\桌面\ode45.m
On line 47==> =ODE45(@fun,,V0,[],M0,M1);
请问这是怎么回事呢?
页:
[1]
2