MATLAB Answers

Integrate for a specific period of time

Allison Bushman 님이 질문을 제출함. 12 Sep 2019
최근 활동 Torsten 님이 답변함. 13 Sep 2019
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

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.
xdot is dx/dt

로그인 to comment.

태그

답변 수: 2

Torsten 님의 답변 13 Sep 2019
 채택된 답변

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

로그인 to comment.


Robert U 님의 답변 13 Sep 2019
Robert U 님이 편집함. 13 Sep 2019

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

로그인 to comment.



Translated by