Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 03/10/2006, à 21:19

dialloma

Un petit problème de maths en C qui ne marche pas (help)

Bonjour,

Je viens de faire un petit exo de maths sous C mais miracle, le résultat me semble bizzare, je ne m'attendais pas à ça du tout. Can you help me please ?

//Programme principal

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

//#include "complexe.h"
//#include "prot_complexe.h"
#include "trapeze.h"



//Définition des fonctions "f" et "en"

Complexe f(double x)
{
        Complexe y;
       
        y.reel = cos(x) - 1;
        y.imag = sin(x);

        return y;

}

double  pi=3.1416;

int  main(int argc, char * argv[]){
  float a; /* periode */
  int N; /* Nb points  de l'echantillonnage */
  int n,k; /*pour les fonctions en(x)*/
  int age;
  if (argc==0)
        { printf("Ereur dans les arguments\n");
        exit(0);
        }
    else
        {
            sscanf(argv[1],"%f",&a);
            sscanf(argv[2],"%d",&N);
            sscanf(argv[3],"%d",&n);
            sscanf(argv[4],"%d",&k);
            //a=2pi, N=101, n=4 k=0

        }
       
//      printf("Votre age \n");
//      scanf("%d",&age);
//      printf("Votre age est %d \n ", age);
        printf("Programme de calcul intégrale à partir de la formule des trapèzes ...\n");

  printf (" a:%f\t N:%d\n",a,N);
 
  //formule des traprapèzes appliquée à la fonction f = (exp(x) - 1)/x
 
  int i=0; //i: pour la boucle et
  double t=0.0; //t pour tj
  Complexe F; //On initialise la somme à zéro
  F.reel = 0;
  F.imag = 0;

  for(i=0; i<=N; i++)
  {
          t = i*a/N;
          F = sommecomplexe(f(t), F);
          
          printf("t = %d \n", t);
          printf("i = %d \n", i);
                  
  }
  printf("La valeur de l'intégrale de f entre 0 et a est g : (%d) + i(%d) \n", F.reel, F.imag);
 

  return EXIT_SUCCESS;
}

/Défintion des fonctions complexes

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

#include "complexe.h"

Complexe sommecomplexe(Complexe a,Complexe b)
{
        Complexe res ;
        res.reel = a.reel + b.reel;
        res.imag = a.imag + b.imag;
       

        return res;
}



Complexe multrc(Complexe a,double x) //Multiplication d'un réel par un complexe
{
        a.reel *= x;
        a.imag *= x;

        return a;

}

Complexe conjugue(Complexe a) //complexe conjugué
{
        a.imag = -a.imag;

        return a;

}
Complexe mult(Complexe a ,Complexe b)
{
        Complexe res;
        res.reel = a.reel*b.reel - a.imag*b.imag;
        res.imag = a.reel*b.imag + a.imag*b.reel;

        return res;

}

#include "complexe.h"

Complexe f(double x);
Complexe en(double,double,int);

typedef struct {
  double reel;
  double imag;
} Complexe;

Complexe sommecomplexe(Complexe,Complexe);
Complexe multrc(Complexe,double);
Complexe conjugue(Complexe);
Complexe mult(Complexe ,Complexe);


a:6.280000      N:11
t = 0
i = 0
t = 780903145
i = 1
t = 780903145
i = 2
t = -976128931
i = 3
t = 780903145
i = 4
t = -97612893
i = 5
t = -976128931
i = 6
t = -1854644969
i = 7
t = 780903145
i = 8
t = -1805838522
i = 9
t = -97612893
i = 10
t = 1610612736
i = 11
La valeur de l'intégrale de f entre 0 et a est g : (-1673586720) + i(-1071250745)

Merci de votre aide

Hors ligne

#2 Le 04/10/2006, à 15:16

bertrand0

Re : Un petit problème de maths en C qui ne marche pas (help)

%lf pour un double
%f pour un float
et pas %d

Dernière modification par bertrand0 (Le 04/10/2006, à 15:57)


Ceux qui écrivent comme ils parlent, quoiqu'ils parlent très bien, écrivent mal.
                                                            Buffon, Discours sur le style

Hors ligne