私の教科書では、ODEのシステムのイベントの場所を指定するときに使用することになっている関数の例に遭遇しました。関数の例は次のとおりです。
function [value, isterminal, dircn] = proj(t,z,flag);
g = 9.81;
if nargin < 3 | isempty(flag)
value = [z(2); 0; z(4); -g];
else
switch flag
case 'events'
value = z(3);
isterminal = 1;
dircn = -1;
otherwise
error('function not programmed for this event');
end
end
ここに私が理解していない論理の一部があります。「イベント」オプションをアクティブにしてから、ode45を実行するとします。では、ode45は実際に連立方程式(上記の関数でとして指定されているvalue = [z(2); 0; z(4); -g];
)をどのように読み取ることができますか?もちろん、tspanと初期条件を指定した後、上記の関数に基づいてode45を実行しましたが、これは魅力のように機能します。しかし、上記のスクリプトの「if」部分にのみ表示されている場合に、ode45がシステムを正しく読み取る方法がわかりません。
誰かがここで論理を説明することができれば、私はそれを大いに感謝します!