本文共 718 字,大约阅读时间需要 2 分钟。
标签: 计算方法实验
/* 本实验用改进的欧拉公式计算常微分方程初值问题 1) y' = y / x - y * y / x, 1 <= x <= 1.5 2) y(1) = 0.5 取步长h = 0.1(即n = 5).*/#include#include 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;}
实验结果