Numerically solve a 3rd order differential equation with 3 unknowns

6 visualizzazioni (ultimi 30 giorni)
Hi, I have a 3rd order differential equation in y, with 3 unknowns a, b, c. To simplify imagine the equation is:
diff(y, t, 3) + a.*diff(y, t, 2) + b.*diff(y, t) + y.^(3/2) + c.*y == 0;
I know the discrete values of y and the time vector. I want to know tha values of a, b, c that solve this equation. Clearly there will be more combination of this values, but is there a way to solve it? (like with ode function or others).
One idea would be to express all the derivatives as function of y (like using finite differences) and then solve, is there a way to do it automatically on matlab?
  2 Commenti
Sam Chak
Sam Chak il 1 Giu 2023
Can you confirm if the data pair is absolutely governed by the dynamics?
Raffaele
Raffaele il 2 Giu 2023
Modificato: Raffaele il 2 Giu 2023
Actually the dynamic is more complicated, because there are also multiplications and divisions of the unknown parameters and also combination with other known parameters (like mass, spring stiffness, ecc.), like shown in my answer below. I just wrote that equation to simplify the presentation of the problem.

Accedi per commentare.

Risposta accettata

Torsten
Torsten il 1 Giu 2023
Modificato: Torsten il 1 Giu 2023
Use "gradient" three times to get approximations for y', y'' and y''' in the points of your t-vector.
Let diff_y, diff_y2, diff_y3 be these approximations as column vectors of length n.
Now form a matrix A as
A = [diff_y2,diff_y,y]
and a column vector v as
v = [-y.^(3/2) - diff_y3]
Then approximations for a, b and c can be obtained using
sol = A\v
with
a = sol(1)
b = sol(2)
c = sol(3)
  12 Commenti
Raffaele
Raffaele il 3 Giu 2023
Thank you, so now I try to insert it in an lsqnonlin to find the best option for a, b, c
Torsten
Torsten il 3 Giu 2023
For the lsqnonlin fitting procedure, you can try two ways:
The first is without using the ode integrator and generating y',y'' and y''' from your data by using the "gradient" function.
The second is with the ode integrator by integrating the differential equation for given parameters a, b and c and by comparing the result with your given data for y.

Accedi per commentare.

Più risposte (0)

Prodotti


Release

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by