数值计算方法实验

  • 格式:doc
  • 大小:96.50 KB
  • 文档页数:4

下载文档原格式

  / 4
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

学院(系)名称:计算机与通信工程

附录(源程序及运行结果): 一. 四阶龙格-库塔法 #include #include

double f(double x,double y){return (x/y);} void main(){ double x0,y0,h,k1,k2,k3,k4,x1,y1; int n=0,N;

printf("请输入x 和y 的初值:"); scanf("%lf,%lf",&x0,&y0); printf("请输入步长h :"); scanf("%lf",&h);

printf("请输入n 的值:"); scanf("%d",&N); while(n!=N){ x1=x0+h; k1=f(x0,y0);

k2=f(x0+h/2,y0+h*k1/2); k3=f(x0+h/2,y0+h*k2/2); k4=f(x1,y0+h*k3);

y1=y0+h*(k1+2*k2+2*k3+k4)/6;

printf("x%d=%lf,y%d=%lf\n",n+1,x1,n+1,y1); n=n+1; x0=x1; y0=y1;

}

}运行结果:

二. 经典龙格-库塔法(两个未知函数) #include #include

double f(double x,double y,double z){return (3*y+2*z);} double g(double x,double y,double z){return (4*y+z);}

void main(){

double x0,y0,z0,h,k1,k2,k3,k4,l1,l2,l3,l4,x1,y1,z1;

int n=0,N;

printf("请输入x,y,z的初值:");

scanf("%lf,%lf,%lf",&x0,&y0,&z0);

printf("请输入步长h:");

scanf("%lf",&h);

printf("请输入n的值:");

scanf("%d",&N);

while(n!=N){

x1=x0+h;

k1=f(x0,y0,z0);

l1=g(x0,y0,z0);

k2=f(x0+h/2,y0+h*k1/2,z0+h*l1/2);

l2=g(x0+h/2,y0+h*k1/2,z0+h*l1/2);

k3=f(x0+h/2,y0+h*k2/2,z0+h*l2/2);

l3=g(x0+h/2,y0+h*k2/2,z0+h*l2/2);

k4=f(x1,y0+h*k3,z0+h*l3);

l4=g(x1,y0+h*k3,z0+h*l3);

y1=y0+h*(k1+2*k2+2*k3+k4)/6;

z1=z0+h*(l1+2*l2+2*l3+l4)/6;

printf("x%d=%lf,y%d=%lf,z%d=%lf\n",n+1,x1,n+1,y1,n+1,z1);

n=n+1; x0=x1; y0=y1; z0=z1;

}

}运行结果: