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 は 0 (表面) から深さ h まで dz の増分で変化します。

z = 0:dz:h

matlab でこの方程式の最後の部分を計算するにはどうすればよいですか。つまり、表面と h の間の深さ z で q を計算する方法を教えてください。ここで積分として表されるのはどれですか?

これが別のスタック オーバーフロー フォーラムにある場合は申し訳ありませんが、純粋な物理学や数学の質問よりもプログラミングに関連しているようです。

4

1 に答える 1

4

これを正しく統合するには、範囲 [0, h] 内のq ( z ) のすべての値を計算する必要があります。q0およびqhが N 行 1 列の列ベクトルである場合、これは が N 行 M 列の行列であることを意味しますq。ここで、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;

PS

q ( z ) = e (- k d · z )であるため、積分を分析的に計算するのは簡単です。

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