Using ode15i

2 Ansichten (letzte 30 Tage)
Inbar Maimon
Inbar Maimon am 7 Nov. 2018
Bearbeitet: Inbar Maimon am 7 Nov. 2018
I tried to solve an implicit differential equation of the form f = c1*q^4 + c2*dqdt^2 - c3 (where c1,c2,c3>0) with ode15i. The wanted solution oscillates, but the solution that I get doesn't. It does, though, stop about where it is supposed to, but not exactly. How can I get it right?
---
Here is the relevant part of the code:
x0 = 0
v0 = 2
tspan=[0,6]
option = odeset('events', @condE);
[x0, v0] = decic(@diffE, tspan(1), x0, [], v0, []);
[t, xv, tf, xvf, ~] = ode15i(@diffE, tspan, x0, v0, option);
%% ODE function for energy equation
function f = diffE(~, q, dqdt)
% Assume: m = 1; k = 1; E = 1;
f = (m/2)*dqdt.^2 + (m*k/4)*q.^4 - E;
end
%% Event function for x0 = 0 for energy equation
function [val, ister, dir] = condE(~, ~, dxdt)
val = dxdt;
ister = 1;
dir = -1;
end
  1 Kommentar
Torsten
Torsten am 7 Nov. 2018
The code is incomplete.

Melden Sie sich an, um zu kommentieren.

Antworten (1)

Torsten
Torsten am 7 Nov. 2018
Nothing oscillating can be seen:
https://www.wolframalpha.com/input/?i=Runge-Kutta+method,+dy%2Fdx+%3D+Sqrt(2-0.5*y(x)%5E4),+y(0)+%3D+0,+from+0+to+1.3,+h+%3D+.025
Best wishes
Torsten.
  1 Kommentar
Inbar Maimon
Inbar Maimon am 7 Nov. 2018
Bearbeitet: Inbar Maimon am 7 Nov. 2018
When you differentiate you get the force eq. c2*d2q/dt2 = -4*c1*q^3, which oscillates.
I think it is reasonable, for there are only even powers in the conservation equation 0 = c1*q^4 + c2*dqdt^2 - c3 from which I began.
But yeah, that was exactly my problem. I tried taking the square root and realized that by doing so I force the solution to give only positive dq/dt.

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Numerical Integration and Differential Equations finden Sie in Help Center und File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by