#include
double h=(b-a)/n,k1,k2; int i; x[0]=a; y[0]=y0;
for(i=0;i x[i+1]=x[i]+h; k1=function(x[i],y[i]); k2=function(x[i]+h/2,y[i]+h*k1/2); y[i+1]=y[i]+h*k2; } return 1; } double function(double x,double y) { return y-2*x/y; } int main() { int i; double x[6],y[6]; printf(\用二阶龙格-库塔方法\\n\ RungeKutta(1,0,1,5,x,y,function); for( i=0;i<6;i++) printf(\ return 1; } 另一个 #include double y; y=yi-2*xi/yi; return(y); } void main() { double x0,y0,h,xi,yi,yi_1,xk2,yk2,xk3,yk3,xk4,yk4,k1,k2,k3,k4; int i; x0=0; /*赋初始值*/ y0=1; h=0.1; xi=x0; yi=y0; for(i=1;i<=10;i++) /*循环开始*/ { k1=h*fxy(xi,yi); /*求解k1值*/ xk2=xi+0.5*h; /*求解k2的值*/ yk2=yi+0.5*k1; k2=h*fxy(xk2,yk2); xk3=xi+0.5*h; /*求解k3的值*/ yk3=yi+0.5*k2; k3=h*fxy(xk3,yk3); xk4=xi+h; /*求解k4的值*/ yk4=yi+k3; k4=h*fxy(xk4,yk4); yi_1=yi+(k1+2*k2+2*k3+k4)/6; /*求解yi+1的值*/ yi=yi_1; if(i==1) { printf(\输出函数yi的近似值:\\n\ /*输出所有的yi值*/ printf(\ } printf(\ if((i+1)%1==0) /*每行显示三个数值*/ printf(\ } printf(\ }