diff --git a/补课/多体动力学/05_vectors.ipynb b/补课/多体动力学/05_vectors.ipynb index e69de29..2f83ab4 100644 --- a/补课/多体动力学/05_vectors.ipynb +++ b/补课/多体动力学/05_vectors.ipynb @@ -0,0 +1,92 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "import sympy as sm\n", + "import sympy.physics.mechanics as me\n", + "sm.init_printing()" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "q1, q2, q3, q4 = sm.symbols('q1:5')\n", + "l1, l2, l3, l4 = sm.symbols('l1:5')" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "N, A, B, C = sm.symbols('N, A, B, C', cls=me.ReferenceFrame)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "A.orient_body_fixed(N, (q1, q2, 0), 'ZXZ')\n" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "B.orient_axis(A, q3, A.x)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "C.orient_body_fixed(B, (q3, q4, 0), 'XZX')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "r_P1_P2 = l1 * A.z\n", + "r_P1_P2" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "blade", + "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.10.16" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/补课/多体动力学/05_vectors.py b/补课/多体动力学/05_vectors.py new file mode 100644 index 0000000..c0b5edd --- /dev/null +++ b/补课/多体动力学/05_vectors.py @@ -0,0 +1,30 @@ +import sympy as sm +import sympy.physics.mechanics as me +sm.init_printing() + +q1, q2, q3, q4 = sm.symbols('q1:5') +l1, l2, l3, l4 = sm.symbols('l1:5') + +N, A, B, C = sm.symbols('N, A, B, C', cls=me.ReferenceFrame) + +A.orient_body_fixed(N, (q1, q2, 0), 'ZXZ') +print(A.dcm(N)) + +B.orient_axis(A, q3, A.x) + +C.orient_body_fixed(B, (q3, q4, 0), 'XZX') + +r_P1_P2 = l1 * A.z +print(r_P1_P2) + +r_P2_P3 = l2 * B.z +print(r_P2_P3) + +r_P3_P4 = l3 *C.z - l4 *C.y +print(r_P3_P4) + +r_P1_P4 = r_P1_P2 + r_P2_P3 + r_P3_P4 +print(r_P1_P4) + +print(r_P1_P4.express(B)) +print(r_P1_P4.free_symbols(N)) \ No newline at end of file diff --git a/补课/多体动力学/06_Vector_Differentiation.md b/补课/多体动力学/06_Vector_Differentiation.md new file mode 100644 index 0000000..e69de29 diff --git a/补课/多体动力学/sympy_start.ipynb b/补课/多体动力学/sympy_start.ipynb index 6c2b697..e5e73c1 100644 --- a/补课/多体动力学/sympy_start.ipynb +++ b/补课/多体动力学/sympy_start.ipynb @@ -289,7 +289,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Turtle", + "display_name": "blade", "language": "python", "name": "python3" }, @@ -303,7 +303,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.8" + "version": "3.10.16" } }, "nbformat": 4,