改进的欧拉法计算常微分方程初值问题
标签: 计算方法实验
/*
本实验用改进的欧拉公式计算常微分方程初值问题
1) y' = y / x - y * y / x, 1 <= x <= 1.5
2) y(1) = 0.5
取步长h = 0.1(即n = 5).
*/
#include <stdio.h>
#include <math.h>
double f(double x, double y){ //微分方程右端函数
return (y / x - y * y / x);
}
void Euler(double x0, double xn, double y0, int n){ //改进的欧拉公式
double yp, yc, x = x0, y = y0, h = (xn - x0) / n;
for(int i = 1; i <= n; i++){
yp = y + h * f(x, y);
x = x0 + i * h;
yc = y + h * f(x, yp);
y = (yp + yc) / 2.0;
printf("x%d = %f y%d = %f\n", i, x, i, y);
}
}
int main(){
double x0 = 1, xn = 1.5, y0 = 0.5, n = 5;
printf("x0 = %f y0 = %f\n", x0, y0);
Euler(x0, xn, y0, n);
return 0;
}
实验结果
本文介绍了应用改进的欧拉方法来求解常微分方程初值问题的详细过程,并展示了实验结果。
2万+

被折叠的 条评论
为什么被折叠?



