Runge-Kutta法matlab代码
时间: 2023-12-27 18:03:10 浏览: 43
以下是一个常见的4阶Runge-Kutta方法的Matlab代码示例,用于解决常微分方程的初值问题:
```matlab
function [t, y] = RK4(f, tspan, y0, N)
% f - 右端函数
% tspan - 时间段
% y0 - 初始值
% N - 步数
% 初始化时间和解向量
t0 = tspan(1);
tf = tspan(2);
h = (tf - t0)/N;
t = linspace(t0, tf, N+1);
y = zeros(length(y0), N+1);
y(:,1) = y0;
% 迭代计算
for n = 1:N
k1 = h*f(t(n), y(:,n));
k2 = h*f(t(n) + h/2, y(:,n) + k1/2);
k3 = h*f(t(n) + h/2, y(:,n) + k2/2);
k4 = h*f(t(n) + h, y(:,n) + k3);
y(:,n+1) = y(:,n) + (k1 + 2*k2 + 2*k3 + k4)/6;
end
```
使用示例:
```matlab
% 定义右端函数
f = @(t,y) -y + t^2 + 1;
% 定义时间段、初始值和步数
tspan = [0, 1];
y0 = 0.5;
N = 10;
% 调用RK4函数
[t, y] = RK4(f, tspan, y0, N);
% 绘制解曲线
plot(t, y, 'o-', 'LineWidth', 2);
xlabel('t');
ylabel('y');
title('Runge-Kutta 4解常微分方程');
```
这里使用了一个简单的例子来演示该方法的使用,但是你可以根据自己的需要修改右端函数和初始化值,以获得所需的解。