Integrate for a specific period of time
19 次查看(过去 30 天)
显示 更早的评论
Please help me. I am trying to use Euler integration to integrate for 10 seconds with a step size of .01 seconds. Plot x versus time.
x(0) = 1
t=0:.01:10;
x0=1;
xdot=-2*(x^3)+sin(0.5*t)*x;
for t=0:0.01:10
x=integrate(xdot,t,x0);
end
plot(t,x)
2 个评论
Walter Roberson
2019-9-13
However you do not have a differential equation, so it is not obvious to me what Euler integration would have to do with the situation.
采纳的回答
Torsten
2019-9-13
t=0:.01:10;
x = zeros(numel(t));
x(1) = 1;
fun_xdot = @(t,x) -2*(x^3) + sin(0.5*t)*x;
for i = 1:numel(t)-1
x(i+1) = x(i) + (t(i+1)-t(i))*fun_xdot(t(i),x(i));
end
plot(t,x)
0 个评论
更多回答(1 个)
Robert U
2019-9-13
编辑:Robert U
2019-9-13
Hi Allison,
you can use one of Matlab's integrated ODE solvers to solve your differential equation. The code below makes use of ode45.
t=0:.01:10; % explicit time vector
x0=1; % boundary condition
% define function containing my ODE
myODE = @(t,x) -2 .* x^3 + sin( 0.5 .* t) .* x;
% solve ODE with ode45
[tsol,xsol] = ode45(myODE,t,x0);
% plot result as explicit solution points
plot(tsol,xsol,'.')
Kind regards,
Robert
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Ordinary Differential Equations 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!