用C++实现四阶龙格库塔法
时间: 2023-10-09 08:15:22 浏览: 59
下面是使用 C++ 实现四阶龙格库塔法的示例代码:
```cpp
#include <iostream>
#include <cmath>
using namespace std;
// 定义微分方程
double f(double t, double y) {
return t * t + y;
}
// 四阶龙格库塔法
double RK4(double t0, double y0, double h) {
double k1, k2, k3, k4;
k1 = h * f(t0, y0);
k2 = h * f(t0 + h / 2, y0 + k1 / 2);
k3 = h * f(t0 + h / 2, y0 + k2 / 2);
k4 = h * f(t0 + h, y0 + k3);
return y0 + (k1 + 2 * k2 + 2 * k3 + k4) / 6;
}
int main() {
double t0 = 0, y0 = 0, h = 0.1, t = 1, y;
int n = (t - t0) / h;
for (int i = 0; i < n; i++) {
y = RK4(t0, y0, h);
t0 += h;
y0 = y;
}
cout << "y(" << t << ") = " << y << endl;
return 0;
}
```
上面的代码中,`f(t, y)` 表示微分方程 $y' = f(t, y) = t^2 + y$,`RK4(t0, y0, h)` 表示使用四阶龙格库塔法求解在 $t = t_0 + h$ 时的 $y$ 值,`main()` 函数中通过循环计算得到 $y(1)$ 的值。