You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

278 lines
30 KiB

2 years ago
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Compute $\\boldsymbol{J}$ in Kinetic Energy\n",
"\n",
"We can define the rotational kinetic energy of a single body as\n",
"\n",
"$$\n",
"\\frac{1}{2} \\boldsymbol{\\omega}^{T} \\boldsymbol{I} \\boldsymbol{\\omega}=\\frac{1}{2} \\operatorname{tr}\\left([\\boldsymbol{\\omega}] \\boldsymbol{J}[\\boldsymbol{\\omega}]^{T}\\right),\n",
"$$\n",
"\n",
"where $\\boldsymbol{J}$ is a diagonal PD matrix that ensures the equality above holds. The following notebook derives the definition of $\\boldsymbol{J}$."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import numpy\n",
"import sympy.vector\n",
"from IPython.display import Latex, Math, display\n",
"from sympy import *\n",
"\n",
"init_printing()"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"def hat(x):\n",
" return numpy.array([[0, -x[2], x[1]], [x[2], 0, -x[0]], [-x[1], x[0], 0]],\n",
" dtype=x.dtype)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"omega = numpy.array(symbols(\"omega_x omega_y omega_z\"))\n",
"I = numpy.diag(symbols(\"I_x I_y I_z\"))\n",
"J = numpy.diag(symbols(\"J_0 J_1 J_2\"))"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/latex": [
"$\\displaystyle I_{x} \\omega_{x}^{2} + I_{y} \\omega_{y}^{2} + I_{z} \\omega_{z}^{2}$"
],
"text/plain": [
" 2 2 2\n",
"Iₓ⋅ωₓ + I_y⋅ω_y + I_z⋅ω_z "
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAGEAAAAWCAYAAADQIfLaAAAACXBIWXMAAA7EAAAOxAGVKw4bAAADPElEQVRoBe2Z7VHcMBCGD4YCGOgAOoCkgkAHHKmA0EH4Cf+YpAOSCjKhA+ggCR2EDgJ0QJ5HSI6xfT4T25yYYWf2Vl/efbWrlWzd0vHx8cfJZHIIS9OTk5Orh+Lr71gewMePfL5EED5h7IKOy7GMvupt9gA+D75fae7+1xoHbtGyE1vNlGv4iD7ls1FOWJz0UHi6BOEoGrxHXmN42/oiCNvZYHH+Q+FZ7uJMjJkJ0vmDWNxvTlj0whB4OgUBW2krulic+wvLOWERVG88XYOwqzWinsPhnRMW3dIbT9cgGO1cXl1zwmIQeuOZGwRWf0q3b1pcJOWERT8MhWduELAV0g2ZzVaUCRZgDOObLkEImUDUc9iOcsJiEAbB0yUIvp7mkAVOOicsg+FZUdMsKu15ja+m9HsHIm3CfoJ7B7Vqmb5Bv6bbsMQ+A/SW8hQZiLLXMWk7Tc2DyGhTXbN8I57v8B0spg34hudqO8q8TEgTqGUCygzAOfIzcg0+o+wX7RtYAAXRbmD60kwsKN6NOPaSLaQYxFKjNKbW8bSGNjxqeg/r/APYxSnGWgBon8wLwp6DZjx8R3ta7To5rYgD2osva8r23SJ/qasHNWJBryvsFOn+7LWKK0+y/jOUSj/0j4onmcKOd2s6PeCxnvqqsnaLymAn5daiTCtapzrBRkW0e6+0jWyMNO2/6Zcck5z00NLyy9jOWBhr6hcYY/0H0kx9RLSNjkeD2NF/O00YYn/zLSoPuLqLfdXBbRQNTZAhAMgNOGVIeJT6JhxWcpuual/U0xWLEz4r6TATTkv1ovgceLDxKADUXVCeCbVFuFwge0JBhfBtfMS9r5wB6Q+iqkYPzRqA6qCe9Rufx44BWEWWcVVVj4YHuzr8K2xmbkU8vqw0zn+liqxj3cleovQDMpwFlD2o1+Ha6qNvlfY/8JjkVnmILc8es2dmAJ4BjwvxHbwPh2AgZ2b0fwWBSRjRstLa2xP9ZdrnmdreXB7QpxydeoUMLwRIsZW3pqr6sfGks/MLhuVWSgdz2q9f5H/MON1DORzClN2KTP2F/fnU6nE6weauYbaswdOl+3tfbF42MSkXkRNy21unnlbii5jYX0XXbmtaVm9AAAAAAElFTkSuQmCC\n",
"text/latex": [
"$\\displaystyle \\left[ I_{x}, \\ I_{y}, \\ I_{z}\\right]$"
],
"text/plain": [
"[Iₓ, I_y, I_z]"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"lhs = omega.T @ I @ omega\n",
"display(lhs.collect(omega))\n",
"lhs_coeffs = [lhs.coeff(omega[i], 2) for i in range(omega.size)]\n",
"display(lhs_coeffs)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/latex": [
"$\\displaystyle \\omega_{x}^{2} \\left(J_{1} + J_{2}\\right) + \\omega_{y}^{2} \\left(J_{0} + J_{2}\\right) + \\omega_{z}^{2} \\left(J_{0} + J_{1}\\right)$"
],
"text/plain": [
" 2 2 2 \n",
"ωₓ ⋅(J₁ + J₂) + ω_y ⋅(J₀ + J₂) + ω_z ⋅(J₀ + J₁)"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAPEAAAAVCAYAAACXHgidAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAEYUlEQVR4Ae2c7VUUMRSGFw8FcLQD6ACOFYgdiB0IHcDxF/yFDsQOxA7WEpQOpAOEEnyf2WSdnclAEibDXcw9J5vJzcd98yY3yXzAxunp6fFsNjtSQA7Ozs6uF5f1tzJQGbDIgHx0xWc35MTnAjpXxg+LgCumykBlIMyAfLbx3c1wdljrKm0rd1eB+EbhWvoDxWbFIm6LmGIG0CJui5im5DJrJ3aksaXv6Xptjt8WcVvElDABTc2B/41L19/5q5gBC5TZl+5ejYzuwGpzX+EwYHMMVTHcTwBXDFPl8gmj0qlqmctcJ+Y4XeoeekttE0pISdy5eEtiqlzmjkq/nlkuk52YFcn1b97vp12NRdwWMcWMoEXcFjFNxWWyEwuYf4j1LQakoTIWcVvEFDNkFnFbxDQJlzlOzE58o5XvPgahoTIWcVvEFDNkFnFbxDQJl5sxVnwZOS73BdsKl17nY5f3UekjXe95vYV4CLfTf3YY6RfySfriC9QQJgAoj/d/yK3CG6VPmpSBnyHcTl+5TBijIS5pwuVF+VOSE6ttGkWuFtHiVwZ5OMNKiODoj4rqfFEhX6dd/jUJ5fuvyNp5ue+kg7jV8HnbjsP0S/qdttFC10FMwoAD3yq+wK7ifQU+xnk/hEN5lcsFOd15uZZcajyT/CnViZuJJCMrT6aV5lUTDvZhaKJ19SobctKZa2NbcTOJu/Uy00HcautQdq4UfH8YdHS7CqO/PutgH8Skcu98WbAp4MRwwsc1PZG+cilWxIMfR88RryrXjkv1I8mfgk6sRjhasiNd6rp9lGPnLD25ZSJPMnAz+X/mWYurlYLJleUk0z3Ok2Z1DjpxHJK0Uim4XcuVywGKM7gcaCmsfhVWz9hRmUzckzUiIF7XdmqfbSX2GKNwq08sUm2HYSLy0G5loVIaLnIlBZO386djjHRzm9HRl0ym4J6Jo8rl8GgkcTncTDhnyImZxCcaGH9fxuT6qnAhXffIEm75ebTZuNUvdjrIXnkoJz19v1PMySRHsjG1jOHA3sFb6qKX2bgrl71xyeay11JAEXRiDQKOymeVxwRd48D8maLlXXgmfFm4VY/bB+6H+Rb8XvFSXJpj7Jaukx1JdVIwedvdXRe7kx2l6Xwibqo0onqVS0/GP05S5kCn9uPJ4D0x1TQYvddIjzf3/CVScftJp9g/aGJHZgFbOo2udxTYpbNEdaO4xKYCjhxaLFjNJ5VY3B6UyjcOrLhy6UlxcSqXneoPJged+MFaZTOZxITi4iYdr2e4dcB5Ee6LQyeOtyrzvSlR9geHXz5AlM3mWvFyUUkwX7lcQy4TxrcpmvWniF0jmmCswEx+JhzOwET8Lf2Yr4nU5LgifHdqsbfrSb/RtqQ0ZXj1NEl/ZIejPcIDOt5Zs8hMsrBhNEeEr3KZQ1ygjriM8ic3T+ajOHEAx4tSiSwcOOpI/KI6XqAzlcvxSO06sb/fq/9jazyOa0uVgSIMyHl52MzJlwegB38BLCruKec+zfIAAAAASUVORK5CYII=\n",
"text/latex": [
"$\\displaystyle \\left[ J_{1} + J_{2}, \\ J_{0} + J_{2}, \\ J_{0} + J_{1}\\right]$"
],
"text/plain": [
"[J₁ + J₂, J₀ + J₂, J₀ + J₁]"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"rhs = numpy.trace(hat(omega) @ J @ hat(omega).T)\n",
"display(rhs.collect(omega))\n",
"rhs_coeffs = [rhs.coeff(omega[i], 2) for i in range(omega.size)]\n",
"display(rhs_coeffs)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/latex": [
"$\\displaystyle \\left[ I_{x} = J_{1} + J_{2}, \\ I_{y} = J_{0} + J_{2}, \\ I_{z} = J_{0} + J_{1}\\right]$"
],
"text/plain": [
"[Iₓ = J₁ + J₂, I_y = J₀ + J₂, I_z = J₀ + J₁]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/latex": [
"$\\boldsymbol{J}=$"
],
"text/plain": [
"<IPython.core.display.Latex object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/latex": [
"$\\displaystyle \\left[\\begin{matrix}- \\frac{I_{x}}{2} + \\frac{I_{y}}{2} + \\frac{I_{z}}{2} & 0 & 0\\\\0 & \\frac{I_{x}}{2} - \\frac{I_{y}}{2} + \\frac{I_{z}}{2} & 0\\\\0 & 0 & \\frac{I_{x}}{2} + \\frac{I_{y}}{2} - \\frac{I_{z}}{2}\\end{matrix}\\right]$"
],
"text/plain": [
"⎡ Iₓ I_y I_z ⎤\n",
"⎢- ── + ─── + ─── 0 0 ⎥\n",
"⎢ 2 2 2 ⎥\n",
"⎢ ⎥\n",
"⎢ Iₓ I_y I_z ⎥\n",
"⎢ 0 ── - ─── + ─── 0 ⎥\n",
"⎢ 2 2 2 ⎥\n",
"⎢ ⎥\n",
"⎢ Iₓ I_y I_z⎥\n",
"⎢ 0 0 ── + ─── - ───⎥\n",
"⎣ 2 2 2 ⎦"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"eqs = [\n",
" Eq(lhs_coeff, rhs_coeff)\n",
" for lhs_coeff, rhs_coeff in zip(lhs_coeffs, rhs_coeffs)\n",
"]\n",
"display(eqs)\n",
"J_of_I = solve(eqs, numpy.diag(J).tolist())\n",
"J_solved = numpy.diag([J_of_I[numpy.diag(J)[i]] for i in range(3)])\n",
"display(Latex(\"$\\\\boldsymbol{J}=$\"), Matrix(J_solved))"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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
"text/latex": [
"$\\displaystyle x^{2} \\left(- \\frac{I_{x}}{2} + \\frac{I_{y}}{2} + \\frac{I_{z}}{2}\\right) + y^{2} \\left(\\frac{I_{x}}{2} - \\frac{I_{y}}{2} + \\frac{I_{z}}{2}\\right) + z^{2} \\left(\\frac{I_{x}}{2} + \\frac{I_{y}}{2} - \\frac{I_{z}}{2}\\right)$"
],
"text/plain": [
" 2 ⎛ Iₓ I_y I_z⎞ 2 ⎛Iₓ I_y I_z⎞ 2 ⎛Iₓ I_y I_z⎞\n",
"x ⋅⎜- ── + ─── + ───⎟ + y ⋅⎜── - ─── + ───⎟ + z ⋅⎜── + ─── - ───⎟\n",
" ⎝ 2 2 2 ⎠ ⎝2 2 2 ⎠ ⎝2 2 2 ⎠"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"x = numpy.array(symbols(\"x y z\"), dtype=Symbol)\n",
"(x.T @ J_solved @ x).collect(numpy.diag(I))"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.5"
},
"varInspector": {
"cols": {
"lenName": 16,
"lenType": 16,
"lenVar": 40
},
"kernels_config": {
"python": {
"delete_cmd_postfix": "",
"delete_cmd_prefix": "del ",
"library": "var_list.py",
"varRefreshCmd": "print(var_dic_list())"
},
"r": {
"delete_cmd_postfix": ") ",
"delete_cmd_prefix": "rm(",
"library": "var_list.r",
"varRefreshCmd": "cat(var_dic_list()) "
}
},
"types_to_exclude": [
"module",
"function",
"builtin_function_or_method",
"instance",
"_Feature"
],
"window_display": false
}
},
"nbformat": 4,
"nbformat_minor": 4
}