дана система дифференциальных уравнений, таких как:MATLAB система зависимых дифференциальных уравнений
dy/dt = f(t)
dx/dt = g(t)
Решение может быть найдено с помощью dsolve, таких как:
dsolve(diff(y) == f(t), diff(x) == g(t), y(0) == 1, x(0) == 1);
Но что в системе, где все переменные зависят друг от друга:
dy/dt = f(y,z)
dx/dt = g(x,y)
dz/dt = h(z,x)
При приближении к тому же, с начальными условиями, для системы, которая имеет решение, я не могу найти решение.
Я знаю, что система, которую я пробовал, может создавать решения, поскольку я использовал стохастический/детерминированный симулятор - думаю, что, возможно, существует какой-то странный синтаксис.
Я специально ищу решение, где производные все равны нулю, если это помогает.
РЕДАКТИРОВАТЬ:
Вот пример:
PX/dt = (k_tl*(a0_tr + ((a_tr*KM^n)/((KM^n) + (PZ^n))))/kd_mRNA)-kd_prot*PX;
PY/dt = (k_tl*(a0_tr + ((a_tr*KM^n)/((KM^n) + (PX^n))))/kd_mRNA)-kd_prot*PY;
PZ/dt = (k_tl*(a0_tr + ((a_tr*KM^n)/((KM^n) + (PY^n))))/kd_mRNA)-kd_prot*PZ;
с коэффициентами:
eff = 20;
KM = 40;
tau_mRNA=2.0;
tau_prot=10;
ps_a=0.5;
ps_0=5.0E-4;
t_ave = tau_mRNA/log(2);
k_tl=eff/t_ave;
a_tr=(ps_a-ps_0)*60;
a0_tr=ps_0*60;
kd_mRNA = log(2)/tau_mRNA;
kd_prot = log(2)/tau_prot;
beta = tau_mRNA/tau_prot;
alpha = a_tr*eff*tau_prot/(log(2)*KM);
alpha0 = a0_tr*eff*tau_prot/(log(2)*KM);
n=2;
И начальные условия:
PX0 = 20;
PY0 = 0;
PZ0 = 0;
Это дает ответ:
Это, очевидно, имеет стационарное решение (все производные 0).
В MATLAB я пробовал:
%%
syms PX(t) PY(t) PZ(t);
z = dsolve(diff(PX) == (k_tl*(a0_tr + ((a_tr*KM^n)/((KM^n) + (PZ^n))))/kd_mRNA)-kd_prot*PX, diff(PY) == (k_tl*(a0_tr + ((a_tr*KM^n)/((KM^n) + (PX^n))))/kd_mRNA)-kd_prot*PY, diff(PZ)==(k_tl*(a0_tr + ((a_tr*KM^n)/((KM^n) + (PY^n))))/kd_mRNA)-kd_prot*PZ,PX(0)==20)
и:
%%
eq1 = (k_tl*(a0_tr + ((a_tr*KM^n)/((KM^n) + (PZ^n))))/kd_mRNA)-kd_prot*PX;
eq2 = (k_tl*(a0_tr + ((a_tr*KM^n)/((KM^n) + (PX^n))))/kd_mRNA)-kd_prot*PY;
eq3 = (k_tl*(a0_tr + ((a_tr*KM^n)/((KM^n) + (PY^n))))/kd_mRNA)-kd_prot*PZ;
dsolve(diff(PX)==eq1,PX(0)==20,diff(PY)==eq2,PY(0)==0,diff(PZ)==eq3,PZ(0)==0)
Оба не производят никаких ошибок, но возвращать пустой SYM.
«Когда подошли таким же образом, с начальными условиями для системы, которая действительно имеет решение, Я не могу найти решение. Вы собираетесь поделиться этой системой, и это решение с нами? Когда вы говорите «может создавать решения», вы имеете в виду, что система имеет аналитические решения или что вы смогли ее решить численно? Вы должны сделать свой вопрос более конкретным. Покажите свой реальный код, чтобы другие могли реплицировать вашу проблему. – horchler
Обновлено с примерами. – user2290362