龙格库塔法四阶matlab
时间: 2023-07-13 22:32:09 浏览: 45
龙格-库塔法(Runge-Kutta method)是数值求解常微分方程组最常用的方法之一。其中,四阶龙格-库塔法是其中比较经典的一种方法。下面是在MATLAB中实现四阶龙格-库塔法的示例代码:
```matlab
function [t,y] = rk4(f, y0, t0, tf, h)
% f: 右端函数
% y0: 初始值
% t0: 初始时间
% tf: 终止时间
% h: 步长
t = t0:h:tf; % 时间网格
n = length(t); % 时间网格点数
y = zeros(length(y0), n); % 存储解
y(:,1) = y0; % 存储初始值
for i = 2:n
k1 = f(t(i-1), y(:,i-1));
k2 = f(t(i-1) + h/2, y(:,i-1) + h/2*k1);
k3 = f(t(i-1) + h/2, y(:,i-1) + h/2*k2);
k4 = f(t(i-1) + h, y(:,i-1) + h*k3);
y(:,i) = y(:,i-1) + h/6*(k1 + 2*k2 + 2*k3 + k4);
end
end
```
其中,`f`为右端函数,输入参数为时间和状态向量;`y0`为初始值,`t0`为初始时间,`tf`为终止时间,`h`为步长。函数返回时间网格和解向量。使用方法如下:
```matlab
% 定义右端函数
f = @(t,y) [y(2); -9.8];
% 初始值和时间
y0 = [0; 0];
t0 = 0;
tf = 10;
h = 0.01;
% 调用函数求解
[t, y] = rk4(f, y0, t0, tf, h);
% 绘制轨迹
plot(y(1,:), y(2,:));
```
该示例代码求解了自由落体运动的轨迹,并绘制了轨迹图像。