Как лучше всего решить нелинейную кинетическую задачу с помощью Python?Python

Программы на Python
Ответить
Anonymous
 Как лучше всего решить нелинейную кинетическую задачу с помощью Python?

Сообщение Anonymous »

У меня есть задача по химической кинетике, в которой участвуют несколько видов, способных переносить электроны между собой. Я могу описать кинетику с помощью системы пяти дифференциальных уравнений.
Я пытаюсь подогнать модель к спектроскопическим данным с временным разрешением. Я считаю, что эту систему следует решать аналитически, поэтому я пытаюсь решить ее с помощью dsolve Sympy:

Код: Выделить всё

from sympy import *

# Assumptions: Since the concentration of Ascn remains practically constant, [Ascn] is absorbed into k1

Ru2p, Rup, Asc, Rep, Re = symbols('Ru2p Rup Asc Rep Re', cls=Function)

Rep0, t, k1, k2, k3, k4 = symbols('Rep0 t k1 k2 k3 k4')

eq1 = Eq(diff(Ru2p(t)), -k1*Ru2p(t))
eq2 = Eq(diff(Rup(t)), k1*Ru2p(t) - k2*Rup(t)*Asc(t) - k3*Rup(t)*Rep(t))
eq3 = Eq(diff(Asc(t)), k1*Ru2p(t) - k2*Rup(t)*Asc(t)-k4*Asc(t)*Re(t))
eq4 = Eq(diff(Rep(t)), -k3*Rup(t)*Rep(t) + k4*Asc(t)*Re(t))
eq5 = Eq(diff(Re(t)), k3*Rup(t)*Rep(t) - k4*Asc(t)*Re(t))

system = [eq1, eq2, eq3, eq4, eq5]
ics = {Ru2p(0):1,Rup(0):0,Asc(0):0,Rep(0):Rep0,Re(0):0}

solution = dsolve(system,[Ru2p(t),Rup(t),Asc(t),Rep(t),Re(t)],ics=ics)
print(solution)
Выполнение этого результата:

Код: Выделить всё

Traceback (most recent call last):
File "Ruthenium.py", line 19, in 
solution = dsolve(system,[Ru2p(t),Rup(t),Asc(t),Rep(t),Re(t)],ics=ics)
File "/home/max/.local/lib/python3.6/site-packages/sympy/solvers/ode/ode.py", line 599, in dsolve
raise NotImplementedError
NotImplementedError
Мне не ясно, что именно не реализовано, поэтому я не знаю, каково текущее ограничение этого метода, для которого мне нужно найти решение. Я был бы признателен, если бы кто-нибудь дал мне несколько советов о том, как я могу решить эту систему, желательно с помощью Python.

Подробнее здесь: https://stackoverflow.com/questions/668 ... ing-python
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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