用Java写(1)欧拉法;(2)改进的欧拉法;(3)四阶经典龙格-库塔法分别求解
时间: 2023-10-09 20:16:16 浏览: 51
下面是Java实现的欧拉法、改进的欧拉法和四阶经典龙格-库塔法的代码:
欧拉法:
```java
public static double euler(double x0, double y0, double h, int n) {
double x = x0;
double y = y0;
for (int i = 0; i < n; i++) {
y += h * f(x, y);
x += h;
}
return y;
}
// 定义 y'=f(x,y) 函数
public static double f(double x, double y) {
return x + y;
}
```
改进的欧拉法:
```java
public static double improvedEuler(double x0, double y0, double h, int n) {
double x = x0;
double y = y0;
for (int i = 0; i < n; i++) {
double k1 = f(x, y);
double k2 = f(x + h, y + h * k1);
y += h * (k1 + k2) / 2;
x += h;
}
return y;
}
// 定义 y'=f(x,y) 函数
public static double f(double x, double y) {
return x + y;
}
```
四阶经典龙格-库塔法:
```java
public static double rungeKutta(double x0, double y0, double h, int n) {
double x = x0;
double y = y0;
for (int i = 0; i < n; i++) {
double k1 = f(x, y);
double k2 = f(x + h / 2, y + h / 2 * k1);
double k3 = f(x + h / 2, y + h / 2 * k2);
double k4 = f(x + h, y + h * k3);
y += h * (k1 + 2 * k2 + 2 * k3 + k4) / 6;
x += h;
}
return y;
}
// 定义 y'=f(x,y) 函数
public static double f(double x, double y) {
return x + y;
}
```
这里假设 y'=f(x,y) 函数为 x+y。可以根据实际问题进行修改。其中 x0 和 y0 为初始值,h 为步长,n 为步数。