Bonjour,
Voilà j'ai écris un petit programme en langage C, un peu bourrin peut être, (car je ne suis pas informaticien de base) dont le but est de calculer des integrales doubles d'une fonction (de façon élémentaire). En sachant que je ne connait que les valeurs de la fonction en certains points mais pas la forme analytique de la fonction. Apparemment ça compile sans problème et au moment d'executer il y a un bug (segmentation fault) et je ne vois pas o`u il se trouve. J'ai bien essayé de regarder si je ne dépassais pas les limites du tableau mais je ne crois pas et donc je suis un peu perdu
Est ce qu'une âme charitable pourrait m'aider svp !
Merci d'avance pour vos réponses
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
main(){
FILE *fp,*fs,*fl;
fp=fopen("energie.txt","r");
fs=fopen("SEIcylindre_sphere.t xt","w");
fl=fopen("test.txt","w");
float domaine=40.,*E,dx=0.05,x,y,a_1 =10.,a_2=10.,D,dy=0.05,I_1=0., I_2=0.,I_3=0.,I_4=0.,I;
int i,j,k,l,N;
N=(int)(domaine/dx);
E=(float *)malloc(N*sizeof(float));
for(i=0;i<N;i++){
E[i]=0.;
}
i=0.;
while((j=fgetc(fp))!=EOF){
fscanf(fp,"%f",&E[i]);
i++;
}
/* for(i=0;i<N;i++){
fprintf(fl,"%f\n", E[i]);
}*/
/*jusqu'ici OK*/
for(D=0.05;D<20;D+=0.1){
for(x=0;x<a_1;x+=dx){
for(y=0;y<sqrt(a_1*a_1-y*y);y+=dy){
i=(int)((D+a_2+a_1+a_2*sqrt(1-(y/a_2)*(y/a_2))+a_1*sqrt(1-(y/a_1)*(y/a_1)-(x/a_1)*(x/a_1)))/dx);
j=(int)((D+a_2+a_1-a_2*sqrt(1-(y/a_2)*(y/a_2))-a_1*sqrt(1-(y/a_1)*(y/a_1)-(x/a_1)*(x/a_1)))/dx);
k=(int)((D+a_2+a_1+a_2*sqrt(1-(y/a_2)*(y/a_2))-a_1*sqrt(1-(y/a_1)*(y/a_1)-(x/a_1)*(x/a_1)))/dx);
l=(int)((D+a_2+a_1-a_2*sqrt(1-(y/a_2)*(y/a_2))+a_1*sqrt(1-(y/a_1)*(y/a_1)-(x/a_1)*(x/a_1)))/dx);
I_1+=sqrt(1-(y/a_2)*(y/a_2))*E[i]*dx*dy;
I_2+=sqrt(1-(y/a_2)*(y/a_2))*E[j]*dx*dy;
I_3+=sqrt(1-(y/a_2)*(y/a_2))*E[k]*dx*dy;
I_4+=sqrt(1-(y/a_2)*(y/a_2))*E[l]*dx*dy;
fprintf(fl,"%d\t%d\t%d\t%d\t%f \t%f\t%f\t%f\t%f\t%f\n", i,j,k,l,I_1,I_2,I_3,I_4,x,y);
}
}
I=4*(I_1+I_2-I_3-I_4);
fprintf(fs,"%f\t%f\n", D,I);
I_1=0.,I_2=0.,I_3=0.,I_4=0.;
}
free(E),fclose(fs),fclose(fp);
}
-----