Решение системы ОДУ с использованием SympyPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Решение системы ОДУ с использованием Sympy

Сообщение Anonymous »

Рассмотрим следующий код:

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

import sympy as sy
import scipy as sc
from sympy.physics.units.quantities import Quantity
from sympy.solvers.ode.systems import dsolve_system

from IPython.display import display
from sympy import init_printing

sy.init_printing()

t=sy.Symbol('t',real=True,positive=True)
kF=sy.Symbol('k_{F}',real=True,positive=True)
kR=sy.Symbol('k_{R}',real=True,positive=True)
kG=sy.Symbol('k_{G}',real=True,positive=True)
kH=sy.Symbol('k_{H}',real=True,positive=True)

G=sy.Function('G')
H=sy.Function('H')

eq1=sy.Eq(sy.Derivative(G(t),t),-kG*G(t)-kR*G(t)+kF*H(t))
eq2=sy.Eq(sy.Derivative(H(t),t),-kH*H(t)-kF*H(t)+kR*G(t))

system1=(eq1,eq2)
solution1=dsolve_system(eqs=system1,funcs=[G(t),H(t)],t=t,ics={G(0):1,H(0):0})
print(solution1)
Это приводимая связанная линейная система, которую я могу решить вручную. Я пытаюсь использовать Sympy для перекрестной проверки своей работы, учитывая, что постоянные префакторы для различных терминов в окончательных формах G и H довольно сложны.
Я получаю очень большое выражение, но в форме уравнения. Как мне упростить его с помощью Sympy и получить выражения для G и H?

Подробнее здесь: https://stackoverflow.com/questions/793 ... sing-sympy
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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