Mam do napisania pracę w pythonie, przy próbie wywołania funkcji z pętlą wyrzuca mi błąd którego nie rozumiem:
IndexError Traceback (most recent call last)
<ipython-input-20-e65022459895> in <module>()
106 return wynik_Ts , wynik_Twater_out, wynik_q_eq
107
--> 108 wynik_Ts, wynik_Twater_out, wynik_q_eq = TempRange(100)
109
110
<ipython-input-20-e65022459895> in TempRange(t)
100 Ts += TempRate(wynik_Twater_out[-1] + 273.15, dq_dt, wynik_q_eq[-1], dt)
101
--> 102 wynik_Ts[dt] = round(Ts - 273.15, 2)
103 wynik_q_eq[dt] = round(q_equilibrium(Ts), 2)
104 wynik_Twater_out[dt] = round(TempWaterOut(Ts), 2)
IndexError: list assignment index out of range
kod
def q_equilibrium(Ts):
A_Ts = A0 + A1*Ts + A2*Ts**2 + A3*Ts**3
B_Ts = B0 + B1*Ts + B2*Ts**2 + B3*Ts**3
q_eq = A_Ts*pow(Ps_Tw/Antoine(Ts),B_Ts)
return q_eq
def SorptionRate(Ts, q, q_start, i):
ksap = 15*Dso*math.exp(-Ea/(R*(Ts)))/(Rp**2) # 1/s
dq_dt = ksap*(q - q_start)*i
return dq_dt
def TempWaterOut(Ts):
Twater_out = (Ts + (Twater_in - Ts)*math.exp(-Kad*Ahex/(mw*Cpw))) - 273.15 # K
return Twater_out
def TempRate(Twater_out, dq_dt, q, i):
dTad_dt = ((Qst*Ws*dq_dt) + mw*Cpw*(Twater_in - Twater_out))/(Ws*(Cps + Cpw*q) + (Cp_Cu*Wk_Hex + Cp_Al*Wf_Hex))*i
return dTad_dt
def TempRange(t):
wynik_Ts = []
wynik_Twater_out = []
wynik_q_eq = []
Ts = 31 + 273.15
wynik_Ts.append(round(Ts - 273.15, 2))
wynik_Twater_out.append(round(TempWaterOut(Ts), 2))
wynik_q_eq.append(round(q_equilibrium(Ts), 2))
for dt in range (1, t):
#if dt <= 30:
dq_dt = 0
#else:
# q_start = q_equilibrium(wynik_Ts[-2] + 273.15)
# dq_dt = SorptionRate(Ts, wynik_q_eq[-1], q_start)
Ts += TempRate(wynik_Twater_out[-1] + 273.15, dq_dt, wynik_q_eq[-1], dt)
wynik_Ts[dt] = round(Ts - 273.15, 2)
wynik_q_eq[dt] = round(q_equilibrium(Ts), 2)
wynik_Twater_out[dt] = round(TempWaterOut(Ts), 2)
return wynik_Ts , wynik_Twater_out, wynik_q_eq
wynik_Ts, wynik_Twater_out, wynik_q_eq = TempRange(100)
print wynik_Ts
Proszę o pomoc ponieważ to moje początki z programowniem