필터 지우기
필터 지우기

2nd Order Non-Linear Equation Numerical Solution and Plot

조회 수: 1 (최근 30일)
Conlen O'Brien
Conlen O'Brien 2023년 10월 17일
댓글: William Rose 2023년 10월 17일
Hi All,
I am looking to numberically solve and graph the following equation:
With initial conditions:
x=x(t); A and B are constant coefficients. I've been trying to use ODE45 but can't seem to get it to work properly.
Any help is appreciated!
  댓글 수: 4
William Rose
William Rose 2023년 10월 17일
Here are a couple of commands to plot results:
A=9.81; B=3;
tspan=[0 10];
x0=[-25 0];
[t,x] = ode45(@(t,x) [x(2);-A+B*x(2).^2], tspan, x0);
Plot results
subplot(211); plot(t,x(:,1),'-r.'); ylabel('x(t)'); grid on
subplot(212); plot(t,x(:,2),'-r.'); ylabel('dx/dt'); grid on; xlabel('Time')
You can see, by analyzing the original differential equation, that a "steady state" solution is
dx/dt=sqrt(A/B). Since dx/dt=constant, d2x/dt2=0, so this satisfies the original differential equation. Does the numerical solution above agree with this? Yes. sqrt(A/B)=sqrt(9.81/3)=+1.81 or -1.81. The plotted solution agrees with this: dx/dt=-1.81 in the "steady state".

댓글을 달려면 로그인하십시오.

채택된 답변

William Rose
William Rose 2023년 10월 17일
tspan=[0 10]; x0=[-25 0];
A=1; B=1;
[t,x] = ode45(@(t,x) [x(2);-A+B*x(2).^2], tspan, x0);
Do you think the results make sense?
  댓글 수: 1
Sam Chak
Sam Chak 2023년 10월 17일
이동: Sam Chak 2023년 10월 17일
You can assign a display name to each state and toggle the legends. Also, if A and B are fixed constants, then place them inside the odefcn() function so that you don't need to assign the values to A and B every time you call the ode45 solver.
tspan = [0 10];
x0 = [-25 0];
[t,x] = ode45(@odefcn, tspan, x0);
plot(t, x(:,1), 'blue', 'DisplayName', 'x(t)'), hold on
plot(t, x(:,2), 'red', 'DisplayName', 'x''(t)'), grid on
xlabel('t'), ylabel('\bf{x}')
legend show
function dxdt= odefcn(t, x)
A = 9.81;
B = 3;
dxdt = zeros(2,1);
dxdt(1) = x(2);
dxdt(2) = - A + B*x(2)^2;
end

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Programming에 대해 자세히 알아보기

제품


릴리스

R2023b

Community Treasure Hunt

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

Start Hunting!

Translated by