餌と捕食者の関係

物理情報数学Bで,行列の累乗の応用例として,餌と捕食者の関係を表す行列差分方程式を説明しています.

「第k年のイワシの数をx_1(k),クジラの数をx_2(k)とする.クジラがいないときの1年後のイワシの数を\alpha x_1(k)とする.つまり,第k年のイワシの数に比例して変化する.クジラに1年間に食べられるイワシの数を\beta x_2(k)とする.つまり,クジラの数に比例するイワシが食べられる.イワシがいないときの1年後のクジラの数を\gamma x_2(k)とする.また,イワシを食べて1年間に増加するクジラの数を\delta x_1(k)とする.」

上記の関係を行列差分方程式で表すと

   \left[\begin{array}{c}x_1(k+1) \\x_2(k+2)\end{array}\right]   =   \left[\begin{array}{rr}\alpha & -\beta \\ \delta & \gamma\end{array}\right]   \left[\begin{array}{c}x_1(k) \\x_2(k)\end{array}\right]

になります.一般解は

\boldsymbol{x}(k) = \left[\begin{array}{rr}\alpha & -\beta \\ \delta & \gamma\end{array}\right]^k\boldsymbol{x}(0)

になります.

この行列差分方程式を講義では手計算で解けるように,\alpha=1.5\beta=0.25\gamma=1.1\delta=0.07として解きます.しかし,この行列の固有値は1以上の実数が2つですので,餌と捕食者の数の変化に期待される振動的な振る舞いにはなりません.初期値のクジラの数が多いと,下図のようにイワシの数は減少に転じます.

Graph0
餌と捕食者の数(x1(0)=100,x2(0)=150)

餌と捕食者の関係のモデルとしては,ロトカ・ボルテラのモデルが知られています.このモデルでは,

   \displaystyle\frac{dx_1(t)}{dt} = \alpha x_1(t) - \beta x_1(t)x_2(t) \\   \displaystyle\frac{dx_2(t)}{dt} = \delta x_1(t)x_2(t) - \gamma x_2(t)

で表されます.非線形微分方程式ですから,x_1(t)x_2(t)を解析的に求めることはできません.適当な値を代入して数値解を求めると,x_1(t)x_2(t)が振動的な振る舞いをすることがわかります.

また,平衡点はdx_1(t)/dt=0dx_2(t)/dt=0から,原点とx_1=\gamma/\deltax_2=\alpha/\betaにあります.平衡点近傍では,x_1(t)x_2(t)の項が小さいので無視できると仮定すると,(0, 0)の平衡点近傍では,

   \displaystyle\frac{d}{dt}\left[\begin{array}{c}x_1(t) \\x_2(t)\end{array}\right]   =   \left[\begin{array}{rr}\alpha & 0 \\   0 & -\gamma\end{array}\right]   \left[\begin{array}{c}x_1(t) \\x_2(t)\end{array}\right]

となり,行列の固有値は実数で1つは正でもう1つは負です.したがって,(0, 0)は鞍点です.

また,もう1つの平衡点(\gamma/\delta, \alpha/\beta)の近傍では,x_1(t)x_1+\gamma/\deltax_2(t)x_2+\alpha/\betaとおいて,x_1(t)x_2(t)の項が小さいので無視できると仮定すると

   \displaystyle\frac{d}{dt}\left[\begin{array}{c}x_1(t) \\x_2(t)\end{array}\right]   =   \left[\begin{array}{rr}0 & -\frac{\beta\gamma}{\delta} \\   \frac{\alpha\delta}{\beta} & 0\end{array}\right]   \left[\begin{array}{c}x_1(t) \\x_2(t)\end{array}\right]

と表されます.したがって,固有値が純虚数となり,振動する解になります.

\alpha=10\beta=0.1\gamma=10\delta=0.1とし,x_1(0)=10x_2(0)=100 で数値解を求めると下図のようになります.上のパネルはx_1(t)x_2(t)の時間発展です. 下のパネルはx_1(t)x_2(t)の関係です.

x1(t)とx2(t)の時間発展
lv2
x1(t)とx2(t)の関係(t=0で(10, 100)とx1=0のヌルクラインに近く,x2が急速に減少するが,原点が鞍点であるのである程度減少したところでx1が急速に増加する.)

初期値を平衡点((100, 100))に近い点(99, 99)とすると下図のように円に近い軌道を描きます.

lv3
初期値を(99, 99)と平衡点(100, 100)に近い値にしたので円に近い軌道を描く

MATLABのコードです.

  • lv.m
tspan = [0:0.001:5];
[t y] = ode45(@LotkaVolterra,tspan, [99 99]);
figure(1);
plot(t, y(:,1), 'b', t, y(:,2), 'r');
figure(2);
plot(y(:,1), y(:,2));
  • LotkaVolterra.m
function dx = LotkaVolterra(t, x)
alpha = 10;
beta = 0.1;
gamma = 10;
delta = 0.1;
dx = zeros(2,1);
dx(1) = alpha * x(1) - beta * x(1) * x(2);
dx(2) = delta * x(1) * x(2) - gamma * x(2);
end

自然科学実験(物理学)オシロスコープ

RC回路の周波数特性を計測する実験のレポートで,理論値と実験値のずれに関する考察でオシロスコープの内部抵抗を原因の一つに上げているものがしばしばあります.結論から言えば,実験の回路ではオシロスコープの内部抵抗の影響は小さいです.

オシロスコープは電圧計です.理想的な電圧計では,電流が全く電圧計に流れないのですが,現実的には流れ込むため,理想的な電圧計とそれに並列な有限の抵抗で,現実の電圧計の等価回路を表します.オシロスコープの内部インピーダンスは1 MΩ程度です(プローブを使わないでリード線で配線しているので,10:1プローブを付けているときのように10 MΩ程度にはなりません).それに対して実験に使っている回路の抵抗は10 kΩです.1/100ですから,影響は小さいです.むしろ抵抗やコンデンサの容量の誤差の方が大きいでしょう.

_MG_3600

ハイパスフィルタ

自然科学実験(物理学)のテーマ,オシロスコープの応用課題で特性を調べるローパスフィルタの抵抗とコンデンサを入れ替えて構成したハイパスフィルタです.

rc-highpass

 

v_i(t) = \displaystyle\frac{1}{C}\int i(t) dt + v_o(t)v_o(t) = R i(t)の関係がありますから,

v_i(t) = \displaystyle\frac{1}{RC}\int v_o(t) dt + v_o(t)

になります.

ラプラス変換で解く

ラプラス変換して,

V_i(s) = \displaystyle\frac{V_o(s)}{RCs} + V_o(s)

を得ます.伝達関数は

\displaystyle\frac{V_o(s)}{V_i(s)} = \frac{1}{\frac{1}{RCs} + 1} = \frac{s}{s+\frac{1}{RC}}

になります.伝達関数の極は,抵抗とコンデンサを入れ替えて構成するローパスフィルタと同じになります.形式的にs=j\omegaとすると,ゲイン特性は

\left|\displaystyle\frac{V_o(s)}{V_i(s)}\right| = \displaystyle\frac{\omega}{\sqrt{\omega^2 + \left(\frac{1}{RC}\right)^2}}

になります.

位相特性は

90^\circ - \tan^{-1}\omega RC

になります.

1年生の数学の範囲で解く

同次微分方程式の解,つまり基本解は時間とともに零になるので,v_i(t)=\sin\omega tのときの特解を求めればよいのは,ローパスフィルタの場合と同様です.

積分を含む式

v_i(t) = \displaystyle\frac{1}{RC}\int v_o(t) dt + v_o(t)

なので,tで微分して,

\displaystyle\frac{dv_i(t)}{dt}=\frac{1}{RC}v_o(t) + \frac{dv_o(t)}{dt}

を得ます.\displaystyle\frac{dv_i(t)}{dt}=\omega\cos\omega tを代入すると,

\omega\cos\omega t=\displaystyle\frac{1}{RC}v_o(t) + \frac{dv_o(t)}{dt}

になります.v_o(t)は,v_i(t)と同じ角周波数の正弦波ですが,振幅と位相が異なるものになるので,解をa\sin(\omega t + \phi)とおいて,a\phi を求めます.

\omega\cos\omega t = \displaystyle\frac{1}{RC}a\sin(\omega t + \phi) + a\omega\cos(\omega t + \phi)

になるので三角関数の合成を用いて,

\omega\cos\omega t = a\sqrt{\displaystyle\left(\frac{1}{RC}\right)^2 + \omega^2}\sin(\omega t + \phi + \psi)

\psi=\tan^{-1}RC\omega

となり,両辺を\cosにして

\displaystyle\omega\cos\omega t = a\sqrt{\displaystyle\left(\frac{1}{RC}\right)^2 + \omega^2}\cos\left(-\frac{\pi}{2}+\omega t + \phi + \psi\right)

となります.したがって

a=\displaystyle\frac{\omega}{\sqrt{\left(\frac{1}{RC}\right)^2 + \omega^2}}

を得ます.

位相は\phi=\displaystyle\frac{\pi}{2}-\psiなので,

90^\circ - \tan^{-1}RC\omega

になります.

自然科学実験(物理学) オシロスコープ

1年生の自然科学実験のテーマの一つにオシロスコープがあります.応用課題として,抵抗とコンデンサで作るローパスフィルタの周波数特性を計測する実験があります.1年生では電気回路の講義がなく,交流回路の解析はまだ習っていません.1年生の数学では非同次微分方程式の解き方を学ぶので,タイミングによっては数学的な説明ができます.それすらできないときには,コンデンサの性質を定性的に説明することになります.

rc-lowpass

図の回路において,流れる電流をi(t)とおくと,抵抗Rの部分の電圧はRi(t)です.コンデンサCの電圧はv_o(t)です.また,i(t)=\displaystyle\frac{dv_o(t)}{dt}です(この式は,Q=CVQ=\displaystyle\int i(t)dtの関係で誘導しますが,高校の範囲では一定電流を\Delta t流すと電荷がQになることまでで,積分では習っていないと思います).

v_i(t)=Ri(t) + v_o(t)より,微分方程式v_i(t)=RC\displaystyle\frac{dv_o(t)}{dt} + v_o(t)を得ます.

1年生の数学の範囲で解く

1年生の数学で,非同次微分方程式の解き方を学んでいれば,v_i(t)=0のときの基本解は時間とともに減衰して零になるので,v_i(t)=\sin \omega tのときの特解を求めればよいことが分ります.

特解は,この回路は線形系ですから,入力の正弦波と同じ周波数で振動するすけれども,振幅と位相が異なるだけになります.そこで解をa\sin(\omega t + \phi)として,a\phiを求めることにします.

微分方程式に代入すると,

\sin\omega t=RCa\omega\cos(\omega t + \phi) + a\sin(\omega t + \phi)

になります.右辺に三角関数の合成を適用すると,

\sin\omega t = \sqrt{a^2 + (RCa\omega)^2}\sin(\omega t + \phi + \psi)

になります.両辺の振幅を比較して

a=\displaystyle\frac{1}{\sqrt{1+(RC\omega)^2}}

と,位相を比較して\phi = -\psiから

\phi = -\tan^{-1}RC\omega

を得ます.

交流回路の解析(フェーザ法)で解く

物理情報工学科では2年生春学期の電気回路同演習でフェーザ法を学びます.フェーザ法では,図の回路は

\dot{V_i} = R\dot{I} + \dot{V_o}

と表すことができ,

\dot{V_o} =\displaystyle\frac{1}{j\omega C}\dot{I}

を用いて\dot{I}を消去すると,

\dot{V_i} = (j\omega RC + 1)\dot{V_o}

を得ます.ゲイン特性は

\displaystyle\left|\frac{\dot{V_o}}{\dot{V_i}}\right| = \frac{1}{\sqrt{1 + (RC\omega)^2}}

になります.

位相特性は

-\tan^{-1}RC\omega

になります.

ラプラス変換で解く

物理情報工学科では2年生秋学期の物理情報数学Cでラプラス変換を学びます.ラプラス変換を学んでいれば,伝達関数に形式的にs=j\omegaとしてゲイン特性と位相特性を求めることができます.

微分方程式をラプラス変換すると

V_o(s) = RCsV_i(s) + V_i(s)

を得ます.伝達関数

\displaystyle\frac{V_o(s)}{V_i(s)} = \frac{1}{RCs + 1}

を得ます.s=j\omegaとすれば,上記と同じゲイン特性と位相特性になります.

補足

実験を早く終わった学生には,入力波形を矩形波にして積分されている様子を観察することや,抵抗とコンデンサを入れ替えてハイパスフィルタにして,定性的にですが,ハイパスフィルタの特性や入力波(三角波)が微分されている様子を観察してもらっています.

授業開始

4月6日(土)から授業開始でした.私が担当する授業では,今日4月8日の2つの授業が最初でした.一つは大学院の科目の生体制御です.生体制御では,M. C. K. Khoo, Physiological Control Systems, IEEE Pressを基に講義しています.もう一つは学部の科目の物理情報数学Bです.内容としては線形代数ですが,数学と工学の橋渡しをするところがあり,一冊で講義内容をカバーできる本がありません.随時,内容に応じて参考になる書籍を講義中に紹介します.

_MG_3878

2次遅れ系の標準形の共振周波数

2次遅れ系の標準形
\displaystyle\frac{\omega_n^2}{s^2+2\zeta\omega_ns+\omega_n^2}

の共振周波数は,バネ・マス・ダッシュポットで構成される機械系の2次遅れ系の共振周波数と同様に求めることができます.LCR直列共振回路では,伝達関数の分子にsがありますが,機械系にはsがなく分子は定数です.

形式的にs=j\omegaとして
\displaystyle g(\omega)=\left|\frac{\omega_n^2}{\omega_n^2-\omega^2+j2\zeta\omega_n\omega}\right|

になります.
\displaystyle\frac{dg(\omega)}{d\omega}=0

を解くと
\displaystyle\omega_r=\omega_n\sqrt{1-2\zeta^2}

になります.

電気系の共振周波数

図のLCR直列共振回路では,電圧v(t)を加えるときに流れる電流i(t)は,
\displaystyle L\frac{i(t)}{dt}+Ri(t)+\frac{1}{C}\int i(t)dt=v(t)

です.ラプラス変換して伝達関数G(s)=I(s)/V(s)を求めると
\displaystyle G(s)=\frac{s}{Ls^2+Rs+1/C}

になります.

lcr

形式的にs=j\omegaとおき,|G(j\omega)|=g(\omega)とおくと
\displaystyle g(\omega)=\omega\left(\left(\frac{1}{c}-\omega^2L\right)^2+\omega^2R^2\right)^{-1/2}

になります.

\displaystyle\frac{dg(\omega)}{d\omega}=0として,極大値を求めると
\displaystyle\omega_r=\frac{1}{\sqrt{LC}}になります(共振周波数は\displaystyle f_r=\frac{1}{2\pi\sqrt{LC}}).つまり,抵抗に依存しません.

計算で求めると煩雑ですが,LCR直列共振回路では複素平面でインピーダンスを表せば,Lのインピーダンスj\omega LとCのインピーダンス\displaystyle\frac{1}{j\omega C}の大きさが等しいときが共振の条件ですから容易に共振周波数を求められます.

一方,電圧源を短絡して電流の初期値のみを与えるとき,不足減衰であればその振動の角周波数は伝達関数の極の虚部から
\displaystyle\sqrt{\frac{1}{LC}-\frac{R^2}{4L^2}}

になります.

電気系では,「駆動力」である電圧と,「流れ」である電流に興味があります.力学系では「流れ」である速度ではなくその積分である変位で共振周波数を求めていることに注意が必要です.

機械系の共振周波数

外部から力を加えて強制的に振動させると,外部から加える力の周波数が共振周波数のときに振幅が最大になります.

mechanical

バネ・マス・ダッシュポットで構成される機械系の2次遅れ系に外力f(t)を加えるときの変位x(t)に関する微分方程式は
\displaystyle m\frac{d^2x}{dt^2}+d\frac{dx}{dt}+kx=f(t)

になります.

ラプラス変換して伝達関数G(s)=X(s)/F(s)を求めると
\displaystyle \frac{1}{ms^2+ds+k}

になります.共振周波数はゲインが最大になる周波数ですから,形式的にs=j\omegaとして,
\displaystyle |G(j\omega)|=\left|\frac{1}{-m\omega^2+j\omega ds + k}\right|

になります.これをg(\omega)とおくと
g(\omega)=((k-m\omega^2)^2+d^2\omega^2)^{-1/2}

になります.

これが極大になる点を探せばよいので
\displaystyle\frac{dg(\omega)}{d\omega}=-\frac{1}{2}((k-m\omega^2)^2+d^2\omega^2)^{-3/2}(2(k-m\omega^2)(-2m\omega)+2d^2\omega)=0

となり,これを解くと
\displaystyle\omega_r=\sqrt{\frac{k}{m}-\frac{d^2}{2m^2}}

になります(共振周波数f_r=\omega_r/2\pi).

一方,零ではない初期値のみを与えて外力を加えない場合,不足減衰のときの振動の周波数(減衰固有周波数)は,伝達関数の極の虚部から
\displaystyle\frac{1}{2\pi}\sqrt{\frac{k}{m}-\frac{d^2}{4m^2}}

になります.

機械系では,「駆動力」は外部から加えられる力で,「流れ」に対応するものは速度になります.しかし,興味があるのは変位ですから,「流れ」に対応する物理量を時間に関して積分した物理量になります.

非減衰固有周波数と減衰固有周波数

2次遅れ系の伝達関数の標準形は
\displaystyle\frac{\omega_n^2}{s^2+2\zeta\omega_n+\omega_n^2}

です.とくに断ることなく固有周波数というときには\omega_n/2\piのことを指します.減衰比\zetaが零のときの固有周波数を明示的に区別して呼ぶときには,非減衰固有周波数あるいは不減衰固有周波数と呼びます.英語ではundamped natural frequecyです.また\zetaが零ではないときの自由振動の周波数は,減衰固有周波数と呼ばれます.減衰固有周波数は,伝達関数の極から\displaystyle\frac{\omega_n\sqrt{1-\zeta^2}}{2\pi}になります.

講義開始

この年末年始は曜日配置や工事の関係からか,12/28-1/6が休みでした.今日から講義開始です.クォータ制を導入していると,期末試験の問題提出の期限の時点では,偶数クォータの講義では全講義回数の半分強が終わった程度ですから,試験問題を作り難いです.講義計画どおりに進んだとしても,講義する前に作るのと講義した後に作るのでは,細かな点に差がでるように思います.それよりも,突発的な理由で計画通りに進まなかったときが怖いです.