Variable n'est pas réincrémenté dans une fonction
Bonjour,
J'ai codé une certaine fonction qui calcule un pH d'une dosage PH-métrique. Dans le module que j'ai écrit pour avoir ma liste de mesures de PH, le vb que je définis n'est pas incrémenté dans la fonction question10 et j'ai "name 'vb' is not defined". J'aimerais connaître ce qui ne fonctionne pas.
Respectueusement,
Nicolas
va1=0.01 #cm**3
va2=0.08 #=va'
ca=0.1 #mol.L**-1
cb=0.10
pKa=4.7 #à 25°C
Ka=10**-4.7
Ke=10**-14
pKe=14 #25°C
global vb
def question10(h):
A=(ca*va1)/(va2+vb)
B=1/(1+h/Ka)
C=Ke/h
D=-(h+(cb*vb)/(va2+vb))
return A*B+C+D
tab_vb=np.arange(0.001E-3, 20E-3, (0.1E-3)/5)
l=len(tab_vb)
PH=[]
for i in range(l):
vb=tab_vb[i]
sol=root(question10,1E-13)
ph=-np.log10(sol.x))
PH.append(ph)
plt.plot(tab_vb, PH)
plt.show()
J'ai codé une certaine fonction qui calcule un pH d'une dosage PH-métrique. Dans le module que j'ai écrit pour avoir ma liste de mesures de PH, le vb que je définis n'est pas incrémenté dans la fonction question10 et j'ai "name 'vb' is not defined". J'aimerais connaître ce qui ne fonctionne pas.
Respectueusement,
Nicolas
va1=0.01 #cm**3
va2=0.08 #=va'
ca=0.1 #mol.L**-1
cb=0.10
pKa=4.7 #à 25°C
Ka=10**-4.7
Ke=10**-14
pKe=14 #25°C
global vb
def question10(h):
A=(ca*va1)/(va2+vb)
B=1/(1+h/Ka)
C=Ke/h
D=-(h+(cb*vb)/(va2+vb))
return A*B+C+D
tab_vb=np.arange(0.001E-3, 20E-3, (0.1E-3)/5)
l=len(tab_vb)
PH=[]
for i in range(l):
vb=tab_vb[i]
sol=root(question10,1E-13)
ph=-np.log10(sol.x))
PH.append(ph)
plt.plot(tab_vb, PH)
plt.show()
1 réponse
-
Contributeurbonjour,
sans les balises de code, ton code est un peu obscur.
d'autant plus que tu ne nous dis pas à quelle ligne tu as le message d'erreur.
je me demande, en tous cas, à quoi sert leglobal
, vu où tu l'as mis.