| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 
 |  
#define PI 3.1415926535
#define NMAX 20
 
///////////////
/* A DEFINIR */
///////////////
double func(double x)
{
    return( exp(-x)*sin(1/(x*x)) );      // CHOISIR FCT
}
///////////////
/* FONCTION DEFINIE */
///////////////
float int_romberg()
{
    int l,m,n,i,j,k;
    double h,S,r;
    FILE *fichier;
    double a=0.1;          // CHOISIR BORNE INF
    double b=10;          // CHOISIR BORNE SUP
 
    // creation et ouverture fichier donnees
    fichier=fopen("int_romberg.txt","w+");
 
    double T[NMAX][NMAX];    // def matrice T
 
    // initialisation a zero
    for(k=0;k<NMAX;k++) // tu peux remplacer k par i
        for(l=0;l<NMAX;l++)
            T[k][l]=0;
 
 
    for(n=1;n<NMAX;n++) 
    {
        h=1.*(b-a); // def h0
 
        T[0][0]=1.*2/h*(func(a)+func(b)); // ini T00
 
        for(i=1;i<n+1;i++)// boucle sur i jusque n
        {
            S=0;
 
            for(m=1;m<pow(2,i-1)+1;m++) // tu peux replacer m par l
                S=S+func(a+(2*m-1)*h/2); // Calcul d'une somme
 
            T[i][0]=1.*1/2*(T[i-1][0]+h*S); // def Ti0
            h=h/2; // h redefini
 
            for(j=1;j<i+1;j++)// boucle sur j jusque i
            {
 
                T[i][j]=1.*(pow(4,j)*T[i][j-1]-T[i-1][j-1])/(pow(4,j)-1);
 
                // Etat avancement
                printf("n=%d   i=%d   j=%d   T[%d][%d]=%.16lf \n",n,i,j,i,j,T[i][j]);
 
            } // fin boucle sur j
        } // fin boucle sur i
 
        r=T[n][n]; // integrale
 
        // ecriture dans un fichier data
        fprintf(fichier,"%d  %f\n",n,r);
 
 
    } // fin de la boucle de n nb de decoupe
 
    fclose(fichier); // fermeture fichier donnees
 
    return 0;
}
 
 
/* procedure principale */
int main(){
 
    int_romberg(); // appel fonction
    printf("FIN\n");
 
    // affichage trace avec bash
    system("bash plot.bash");
 
    return 0;
} | 
Partager