Fare un grafico con calcolo iterativo
« il: Ottobre 22, 2019, 15:44 »
Buongiorno a tutti, premetto che sono super principiante nella programmazione ma volevo fare un grafico che mi andasse a mettere su un asse dei valori in un intervallo che voglio io mentre nell'altro il risultato di un calcolo iterativo su 6 equazioni. per maggiore chiarezza allego quanto fatto, e avrei bisogno di andare a mettere in grafico Xo rispetto ad un Ta in un intervallo definito. Grazie mille


import math
import matplotlib.pyplot as plt
Cpa=1.0
Tref=0.0
lamb=2500.0
Cpv=1.8
Cpl=4.186
Patm=101300
TSS=0.4
F=1.0
Fl=F*(1.0-TSS)
Fs=F*TSS
Cps=1.5
Tin=55.0
Xi=Fl/Fs
G=15.0
Ta=200 -------> da cambiare con un range
Yi=0.01
Fas=G*(1/(1+Yi))
Ha=Cpa*(Ta-Tref)+Yi*(lamb+Cpv*(Ta-Tref)) #entalpie
Hl=Cpl*(Tin-Tref)
Hs=Cps*(Tin-Tref)
Ein=(Ha*Fas)+(Hl*Fl)+(Hs*Fs)
print ("energia in ingresso=", Ein)
toll=0.0001
Nmax=100.0
Xo=0.5
N=1.0
test=1.0
To=0.0
while abs(test)>toll:
X=Xo
Yo=Yi+((Fs/Fas)*(Xi-Xo)) #usare o questa riga o quella sotto, meglio dopo aver fatto un minimo di bilanci di massa
To=Tref+((Ein-(Fas*Yo*lamb))/(Fs*(Cps+Xo*Cpl)+Fas*(1.0+Cpv*Yo)))
Pv=((Yo/0.622)*Patm)/(1.0+(Yo/0.622))
Psat=133.3*math.exp(18.3036-(3816.44/(To+229.02)))
RU=Pv/Psat
Xo = 0.1499*math.exp((-2.306*10**(-3))*(To+273.15)*(math.log(1/RU))) #SPS
N=N+1
test=abs(1.0-(X/Xo))
else:
print("N =", N)
print("To =", To)
print("Yo =", Yo) ---------> da prendere come altro asse
print("Xo =", Xo)
print("Pv =", Pv)
print("Psat =", Psat)
print("RU =", RU)
plt.plot(Ta, Xo)
plt.title('Temperatura vs. Umidità polvere')
plt.xlabel('Ta')
plt.ylabel('Xo')
plt.show()