rung.c

来自「数学解析」· C语言 代码 · 共 57 行

C
57
字号
/******************************************************************************
 *                                                                            *
 *   WANG Haichen                                                             *
 *   Deuxieme candidatue en informatique                                      *
 *   Introduction a l'analyse numerique                                       *
 *   Projet de l'examen                                                       *
 *   Modele simplifie proie-predateur                                         *
 *                                                                            *
 *****************************************************************************/

//BIBLIOTHEQUES:

#include<stdio.h>
#include<stdlib.h>
#include"rung.h"


//Routine de Rung-kutta:

double** Rung_kutta
(double* (*Fonc)(double,double*),double* v0,int nbr_iteration,double temp0,
 double temp1)
{
    double **Rg_kt;
    double *var1,*var2;
    double h;
    int i;

    h=(temp1-temp0)/nbr_iteration;
    Rg_kt=(double**)malloc(nbr_iteration*sizeof(double*));
    Rg_kt[0]=(double*)malloc(2*sizeof(double));
    Rg_kt[0][0]=v0[0];
    Rg_kt[0][1]=v0[1];

    for (i=1;i<nbr_iteration;i++)
    {
        Rg_kt[i]=(double*)malloc(2*sizeof(double));
        var1=Fonc((temp0+(i-1)*h),Rg_kt[i-1]);

        var1[0]=Rg_kt[i-1][0]+0.5*h*var1[0];
        var1[1]=Rg_kt[i-1][1]+0.5*h*var1[1];

        var2=Fonc((temp0+(i-1)*h+0.5*h),var1);
        Rg_kt[i][0]=Rg_kt[i-1][0]+h*var2[0];
        Rg_kt[i][1]=Rg_kt[i-1][1]+h*var2[1];

        free(var1);
        free(var2);
    }
    return Rg_kt;

}




⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?