New Matlab user. My equations say I do not have enough inputs. How do I correct this?

1 回表示 (過去 30 日間)
tspan = linspace(0,15,201);
y0=[0 15];
[t, y] = ode15s(f,tspan,y0);
function dydt=f(t,y)
dydt(1)=1.57-.00145 *y(1)*y(2);
dydt(2)=7.30-.53*y(1)-.00145*y(1)*y(2);
plot(t,y);
end

採用された回答

madhan ravi
madhan ravi 2018 年 9 月 14 日
編集済み: madhan ravi 2018 年 9 月 14 日
tspan = linspace(0,15,201);
y0=[0 ;15];
[t, y] = ode15s(@f1,tspan,y0)
plot(t,y(:,1),'-o')
hold on
plot(t,y(:,2),'-ob')
function dydt=f1(t,y)
dydt(1)=1.57-.00145 *y(1)*y(2);
dydt(2)=7.30-.53*y(1)-.00145*y(1)*y(2);
dydt=[dydt(1);dydt(2)] %added this line to make sure it’s a column vector.
end
Note:See the function file attached.
Use
[t, y] = ode15s(@f1,tspan,y0)
Instead of
[t, y] = ode15s(f1,tspan,y0)
  6 件のコメント
madhan ravi
madhan ravi 2018 年 9 月 14 日
編集済み: madhan ravi 2018 年 9 月 14 日
@f indicates that the function is called with its inputs. I don’t know why you’re getting empty graph but I didn’t have any problem getting the graph.
Stephen23
Stephen23 2018 年 9 月 15 日
"Is there a reason why the @f is used?"
Because ode15s requires the first input to be a function handle:

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeOrdinary Differential Equations についてさらに検索

タグ

製品

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by