四阶龙格库塔法matlab
时间: 2023-07-13 17:22:06 浏览: 63
以下是使用四阶龙格库塔法(RK4)求解ODE的MATLAB代码示例:
```
function [t, y] = RK4(odefun, tspan, y0, h)
% odefun是ODE函数句柄,tspan是时间间隔,y0是初始值,h是步长
t0 = tspan(1); tf = tspan(2); t = (t0:h:tf)';
n = length(t);
y = zeros(n, length(y0));
y(1,:) = y0;
for i = 1:n-1
k1 = odefun(t(i), y(i,:))';
k2 = odefun(t(i)+h/2, y(i,:)+h/2*k1)';
k3 = odefun(t(i)+h/2, y(i,:)+h/2*k2)';
k4 = odefun(t(i)+h, y(i,:)+h*k3)';
y(i+1,:) = y(i,:) + h/6 * (k1 + 2*k2 + 2*k3 + k4);
end
```
其中,`odefun`是一个函数句柄,用于表示ODE的右侧函数,例如:
```
function dydt = odefun(t, y)
dydt = -y + sin(t);
```
这个函数描述了 $y' = -y + \sin(t)$ 这个ODE的右侧。在主程序中,可以这样调用 RK4 函数:
```
[t, y] = RK4(@odefun, [0, 10], 1, 0.1);
```
其中,`@odefun`表示将 `odefun` 函数句柄传递给 RK4 函数。`[0, 10]` 是时间间隔,`1` 是初始值,`0.1` 是步长。函数将返回时间 `t` 和对应的解 `y`。
阅读全文