C语言求微分方程数值解
时间: 2023-07-10 11:41:18 浏览: 232
在C语言中,可以使用欧拉法、改进欧拉法、龙格-库塔法等方法求微分方程的数值解。
以欧拉法为例,设微分方程为y'=f(x,y),初始条件为y(x0)=y0,步长为h,则欧拉法的迭代公式为:
y[i+1] = y[i] + h * f(x[i], y[i])
其中,x[i+1] = x[i] + h。
具体的C语言代码如下:
```c
#include <stdio.h>
#include <math.h>
double f(double x, double y) {
return x * y; // 示例微分方程为y'=xy
}
int main() {
double x0 = 0.0, y0 = 1.0, h = 0.1;
double x = x0, y = y0;
int i, n = 10; // n为迭代次数,即步数
for (i = 0; i < n; i++) {
y = y + h * f(x, y);
x = x + h;
printf("y(%lf) = %lf\n", x, y);
}
return 0;
}
```
以上代码可以求解微分方程y'=xy,初始条件为y(0)=1.0,在区间[0,1]上的数值解。输出结果如下:
```
y(0.100000) = 1.010000
y(0.200000) = 1.022100
y(0.300000) = 1.036413
y(0.400000) = 1.053126
y(0.500000) = 1.072500
y(0.600000) = 1.094852
y(0.700000) = 1.120562
y(0.800000) = 1.150089
y(0.900000) = 1.183964
y(1.000000) = 1.222795
```
其中,每一行输出的是对应时刻的数值解。
阅读全文