Мне нужно решить следующую систему дифференциальных уравнений:
$\frac{dx_1}{dt} = -k_1x_1+k_2x_2-(K_R)x_1y_1$
$\frac{dx_2}{dt} = k_1x_1-k_2x_2-k_3x_2-(K_R)x_2y_2$
$\frac{dx_3}{dt} = k_3x_3$
$\frac{dy_1}{dt} = -k_1y_1+k_2y_2-(K_R)x_1y_1$
$\frac{dy_2}{dt} = k_1y_1-k_2y_2-k_3y_2-(K_R)x_2y_2$
$\frac{dy_3}{dt} = k_3y_3$
$\frac{dz_1}{dt} = -k_1z_1+k_2z_2+(K_R)x_1y_1$
$\frac{dz_2}{dt} = k_1z_1-k_2z_2-k_3z_2+(K_R)x_2y_2$
$\frac{dz_3}{dt} = k_3z_3$
Начальные условия при t = 0, x2 = 1. И в момент времени t = 1, соединение y вводится в y2 компартмент, y2 = 10. Значение KR равно 1e-3.
Я решил гораздо более простую систему с использованием возведения в степень матрицы, и мне было интересно, возможно ли решить вышеуказанную систему с использованием аналогичного подхода .
У меня есть секционная модель системы X, упрощенная версия которой выглядит следующим образом:
Система дифференциала уравнения тогда:
Я могу решить эту систему уравнений, используя следующий матричный подход.
Сначала я пишу скорость матрица [R]. Из [R] можно получить новую матрицу [A], сначала заменив каждый диагональный элемент [R] на отрицательную сумму суммы каждого из элементов строки, а затем транспонировав ее:
Я могу рассчитать сумму в каждом отсеке, выполнив следующие действия:
In python:
RMatrix = model_matrix.as_matrix()
row, col = np.diag_indices_from(RMatrix)
RMatrix[row, col] = -(RMatrix.sum(axis=1)-RMatrix[row,col])
AMatrix = RMatrix.T
def content(t):
cont = np.dot(linalg.expm(t*AMatrix), x0))
Этот метод хорошо работает для меня.
Модель выше (первоначальный вопрос) немного сложнее, чем просто система X. В этой модели реагенты в отделения 1 и 2 систем X и Y объединяются для получения продукта в системе Z.
X + Y -> Z с константой реакции KR.
, и соответствующая система дифференциальных уравнений будет иметь вид:
Я борюсь с методом, чтобы решить эту проблему Система дифференциальных уравнений (1-го и 2-го порядка) для расчета суммы в каждом отсеке в определенный момент времени t, учитывая исходное условие ns, KR и скорости передачи k1, k2, k3 и т. д. c ...
Могу ли я решить эту проблему, используя матричный метод, подобный приведенному выше, для системы дифференциальных уравнений первого порядка? Какие еще опции в Python у меня есть?
Заранее спасибо!