后退的Euler格式
后退的Euler格式 2012-2013(1)专业课程实践论文 后退的Euler格式 姜皓缤,0818180213,R数学08-2班 一、算法理论 方程中含有导数项,这是微分方程的本质特征,也正是它难以求解的症结所在,数值解法的关键在于设法消退其导数项,这项手续称为离散化。由于差分是微分的近似运算,实现离散化的基本途径之一是干脆用差商替代导数。譬如,若在点列出方程 , 并用差商近似替代其中的导数,结果有 。 设的近似值已知,用它代入上式右端进行计算,并取计算结果作为y的近似值,这就是Euler格式。 对于在点列出的方程(5.1.1),有 , 若用向后差商替代导数,则可将上式离散化得 , 即 , 此为后退的Euler格式。 二、算法框图 输出 起先 hb-a/n;x[0]x0;y[0]y0 输入区间个数n,区间范围x0,xn,初始值y0 x[i1]x[i]h; y[i1]y[i]hfx[i]h,y[i]hfx[i],y[i] 否 是 三、算法程序 include stdio.h include math.h float funcfloat x,float y { returny-x; } eulerfloat x0,float xn,float y0,int N { float x,y,yp,yc,h; int i; xx0; yy0; hxn-x0/floatN; fori1;iN;i { ypyh*funcx,y; xx0i*h; ycyh*funcx,yp; yyc; printfyf6.4f\n,x,y; } } main { float x0,xn,y0,e; int n; printf\n n\n ; scanfd,n; printf x0,xn\n ; scanff,f,x0,xn; printf y0\n ; scanff,y0; eulerx0,xn,y0,n; } 四、算法实现 例1 运用后退公式,求一阶常微分方程初值问题 的数值解,,变更步长的大小,比较收敛的速度。 解 1 显示输出初值n,输入10回车 2 显示输入x的范围x0, xn,输入0,1回车 3 显示输入y0,输入1 回车 4 显示结果 例题2用后退的Euler公式求解初值问题 解 5 显示输出初值n,输入10回车 6 显示输入x的范围x0, xn,输入1 ,6回车 7 显示输入y0,输入20 回车 8 显示结果 6 / 6