如何在 MATLAB 中积分微分方程?

问题描述 投票:0回答:1

我想对微分方程 dc/dt 进行积分。下面是代码和变量的值。

clear all;
c1=.185;c0=2*10^-6;k3=.1*10^-6;
v1=6;v2=.11;v3=.09*10^-6;
Ca_ER=10*10^-6;Ca_cyto=1.7*10^-6;
p_open3=0.15;c=15*10^-6;
dcdt= (c1*(v1*(p_open3)+v2)*(Ca_ER)-c)-v3*((c)^2)/(c^2+(k3)^2);

我知道有一个积分函数,但我不知道如何应用这个方程。我该如何继续?请帮忙。如果需要,初始c的值可以取0.15*10^-6。另外,我需要绘制获得的结果与时间的关系图。那么会得到一个值数组还是只是一个值?

文章链接。我使用的方程属于钙振荡部分

matlab ode differential-equations numerical-integration integral
1个回答
1
投票

您可以使用欧拉方法来解决这个问题,以获得一个粗略的想法,但不准确。

clear all
clc

t = 0;
dt = 0.0001;
c1 = 0.185;
c0 = 2*10^-6;
k3 = 0.1*10^-6;
v1 =6;
v2 =.11;
v3 =.09*10^-6;
Ca_ER =10*10^-6;
Ca_cyto =1.7*10^-6;
p_open3 =0.15;
c = 15*10^-6;

%store initial values
C(1) = c;
T(1) = t;

for i = 1:40000
    dc = ( (c1*(v1*(p_open3)+v2)*(Ca_ER)-c)- v3*( c^2 /( c^2+(k3)^2) ) );
     c = c + dt*dc;
    t  = t + dt;

    %store data
    C(i+1) = c;
    T(i+1) = t;
end

plot(T,C, 'LineWidth',2)
xlabel('time (sec)')
ylabel('c(t)')
grid on

结果是

enter image description here

您还可以使用 Wolfram 给出相同的结果。

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.