首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用MATLAB求解不同阶段生物反应器的同时二阶ODE

用MATLAB求解不同阶段生物反应器的同时二阶ODE
EN

Stack Overflow用户
提问于 2018-03-28 14:55:27
回答 1查看 259关注 0票数 2

我试图求解同时存在的二阶微分方程,以求生物反应器不同阶段示踪剂(分子)的浓度。各阶段按顺序排列。

上下文:我们正在工作的生物反应器是一个旋转生物承包商。这是一个举例说明。,示踪分子在第一阶段被注入,在时间上,t=0,我们的目的是找出示踪分子的浓度是如何随时间而变化的。

我们正在使用的二阶ODE可以在这里找到:https://imgur.com/a/KS4Od

我试着把方程简化为4个阶段(第二和第三张图),并尝试用MATLAB进行求解。这是它的代码:

代码语言:javascript
复制
 P2 = 1; P3 = 5; C0 = 30; P4 = 2;

f = @(t,x)[x(2); (C0+P4*x(7)-x(1)-P3*x(2))/P2;
          x(4); (x(1)-x(3)-P3*x(4))/P2;
          x(6); (x(3)-x(5)-P3*x(6))/P2;
          x(8); (x(5)-x(7)-P3*x(8))/P2];

t= linspace(0,40); init = [0 0 0 0 0 0 0 0];

[t Y] = ode45(f,t,init);

plot(t,Y(:,1),'r-',t,Y(:,3),'b-',t,Y(:,5),'k-',t,Y(:,7),'m-')

legend('C1','C2','C3','C4')

我们的目的是了解第四阶段的浓度变化情况。它应该看起来像这个停留时间分布或类似的东西。

我需要知道是否有可能使用"for循环“的"n”级串联和求解方程。理想情况下,只有输入应该是否。阶段,时间间隔,初始浓度和常数。假设常量的任何值,初始conc。和时间间隔。

有人能帮我解决这个问题吗?我非常感谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-28 19:10:55

不要使用f的匿名/lambda定义,而是使用一个更传统的函数,它允许您使用循环。

代码语言:javascript
复制
n = 4
function dotx = f(t,x)
    dotx = zeros(2*n,1)
    dotx(1) = x(2);
    dotx(2) = (C0+P4*x(7)-x(1)-P3*x(2))/P2
    for k = 2:n
        dotx(2*k-1) = x(2*k)
        dotx(2*k) = (x(2*k-3)-x(2*k-1)-P3*x(2*k))/P2
    end
end

init = zeros(2*n,1)

您可能必须更改x, dotx的行/列格式。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49537842

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档