How do I solve this ODE system where there exists derivatives in both sides?
2 次查看(过去 30 天)
显示 更早的评论
The system of ODE is the following equation.![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1583861/image.png)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1583861/image.png)
Second equation is no of a problem but first and the third one is the problematic for me. Because I can't get them in the form that is similar when using ode45. That is, I can't seperate the derivatives because
and
are coupled.
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1583866/image.png)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1583871/image.png)
Any help is appreciated. Thanks!
0 个评论
采纳的回答
David Goodmanson
2024-1-6
编辑:David Goodmanson
2024-1-6
Hi Arda,
These two equations are of the form
p' Jxx - r' Jxz = f(...) where ... = p,q,r,J,J,M,M (a bunch of known stuff)
-p' Jxz + r' Jzz = g(...) where ... = a bunch of other known stuff
in matrix form this is
[Jxx -Jxz; -Jxz Jzz]*[p'; r'] = [f; g];
where the semicolons produce a 2x2 matrix and two 2x1 column vectors. This is solved by left divide.
[p'; r'] = [Jxx -Jxz; -Jxz Jzz]\[f; g]
which works fine for calculation, or if you prefer you can use the tedious longhand version
p' = (Jzz*f + Jxz*g) / (Jxx*Jzz - Jxz^2)
r' = (Jxz*f + Jxx*g) / (Jxx*Jzz - Jxz^2)
3 个评论
Sam Chak
2024-1-6
编辑:Sam Chak
2024-1-6
This is Euler's equations of rotational motion for a rigid body. Basically, David's approach allows the decoupling of the equations of motion into two separate state equations.
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1584016/image.png)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1584021/image.png)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1584026/image.png)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1584031/image.png)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1584036/image.png)
In MATLAB, the syntax to perform matrix left division may be given by:
J = [Jxx -Jxz;
-Jxz Jzz];
M = [Mx + fx;
Mz + fz];
dwdt(1:2) = J\M;
更多回答(1 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Ordinary Differential Equations 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!