Problème avec la variation des paramètres d'une fonction

Fermé
ayoubs Messages postés 8 Date d'inscription mercredi 3 avril 2013 Statut Membre Dernière intervention 20 août 2013 - Modifié par ayoubs le 3/04/2013 à 20:32
Bonjour mes amis,


j'ai un problème qui me dérange vraiment depuis x-temps, c'est le fait que je cherche à varier les paramètres d'une fonction pour avoir une représentation 3D ( variation de x et y et à chaque variation je dois avoir une valeur de H )

j'explique mon programme :
la fonction que je dois calculer est une intégrale, donc dans le programme, j'ai deux fonctions, la première fait la résolution de l'intégrale ( fonction de simpson) et la 2 eme c'est la fonction globale H ... donc moi je cherche à varier 2 paramètres x et y à travers l'introduction d'une boucle (for) , mais je n'ai pas trouvé l'astuce malgré mes essais ... je ne sais pas exactement où introduire cette boucle ( dans la fonction H, ou dans ou dans la fonction main etc .. les modifications à faire ds le programme etc..) sachant que je ne suis pas d'origine informaticien

j'apprécie normalement votre aide mes amis.

voila mon programme ( sachant que le programme d'origine c a dire sans variation de x et y donne des résultats corrects):

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include<iostream>
#include<conio.h>
#include<string.h>
using namespace std;

double f(double z,int x,int y);
double simpson(double a,double b,long n,int x,int y);


main()
{
int i,x,y;
long n;
double a,b,som;
double L,w;
n=10000;
a=0;
b=1;


cout<<" Solution "<<endl<<endl;


for (x=(-w/2);x<=(w/2);x=x+50)
{
for (y=(-L/2);y<=(L/2);y=y+50)
{
som=simpson(a,b,n,x,y);
cout<<" x ="<<x<< " y ="<<y<<" H = "<<som<<endl<<endl;
}
}

system("pause");
}

// ****************** Fonction H ********************************************

double f(double z, int x, int y)
{
double U1,U2,U3,U4;
double L,w,R,S,T,t;

L=200;
w=200;
t=30;
R=2;
T=2500;
S=0.2;


U1 = ((x-(w/2))/((4*T)/(S*t)));
U2 = ((x+(w/2))/((4*T)/(S*t)));
U3 = ((y-(L/2))/((4*T)/(S*t)));
U4 = ((y+(L/2))/((4*T)/(S*t)));

if ( x==w/2 && y==L/2 )

return (((R*t)/(4*S))*((erf(U2/sqrt(z)))*(erf(U4/sqrt(z)))));

else
if ( x==w/2 && y!=L/2 )
return ((R*t)/(4*S))*((erf(U2/sqrt(z)))*(erf(U4/sqrt(z))-erf(U3/sqrt(z))));
else
if ( x!=w/2 && y==L/2 )
return (((R*t)/(4*S))*((erf(U2/sqrt(z))-erf(U1/sqrt(z)))*(erf(U4/sqrt(z)))));
else
return ((R*t)/(4*S))*((erf(U2/sqrt(z))-erf(U1/sqrt(z)))*(erf(U4/sqrt(z))-erf(U3/sqrt(z))));
}

//************************** Fonction de Simpson pour Calcul intégrale *********************************

double simpson(double a,double b,long n,int x,int y)
{
long i;
double h,som,z;
h=(b-a)/n;
som=f(a,x,y)+f(b,x,y);
z=a;
for(i=1;i<=n-1;i++)
{
z += h;
if (fmod(i,2)==1)
som += 4*f(z,x,y);
else som += 2*f(z,x,y);
}
return(som*h/3);
}