数值计算方法实验
- 格式:doc
- 大小:96.50 KB
- 文档页数:4
学院(系)名称:计算机与通信工程
附录(源程序及运行结果): 一. 四阶龙格-库塔法 #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
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;
}
}运行结果: