2

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

在此处输入图像描述

其中 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 以 dz 为增量从 0(表面)到深度 h 变化,即

z = 0:dz:h

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

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

4

1 回答 1

4

为了正确整合,您需要计算[0, h] 范围内的所有q ( z ) 值。如果q0qh是 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 (- k d · z ),您可以很简单地分析计算积分:

I = q0 * (1 - exp(-kd * h)) / kd;
于 2013-01-21T12:32:37.167 回答