二阶龙格-库塔

2019-01-12 11:03

#include #include /*n表示几等分,n+1表示他输出的个数*/ int RungeKutta(double y0,double a,double b,int n,double *x,double *y,double (*function)(double,double)) {

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 #include double fxy(double xi,double yi) /*定义函数fxy*/ {

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(\ }


二阶龙格-库塔.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:高中数学 2.2.1 圆的方程学案(2)苏教版必修2

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: