欧拉方法:
#include <stdio.h>
#include <math.h>
#define N 10//离散点个数取10,对应步长0.1
#define low 0//定义域x区间下限
#define high 1.0//定义域x区间上限
#define h (high-low)/N//步长
double AnalyticalSolution(double x)//准确解
{
return pow((1+pow(x,2)),1.0/3);
}
double EulerMethod(double x)//欧拉公式
{
//若x==0
if(fabs(x-low)<1e-6)//浮点数之间不能直接判断是否相等,则可以用 fabs(f1-f2)<=给定差值精度 来判断f1和f2是否相等
return 1;//y(low)==y(0)==1
else
{
return EulerMethod(x-h)+h*(2.0/3*(x- h)*pow(EulerMethod(x-h),-2));
}
}
void prit(double (*p)(double x))//格式化输出
{
int count=0;
double i;