Bonjour,
J ai devant moi a calculer la fonction de Bessel J0 pour un X donner et d arreter le programme quand le nouveau terme de la somme soit inferieur a 0.00001*(le terme totale),
Mais quand je la donne une valeur X , la reponse est NAN, alors ou est le truc? merci
voila le code
Je rappel que J0(X)=somme(i=1,infini) (-1)^i/(i!)^2*(x/2)^(2*i)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
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 program bessel real X,J print*,'donner X' read*,X CALL BESSELO(X,J) print*,'J0(X)=',J end SUBROUTINE BESSELO(Y,K) real Y,K K=0 do i=1,10000 K=K+((-1)**i)*((Y/2)**(2*i))/(fact(i))**2 if (abs(K).LT.K) exit enddo end function fact(m) real fact integer m, p p = 1 do i = 1, m p = p * i end do fact = p end
Partager