#include <stdio.h>
#include <stdlib.h>
#include<math.h>
float f(float x,float y)
{
return 2*x*y; ///一阶方程
}
float RK(float x,float y,float h) ///龙格-库塔函数
{
float k1,k2,k3,k4;
k1=f(x,y);
k2=f(x+h/2,y+h*k1/2); ///都是公式
k3=f(x+h/2,y+h*k2/2);
k4=f(x+h,y+h*k3);
return (y+h*(k1+2*k2+2*k3+k4)/6);
}
main()
{
int i=0;
float x,y,h,b;
printf("请输入初始条件x0:\n"); ///输入初始条件值x0
scanf("%f",&x);
printf("请输入初始条件y0:\n"); ///输入初始条件值y0
scanf("%f",&y);
printf("请输入步长h:\n"); ///输入步长h
scanf("%f",&h);
printf("请输入区间右端点b:\n"); ///输入区间右端点b
scanf("%f",&b);
printf("x0=%10f y0=%10f\n",x,y);///输出初始值
do ///满足x在区间内做循环
{
y=RK(x,y,h); ///调用龙格库塔函数
x=x+h; ///x逐步增大
i++; ///次数吧
printf("x%d=%10f y%d=%10f\n",i,x,i,y);
}while(x<b);
return y;
}
龙格-库塔法
最新推荐文章于 2023-05-24 14:24:52 发布