10

私は次の機能を持っています:

function ypdiff = ypdiff(t,y)
    a = 0.01;
    b = 0.1;
    ypdiff(1) = -a*y(1)*y(2);
    ypdiff(2) = b*y(1)*y(2)-b*y(2);
    ypdiff(3) = b*y(2);
    ypdiff = [ypdiff(1) ypdiff(2) ypdiff(3)]';

これを解決したい場合は、次のように ode45 関数を呼び出します。

[t y] = ode45(@ypdiff, [to tf], yo);

しかし、この関数にパラメーターを渡したい場合、ode45 関数をどのように使用すればよいでしょうか? 具体的には、次の定式化を試みています。

function ypdiff = ypdiff(t,y,u)
    a = 0.01;
    b = 0.1;
    ypdiff(1) = -a*u*y(1)*y(2);
    ypdiff(2) = b*u*y(1)*y(2)-b*y(2);
    ypdiff(3) = b*u*y(2);
    ypdiff = [ypdiff(1) ypdiff(2) ypdiff(3)]';
4

1 に答える 1

9

matlabで無名関数を使用できます(他の言語のラムダ関数と同様)。

u = 1.2;
[t y] = ode45(@(t, y) ypdiff(t, y, u), [to tf], yo);
于 2010-02-13T02:18:22.153 に答える