Using ODE45 for first order diff equation with three different variables

36 次查看(过去 30 天)
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

采纳的回答

Wan Ji
Wan Ji 2021-9-14
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);

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Ordinary Differential Equations 的更多信息

标签

产品


版本

R2015b

Community Treasure Hunt

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

Start Hunting!

Translated by