ODE45 を使用していくつかの方程式を解くクラス関数があります。ODE45 が解決する必要がある odefunction を表す別のプライベート クラス関数があります。しかし、クラスの ode 関数のハンドルを ODE45 に渡す方法がわかりません。サンプルコードは次のとおりです。
class ODESolver < handle
methods (Access = public)
function obj = RunODE(obj, t, y0)
[~, Z] = ode45(@ODEFunction, t, y0);
end
end
methods (Access = private)
function dy = ODEFunction(t,y)
% Calculate dy here.
end
end
end
これを実行すると、次のようなエラーが表示されます。
Undefined function 'ODEFunction' for input arguments of type 'double'.
ODEFunction をクラスの外に移動して独自の *.m ファイルに配置すると、コードは問題なく実行されます。また、ode45 呼び出しで "@obj.ODEFunction" を使用してみましたが、次のように表示されます。
Too many input arguments.
ODEFunction をクラス内に保持し、そのハンドルを ode45 に渡すことができる最善の方法は何ですか?