{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "from resonance.linear_systems import SimplePendulumSystem" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "sys = SimplePendulumSystem()" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'pendulum_mass': 0.0, 'pendulum_length': 0.0, 'acc_due_to_gravity': 0.0}" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sys.constants" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "_SingleDoFCoordinatesDict([('angle', 0.0)])" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sys.coordinates" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "_SingleDoFCoordinatesDict([('angle_vel', 0.0)])" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sys.speeds" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.0" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sys.coordinates['angle']" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "sys.constants['pendulum_mass'] = 1.0 # kg\n", "sys.constants['pendulum_length'] = 1.0 # m\n", "sys.constants['acc_due_to_gravity'] = 9.81 # m/s**2" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "import numpy as np" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "sys.coordinates['angle'] = np.deg2rad(10.0)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'pendulum_mass': 1.0, 'pendulum_length': 1.0, 'acc_due_to_gravity': 9.81}" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sys.constants" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "_SingleDoFCoordinatesDict([('angle', 0.17453292519943295)])" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sys.coordinates" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "def calc_x(pendulum_length, angle):\n", " return pendulum_length * np.sin(angle)" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "def calc_y(pendulum_length, angle):\n", " return pendulum_length * np.cos(angle)" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{}" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sys.measurements" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "sys.add_measurement('x', calc_x)" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'x': 0.17364817766693033}" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sys.measurements" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "sys.add_measurement('y', calc_y)" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'x': 0.17364817766693033, 'y': 0.984807753012208}" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sys.measurements" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.17364817766693033" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sys.measurements['x']" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [], "source": [ "sys.coordinates['angle'] = np.deg2rad(20.0)" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'x': 0.3420201433256687, 'y': 0.9396926207859084}" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sys.measurements" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [], "source": [ "traj = sys.free_response(2.0)" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", " | angle | \n", "angle_acc | \n", "angle_vel | \n", "x | \n", "y | \n", "
---|---|---|---|---|---|
time | \n", "\n", " | \n", " | \n", " | \n", " | \n", " |
0.00 | \n", "0.349066 | \n", "-3.424336 | \n", "0.000000 | \n", "0.342020 | \n", "0.939693 | \n", "
0.01 | \n", "0.348895 | \n", "-3.422656 | \n", "-0.034238 | \n", "0.341859 | \n", "0.939751 | \n", "
0.02 | \n", "0.348381 | \n", "-3.417620 | \n", "-0.068442 | \n", "0.341377 | \n", "0.939927 | \n", "
0.03 | \n", "0.347526 | \n", "-3.409230 | \n", "-0.102579 | \n", "0.340573 | \n", "0.940218 | \n", "
0.04 | \n", "0.346330 | \n", "-3.397497 | \n", "-0.136615 | \n", "0.339448 | \n", "0.940625 | \n", "
... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "
1.96 | \n", "0.345439 | \n", "-3.388754 | \n", "0.157201 | \n", "0.338609 | \n", "0.940927 | \n", "
1.97 | \n", "0.346841 | \n", "-3.402510 | \n", "0.123242 | \n", "0.339929 | \n", "0.940451 | \n", "
1.98 | \n", "0.347903 | \n", "-3.412930 | \n", "0.089162 | \n", "0.340927 | \n", "0.940090 | \n", "
1.99 | \n", "0.348624 | \n", "-3.420001 | \n", "0.054994 | \n", "0.341605 | \n", "0.939844 | \n", "
2.00 | \n", "0.349003 | \n", "-3.423718 | \n", "0.020773 | \n", "0.341961 | \n", "0.939714 | \n", "
201 rows × 5 columns
\n", "