在 matlab 中计算环境物理数据系列的积分

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

下图是一个湖泊的示意图,该方程说明了如何计算湖泊的有效热通量。

enter image description here

其中S是地表通量矢量,q是短波辐射,h是混合层深度,z是湖泊深度。例如:

q0 = 400+(1-400).*rand(100,1); % This is the short wave radiation
kd = 0.8; % extinction coefficient
h = 10; % depth of the surface mixed layer
for i = 1:length(q0); % loop for calculating short wave radiation at depth h
    qh(i) = q0(i).*exp(-kd*h); % here, qh is calculated according to the Lambert Beer law
end

给定

dz = 0.5

和 z 从 0(表面)到深度 h 以 dz 为增量变化,即

z = 0:dz:h

我如何在matlab中计算这个方程的最后部分,即如何计算表面和h之间深度z处的q?这里用积分表示?

如果这应该出现在另一个堆栈溢出论坛上,我表示歉意,但它似乎与编程比纯粹的物理或数学问题更相关。

matlab equation heat symbolic-integration
1个回答
4
投票

要正确积分,您需要计算 [0, h] 范围内的所有 q(z) 值。如果

q0
qh
是 N×1 列向量,这意味着
q
应该是 N×M 矩阵,其中 M 是 [0, h] 范围内的样本点数量。

首先,让我们正确定义

z

z = linspace(0, h, 200); %// M=200, but it's an arbitrary number to your choosing

q
的计算可以简化为:

q = q0 * exp(-kd * z);

qh
实际上等于
q
的最后一列,
q(:, end)

积分本身可以近似为总和并使用

sum
:

进行计算
dz = z(2) - z(1);
I = sum(q, 2) * dz;

附注

由于 q(z) = e(-kd·z),解析计算积分就足够简单了:

I = q0 * (1 - exp(-kd * h)) / kd;
© www.soinside.com 2019 - 2024. All rights reserved.