请用matlab 写一个四阶龙格库塔法程序
时间: 2023-06-20 07:08:17 浏览: 75
好的,下面是一个用 MATLAB 编写的四阶龙格-库塔法程序:
```matlab
function [t, y] = RK4(f, tspan, y0, h)
% f: 函数句柄,tspan: 时间区间,y0: 初值,h: 步长
t0 = tspan(1); tf = tspan(2);
t = t0:h:tf;
n = length(t);
y = zeros(length(y0), n);
y(:,1) = y0(:);
for i = 1:n-1
k1 = h * feval(f, t(i), y(:,i));
k2 = h * feval(f, t(i)+h/2, y(:,i)+k1/2);
k3 = h * feval(f, t(i)+h/2, y(:,i)+k2/2);
k4 = h * feval(f, t(i)+h, y(:,i)+k3);
y(:,i+1) = y(:,i) + (k1 + 2*k2 + 2*k3 + k4)/6;
end
end
```
使用方法:
1. 定义函数句柄 `f`,例如:
```matlab
f = @(t, y) [y(2); -sin(y(1))];
```
2. 设置时间区间和初值:
```matlab
tspan = [0, 10];
y0 = [0; 1];
```
3. 设置步长 `h`:
```matlab
h = 0.01;
```
4. 调用函数:
```matlab
[t, y] = RK4(f, tspan, y0, h);
```
程序将返回时间和解向量 `y`。
阅读全文