问题描述:
利用欧拉公式,求解y ’ =1/(1+x2)-2y2,当y(0)=0,h=0.5时,其在0<=x<=4时的结点值,精确到小数点后四位。
问题分析:
欧拉公式推导:当dy/dx==f(x,y)且y(x0)==y0时,可推导出切线方程的递推公式,即:yi+1=yi+f(xi,yi)(xi+1-xi)和xi=x0+ih;且此时xi+1-xi=h称为步长。所以由已给的范围和步长可算出需要计算的点数。
问题分析由给出的公式代入并且使自变量按步长递增,即可求解所谓范围的函数值
欧拉法求函数值
#include<cstdio>
double fact(double x,double y) {
return y+(1./(1+x*x)-2*y*y)*0.5;//欧拉公式
}
int main() {
double x0=0, y0=0;//初始值
int count=9;//计算点数
while(count--) {
printf("%.2lf %.4lf\n",x0,y0);//对应点的函数结果输出
y0=fact(x0,y0);
x0+=0.5;
}
return 0;
}
/Authors
: 江楚郎
*/
运行结果: