1、一、实验目的及要求实验目的(1) 掌握龙格库塔算法的本质,构造二阶,四阶龙格库塔方法的思想。(2) 用一门自己熟悉的语言实现此算法。实验要求:(1) 根据算法的特征写出算法流程图;(2) 测试给出的例子;二、实验内容用四阶的龙格库塔公式解初值问题:/(2.0)1dyx2.0.6,0.2xh三、实验步骤(该部分不够填写.请填写附页)一、实验目的及要求实验目的: (1) 掌握龙格库塔算法的本质,构造二阶,四阶龙格库塔方法的思想。(2) 用一门自己熟悉的语言实现此算法。实验要求:(1) 写出算法描述;(2) 测试给出的例子;二、实验内容用四阶的龙格库塔公式解初值问题:/(2.0)1dyx2.0.6,
2、0.2xh三、实验步骤(该部分不够填写.请填写附页)1.算法描述:对给定的 f(x,y),用四阶 Runge-Kutta 法求解常微分方程初值问题:y(n+1)=y(n)+(h*(k1+2*k2+2*k3+k4)/6k1=f(xn,yn)k2=f(xn+0.5*h,yn+0.5*h*k1)k3=f(xn+0.5*h,yn+0.5*h*k2)K4=f(xn+h,yn+h*k3)2.用 C 语言实现算法的程序代码#include#include#define f(x,y) (x/y)int main(void)int m;int i;double a,b,y0;double xn,yn,yn1;d
3、ouble k1,k2,k3,k4;double h;printf(“nInput the begin and end of x:“); /*输入区间*/scanf(“%lf,%lf“,printf(“Input the y value at %f:“,a); /*输入初始点的值*/scanf(“%lf“,printf(“Input m valuedivide(%f,%f):“,a,b); /*输入区间的个数*/scanf(“%d“,if(m=0)printf(“Please input a number larger than 1.n“);return 1;h=(b-a)/m; /*区间的间隔*/xn=a;yn=y0;for(i=1;i=m;i+)k1=f(xn,yn); /*四阶 Runge-Kutta 公式*/k2=f(xn+h/2),(yn+h*k1/2);k3=f(xn+h/2),(yn+h*k2/2);k4=f(xn+h),(yn+h*k3);yn1=yn+h/6*(k1+2*k2+2*k3+k4);xn+=h;printf(“x%d=%f,y%d=%fn“,i,xn,i,yn1); /*输出结果*/yn=yn1;return 0;注: 实验成绩等级分为(90-100 分)优,(80-89 分)良,(70-79 分) 中,(60-69 分) 及格,(59 分)不及格