Я хочу решить эту систему уравнений, повторяя одно из начальных условий - PullRequest
0 голосов
/ 25 сентября 2019

Я хочу решить систему из трех дифференциальных уравнений, изменяет начальные условия

import numpy as np
import matplotlib.pyplot as plt
from scipy.integrate import solve_ivp 

#__________________________Condiciones Problema ________________________
#Constants that are use in the problem
Yxs    = 0.06
Yxp    = 0.06
Umax   = 0.24
Ks     = 1.6
Cpm    = 100
n      = 2    
#Function to solve de ODE

def fermentation_process(C,t):
    Cx , Cs , Cp = C
    U      = (Umax*((Cs/(Ks+Cs))*(1-(Cp/Cpm)))**n)
    rx     =  U*Cx
    rs     = -(1/Yxs)*(rx)
    rp     =  (1/Yxp)*(rx)
    dCx_dt = rx 
    dCs_dt = rs 
    dCp_dt = rp
    return [dCx_dt,dCs_dt,dCp_dt]
#________________________Initial condition_____________________
Cx0   = 0.1
Cp0   = 0
#________________________Iterable intial Condition______

Я сохраняю начальные условия в функции, чтобы использовать эту функцию в бугле для

#Fuction to save the inintial conditions
def ini(Cs0):
    return np.array([Cx0,Cs0,Cp0])

t_lim = (0,60)
Cs0   = 0

Bucle для оценки переменного начального условия Cs0

for i in range(5):
    Cs0 += 10
    sol = solve_ivp(fermentation_process, ini(Cs0), t_lim)
    Tiempo = sol.t
    concentraciones = sol.y 
    figure, axis = plt.subplots()
    plt.plot(Tiempo, concentraciones[0])
    plt.plot(Tiempo, concentraciones[2])
plt.show()

Полученная мной ошибка:

Файл "C: /Users/Paula/.spyder-py3/Sintítulo0.py ", строка 50, в fermentation_process Cx, Cs, Cp = C

Ошибка типа: невозможно распаковать не повторяемый объект с плавающей точкой

1 Ответ

0 голосов
/ 25 сентября 2019

Пожалуйста, обновите приведенную ниже функцию (поскольку мы не можем назначить массив нескольким переменным)

def fermentation_process(C,t):
    Cx , Cs , Cp = C[0], C[1], C[2]

(или)

def fermentation_process(C,t):
    Cx = C[0]
    Cs = C[1]
    Cp = C[2] 
...