bonjour,
j'ai une problème lors de l'écriture d'un programme, je souhaite réalisé x^a, cela marche pour x positif mais ne marche pas pour x négatif sortie 'NaN'?
Ligne 30 du programme je sort x et x^expo et pour les valeur négative de x, x^expo est 'NaN'
Toute mes real sont déclaré en double précision, et j utilise le compilateur gfortran.
pour les includes
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
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 Program grounding_line_dinamic c resouldre le model B de la publication de Scholz 2007 implicit none include 'parameter.data' include 'physic_parameter.data' double precision hice(N1),bed_shape(N1),x_gl double precision fbed,fbedl double precision cst_16,solvxg(N1),ii,solxg(4),tmp,expo,tmp2 integer i c#############trouver la position de la grounding line############# c résolution de l'équation 16 cst_16=(((A*(rhoi*g)**(n+1.)*(1.-rhoi/rhow)**n)/(C*4.**n)) # **(1./(m+1.))) print*,'constante : ',cst_16 expo=(n+m+3.)/(m+1.) print*,expo open(1,file='fonction16.data') do i=1,N1 ii=float(i-1) c print*,i,ii*dsig*xmax,fbed(ii*dsig*xmax) tmp=fbedl(ii*dsig*xmax) tmp2=tmp**expo print*,tmp,tmp2 solvxg(i)=cst_16*(rhow/rhoi)**expo # *tmp2-acu*ii*dsig*xmax write(1,*)ii*dsig*xmax,solvxg(i) enddo close(1) c call rootvect(solvxg,solxg) do i=1,4 print*,solxg(i) enddo c fin du programme end c-------------------------------------------------------------------- function fbedl(x) implicit none double precision fbedl,x fbedl=-729.d0+1.11d0*x return end function
parameter.data
physic_parameter.data
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 c N1 step decompositon first part integer N1 parameter(N1=100) double precision dsig,xmax parameter(xmax=1450.,dsig=1./float(N1-1))
quand je fait un petit progamme comme celui-ci pas de problème
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 double precision m,n,rhoi,rhow,g,C,A,acu parameter(g=9.8,C=7.624*10**6,rhoi=900.,rhow=1000.) parameter(acu=0.3,A=4.23*10.**(-25.)) parameter(n=3.,m=1./n)
Merci de votre aide
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 program test implicit none double precision B print*,-729.123**(4.75) end
Partager