Variable n'est pas réincrémenté dans une fonction
BigDeal589
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention -
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
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
bonjour,
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.