Numerically solve a 3rd order differential equation with 3 unknowns

4 visualizaciones (últimos 30 días)
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 comentarios
Sam Chak
Sam Chak el 1 de Jun. de 2023
Can you confirm if the data pair is absolutely governed by the dynamics?
Raffaele
Raffaele el 2 de Jun. de 2023
Editada: Raffaele el 2 de Jun. de 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.

Iniciar sesión para comentar.

Respuesta aceptada

Torsten
Torsten el 1 de Jun. de 2023
Editada: Torsten el 1 de Jun. de 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 comentarios
Raffaele
Raffaele el 3 de Jun. de 2023
Thank you, so now I try to insert it in an lsqnonlin to find the best option for a, b, c
Torsten
Torsten el 3 de Jun. de 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.

Iniciar sesión para comentar.

Más respuestas (0)

Productos


Versión

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by