Using ODE45 with sine function

I have a preliminary simple system with the code as follows. I keep getting an error for 'Not enought input arguments'. I'm not really sure what is going wrong here.
function Fv=funsys(t,Y)
Fv(1,1)=2*Y(1)+Y(2)+5*Y(3)+exp(-2*t);
Fv(2,1)=-3*Y(1)-2*Y(2)-8*Y(3)+2*exp(-2*t)-cos(3*t);
Fv(3,1)=3*Y(1)+3*Y(2)+2*Y(3)+cos(3*t);
[tv,Yv]=ode23(@(t,Y)funsys(t,Y),[0 pi/2],[1;-1;0]);
plot(tv,Yv)
Any help would be appreciated.

2 件のコメント

James Tursa
James Tursa 2021 年 12 月 2 日
Is the code you posted all in one file as written? You should not have the ode23 and plot code inside the funsys function.
Heather Newell
Heather Newell 2021 年 12 月 2 日
Yes. I know they work together seperatly, but is there any way to write ode and plot within the same file?

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

回答 (1 件)

Star Strider
Star Strider 2021 年 12 月 2 日

0 投票

... is there any way to write ode and plot within the same file?
See if this produces the desired result —
[tv,Yv]=ode23(@(t,Y)funsys(t,Y),[0 pi/2],[1;-1;0]);
figure
plot(tv,Yv)
grid
legend(compose('Y_{%d}',1:size(Yv,2)), 'Location','best')
function Fv=funsys(t,Y)
Fv(1,1)=2*Y(1)+Y(2)+5*Y(3)+exp(-2*t);
Fv(2,1)=-3*Y(1)-2*Y(2)-8*Y(3)+2*exp(-2*t)-cos(3*t);
Fv(3,1)=3*Y(1)+3*Y(2)+2*Y(3)+cos(3*t);
end
All in one script (.m) file.
.

カテゴリ

タグ

質問済み:

2021 年 12 月 2 日

回答済み:

2021 年 12 月 2 日

Community Treasure Hunt

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

Start Hunting!

Translated by