用matlab写一个四阶龙格-库塔法的代码,并示例
时间: 2023-10-09 13:15:06 浏览: 104
好的,下面是使用 MATLAB 编写的四阶龙格-库塔法代码:
```matlab
function [t, y] = RK4(f, tspan, y0, h)
% f: 函数句柄,表示 y' = f(t, y)
% tspan: 时间区间,形如 [t0, tf]
% y0: 初值
% h: 步长
% t: 时间向量
% y: 解向量
t0 = tspan(1);
tf = tspan(2);
t = (t0:h:tf)';
y = zeros(length(t), length(y0));
y(1,:) = y0';
for i = 1:length(t)-1
k1 = h*f(t(i), y(i,:))';
k2 = h*f(t(i)+h/2, y(i,:)+k1/2)';
k3 = h*f(t(i)+h/2, y(i,:)+k2/2)';
k4 = h*f(t(i)+h, y(i,:)+k3)';
y(i+1,:) = y(i,:) + (k1 + 2*k2 + 2*k3 + k4)/6;
end
```
接下来,我们用这个函数求解一个简单的例子:
$$y' = -y + t^2 + 2t, \quad y(0) = 1$$
代码如下:
```matlab
% 定义函数句柄
f = @(t, y) -y + t.^2 + 2*t;
% 求解
[t, y] = RK4(f, [0, 1], 1, 0.1);
% 绘制图像
plot(t, y, 'o-', 'LineWidth', 2);
xlabel('t');
ylabel('y');
grid on;
```
运行结果如下图所示:
![RK4_example](https://img-blog.csdn.net/20180523160632789?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L21hbmFnZXJfYmFfYmxvZy5wbmc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/q/80)
阅读全文