Using ODE45 for first order diff equation with three different variables

36 Ansichten (letzte 30 Tage)
So, I am trying to use ODE45,
say dx/dt = (0.1*x)+(0.25*y)-(9.8*z)
I am trying to graph the behavior of x,y and z from time (0 to 100). What should i do to set up as in funciton file?
i tried
function dxdt = func(t,x,y,z)
dxdt = (0.1*x)+(0.25*y)-(g*z);
end
%main script
tspan = [0 100];
xint = 0;
yint = 0;
zint = 0;
[t,x,y,z] = ode45(func,tspan,xint,yint,zint);
But after i run this code i am getting an error says not enough input arguments.I am still adpoting the concept of using ode function but Please help!
I need to plot x,y,z from 0 to 100
  1 Kommentar
Wan Ji
Wan Ji am 14 Sep. 2021
Hi, you should have three equations for solving ode of x,y,z with respect to t. But you only provided one

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Wan Ji
Wan Ji am 14 Sep. 2021
For example
function dxdt = func(t,x,g)
dxdt = zeros(3,1);
dxdt(1) = (0.1*x(1))+(0.25*x(2))-(g*x(3));
dxdt(2) = (0.1*x(1))+(0.25*x(2))-(g*x(3));
dxdt(3) = (0.1*x(1))+(0.25*x(2))-(g*x(3));
end
The main function
tspan = [0 100];
g = 10;
[t,x] = ode45(@(t,x)func(t,x,g),[0,100],[0;0;0]);
xsol = x(:,1);
ysol = x(:,2);
zsol = z(:,3);

Weitere Antworten (0)

Tags

Produkte


Version

R2015b

Community Treasure Hunt

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

Start Hunting!

Translated by