Ode45函数矩阵维数问题

2次查看(最近30天)
凯里n 'eville
凯里n 'eville 2021年1月8日
编辑: 明星黾 2021年1月8日
你好,朋友们,我写了一个代码。但这行不通。在这个问题中,我有一个带range的参数。我不知道该怎么写。我尝试了一些方法,但没有成功。我需要观察不同的Y_H值对系统的影响。
参数范围:
Y_H = (0.6 - 0.7)
代码
清晰的 所有
clc;
关闭 所有
全球 mu_H Y_H Ks X_BH teta Ss_in
mu_Hmax = 0.15; ^ %天1
T = 22.6; %摄氏
X_BH = 2295; % mg / l
teta = 1.25; %的一天
Y_H = (0.6 - 0.7);
Ks = 250; % mg / l
%初始条件为Ss_in=1127 mg/l
Ss_in = 1127; % mg / l
mu_H = mu_Hmax * 1.072 ^ (T-20); % ^ 1天
Tspan =[30 32 34 36 50 52 57 59 61 63 65 72 75 76 79 83 85 87 89 96 99 106 109 116 118 121 124 125 126 127 131 133 134 135 136 137 140];
数值(@substrate tspan Ss_in)
情节(t, Ss);
包含( 的时间(天)
ylabel ( 的浓度(毫克/升)
传奇( “基质”
函数 导数=底物(t,Ss)
全球 mu_H Y_H Ks X_BH teta Ss_in
导数= - ((mu_H / Y_H) * (Ss / (Ks + Ss)) * X_BH) + ((1 / teta) * (Ss_in-Ss)); % dSs / dt
导数=导数(:);
结束
我有错误
错误使用/
矩阵维数必须一致。
解决modeleqn31>基板的错误(第26行)
导数= - ((mu_H / Y_H) * (Ss / (Ks + Ss)) * X_BH) + ((1 / teta) * (Ss_in-Ss));% dSs / dt
odearguments错误(第90行)
f0 =函数宏指令(颂歌,t0, y0, args {:});% ODE15I设置参数{1}为yp0。
ode45错误(第115行)
odearguments(FcnHandlesUsed, solver_name, ode, tspan, y0, options, varargin);
在Solutionofmodeleqn31中的错误(第18行)
数值(@substrate tspan Ss_in)

答案(2)

艾伦·史蒂文斯
艾伦·史蒂文斯 2021年1月8日
您需要遍历Y_H值。见下文
全球mu_H Ks X_BH teta Ss_in
mu_Hmax = 0.15;^ %天1
T = 22.6;%摄氏
X_BH = 2295;% mg / l
teta = 1.25;%的一天
Y_H = (0.6 - 0.7);
Ks = 250;% mg / l
%初始条件为Ss_in=1127 mg/l
Ss_in = 1127;% mg / l
mu_H = mu_Hmax * 1.072 ^ (T-20);% ^ 1天
Tspan =[30 32 34 36 50 52 57 59 61 63 65 72 75 76 79 83 85 87 89 96 99...
106 109 116 118 121 124 125 126 127 131 133 134 135 136 137 140];
党卫军= 0(元素个数(t)元素个数(Y_H));
%循环Y_H值
i = 1:元素个数(Y_H)
(t, Ss (:, i)) =数值(@ (t, Ss)底物(t, Ss, Y_H(我)),tspan, Ss_in);
结束
情节(t, Ss);
包含(的时间(天)
ylabel (的浓度(毫克/升)
传奇(“基质”
函数导数=底物(~,Ss,Y_H)
全球mu_H Ks X_BH teta Ss_in
导数= - ((mu_H / Y_H) * (Ss / (Ks + Ss)) * X_BH) + ((1 / teta) * (Ss_in-Ss));% dSs / dt
导数=导数(:);
结束

明星黾
明星黾 2021年1月8日
编辑:明星黾 2021年1月8日
不要使用全局变量!
将附加参数作为参数传递给函数,并使用适当的匿名函数调用 数值
试试这个:
mu_Hmax = 0.15;^ %天1
T = 22.6;%摄氏
X_BH = 2295;% mg / l
teta = 1.25;%的一天
Y_H = (0.6 - 0.7);
Ks = 250;% mg / l
%初始条件为Ss_in=1127 mg/l
Ss_in = 1127;% mg / l
mu_H = mu_Hmax * 1.072 ^ (T-20);% ^ 1天
Tspan =[30 32 34 36 50 52 57 59 61 63 65 72 75 76 79 83 85 87 89 96 99 106 109 116 118 121 124 125 126 127 131 133 134 135 136 137 140];
k = 1:元素个数(Y_H)
(电视、科学(:,k)] =数值(@ (t, Ss)衬底(t, Ss, mu_H Y_H (k), Ks, X_BH, teta, Ss_in), tspan, Ss_in);
结束
数字
情节(电视、科学);
包含(的时间(天)
ylabel (的浓度(毫克/升)
网格
传奇(组成('Substrate: Y_H = %.1f', Y_H))
函数导数=底物(t,Ss,u_H, Y_H, Ks, X_BH, teta, Ss_in)
导数= - ((mu_H / Y_H) * (Ss / (Ks + Ss)) * X_BH) + ((1 / teta) * (Ss_in-Ss));% dSs / dt
导数=导数(:);
结束
编辑- (2021年1月8日16:08)
纠正印刷错误。

类别

标签

s manbetx 845


释放

R2020b

社区寻宝

在MATLAB中心找到宝藏,并发现社区如何可以帮助你!

开始狩猎!