タイトルに指定されているように、関数を常に正の値にする必要があります(負になる場合は0にする必要があります)。これは私が正常にODEの関数内の非負のオプション
function [ func2 ] = func2 (mumax,Qmin,Q)
func2=mumax*(1-Qmin/Q);
end
を維持したい機能があり、これがある
clear
t=[0,276];
Tie=0.3;
mumax=2;
Qmin=1;
X0=[4,2];
[t,X]=ode45(@(t,X) odeset(mumax,Qmin,Tie,X),t,X0);
:これは私がODE呼び出すところからスクリプトがある
:この機能は、ODE内にありますODE
function [ dXdt ] = odeset(mumax, Qmin, Tie,X)
dXdt=zeros(2,1);
dXdt(1)=func2(mumax,Qmin,X(1))-X(2)*Tie;
dXdt(2)=func2(mumax,Qmin,X(1))-X(2)*Tie;
end
堅牢な方法でこれを行う組み込みオプションがあります。 [こちらをご覧ください](https://www.mathworks.com/help/matlab/math/nonnegative-ode-solution.html)。しかし、Matlabの['odeset'](https://www.mathworks.com/help/matlab/ref/odeset.html)もオーバーロードされています。これはパラメータとオプションを設定するために使われます。さまざまなODEソルバーODE機能の名前を変更する必要があります。最後に、ODE関数の2つの導関数が同じであるように見えます。 – horchler
ODEは意味をなさない例に過ぎず、私はそれを扱っていません。 また、あなたのリンクはODEの解決策を常に肯定的にすることですが、私はそれを望んでいません、私はfunc2を常に正にしたいだけです。 – kumbu