Writing ODE equations for ode45 to solve;

조회 수: 3 (최근 30일)
Noob
Noob 2024년 10월 30일
편집: Torsten 2024년 10월 30일
Hi there!
I have a basic question to ask here, regarding writing the first-order equations for ode45 to solve.
Let's say I am solving Newton's 2nd law equations of motion F = ma.
In my function file, the left-hand-side of each equation will be:
  1. vx (velocity of x-component)
  2. vx (velocity of y-component)
  3. omega (angular velocity)
  4. ax (acceleration of x)
  5. ay (acceleration of y)
  6. omegadot (angular acceleration)
For equations 4, 5, 6, I need to use Newton's law ma = F.
Should I write ma = F as is, or do I need to isolate ax, ay, and omegadot, by dividing both sides by the mass m and the moment of inertia I, respectively? My LHS m*a is pretty lengthy, after using the product rule, chain rule, etc., so I wonder if I can just keep it as is, ma = F.
I then create an anonymous function that calls the above function, and this anonymous function is passed into ode45.
Updafe: I just tinkered with this a bit, and it does seem that I can write ma = F as is, but I have to use the double == sign, to equate values from each side, and that the single = sign is for assigning a value to a variable name. Please let me know if you have other thoughts to share.
Thanks!

채택된 답변

Torsten
Torsten 2024년 10월 30일
이동: Torsten 2024년 10월 30일
The form of the equations that can be solved by ode45 is M*y'(t) = f(t,y). So you can decide whether you choose M to be the identity matrix (that is: whether you isolate ax, ay and omegadot) or not.
  댓글 수: 6
Noob
Noob 2024년 10월 30일
Hi Torsten / Walter,
I just tried writing ma = F as is, within my function file, but Matlab tells me it's not valid Matlab syntax.
Torsten
Torsten 2024년 10월 30일
편집: Torsten 2024년 10월 30일
Numerical assignments only use the single "=" sign. I don't know what you try to do in your function file.
If you want to set something like
a11*y1' + a12*y2' + a13+y3' = f1
you will have to set the elements a11, a12 and a13 in the mass matrix M and the expression for f1 in your function of the right-hand side.

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

추가 답변 (0개)

카테고리

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

태그

제품


릴리스

R2024b

Community Treasure Hunt

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

Start Hunting!

Translated by