Не получается правильное решение с помощьюsolve_ivpPython

Программы на Python
Anonymous
Не получается правильное решение с помощьюsolve_ivp

Сообщение Anonymous »

Я пытаюсь решить дифференциальное уравнение с помощью solve_ivp, но не получаю правильного решения. Однако я нашел правильное решение, используя ideint. Есть ли у меня проблемы с программойsolve_ipv?
Программа ODEINT:
# Arhenius Function
def Arhenius(a, T):
dadT = np.exp(lnA)/v * np.exp(- E / (8.3144 * T)) * c * np.abs(a) ** m * np.abs((1 - np.abs(a))) ** n
return dadT

# Initial data
pt = 100000
T0 = 273
Tf = 1500
a0 = 0.0000000001
T = np.linspace(T0, Tf, pt)

a_sol = np.zeros(pt)
dadt = np.zeros(pt)

# ODE solve
a_t = odeint(Arhenius, a0, T)

# For removing errored values and have maximum at 1
search1 = np.where(np.isclose(a_t, 1))
try:
ia_1 = search1[0][0]
a_sol[0,:] = a_t[:,0]
a_sol[0,ia_1+1:pt] = 1
except:
a_sol = a_t[:,0]

# Calculate the new derivative
dadt = np.exp(lnA) * np.exp(- E / (8.3144 * T)) * c * np.abs(a_sol) ** m * np.abs((1 - a_sol)) ** n

ПРОГРАММА сsolve_ivp:
# Arhenius Function
def Arhenius(a, T):
dadT = np.exp(lnA) * np.exp(- E / (8.3144 * T)) * c * np.abs(a) ** m * np.abs((1 - np.abs(a))) ** n
return dadT

# Initial data
pt = 100000
T0 = 273
Tf = 1500
a0 = 0.0000000001
T = np.linspace(T0, Tf, pt)

a_sol = np.zeros(pt)
dadt = np.zeros(pt)

# ODE solve
a_t = solve_ivp(Arhenius, t_span = (T0, Tf), y0 = (a0,), t_eval = T, method = 'RK45')
a_sol= a_t.y

# Calculate the new derivative
dadt = np.exp(lnA) * np.exp(- E / (8.3144 * T)) * c * np.abs(a_sol) ** m * np.abs((1 - a_sol)) ** n


Подробнее здесь: https://stackoverflow.com/questions/651 ... -solve-ivp

Вернуться в «Python»