|
@@ -1,25 +1,13 @@
|
|
|
{
|
|
|
"cells": [
|
|
|
- {
|
|
|
- "cell_type": "code",
|
|
|
- "execution_count": 1,
|
|
|
- "metadata": {},
|
|
|
- "outputs": [],
|
|
|
- "source": [
|
|
|
- "from sympy import *\n",
|
|
|
- "init_printing()\n",
|
|
|
- "import matplotlib.pyplot as plt\n",
|
|
|
- "import scipy.integrate as integrate\n",
|
|
|
- "import numpy as np"
|
|
|
- ]
|
|
|
- },
|
|
|
{
|
|
|
"cell_type": "markdown",
|
|
|
"metadata": {},
|
|
|
"source": [
|
|
|
- "# Principle of Least Action\n",
|
|
|
+ "# Background: Principle of Least Action\n",
|
|
|
"\n",
|
|
|
- "based on Chapter 14 of Eriksson, Kenneth, Donald Estep, and Claes Johnson. 2004. *Applied Mathematics: Body and Soul*. Volume 2. Berlin, Heidelberg: Springer Berlin Heidelberg. <https://doi.org/10.1007/978-3-662-05798-8>.\n",
|
|
|
+ "based on Chapter 14 of: \n",
|
|
|
+ "- Eriksson, Kenneth, Donald Estep, and Claes Johnson. 2004. *Applied Mathematics: Body and Soul*. Volume 2. Berlin, Heidelberg: Springer Berlin Heidelberg. <https://doi.org/10.1007/978-3-662-05798-8>.\n",
|
|
|
"\n",
|
|
|
"The principle of least action states that a system's trajectory $u(t)$ under the effect of conservative forces, over an interval of time $[t_1, t_2]$ is such that the following integral, called the action integral, is stationary:\n",
|
|
|
"$$\n",
|
|
@@ -38,10 +26,29 @@
|
|
|
"The kinetic energy of the ball is $T(\\dot{u}(t)) = \\frac{1}{2}m\\dot{u}(t)^2$ and the potential energy is $V(u(t)) = mgu(t)$."
|
|
|
]
|
|
|
},
|
|
|
+ {
|
|
|
+ "cell_type": "code",
|
|
|
+ "execution_count": null,
|
|
|
+ "metadata": {
|
|
|
+ "collapsed": true
|
|
|
+ },
|
|
|
+ "outputs": [],
|
|
|
+ "source": [
|
|
|
+ "# Import necessary libraries \n",
|
|
|
+ "\n",
|
|
|
+ "from sympy import *\n",
|
|
|
+ "init_printing()\n",
|
|
|
+ "import matplotlib.pyplot as plt\n",
|
|
|
+ "import scipy.integrate as integrate\n",
|
|
|
+ "import numpy as np"
|
|
|
+ ]
|
|
|
+ },
|
|
|
{
|
|
|
"cell_type": "code",
|
|
|
"execution_count": 2,
|
|
|
- "metadata": {},
|
|
|
+ "metadata": {
|
|
|
+ "collapsed": false
|
|
|
+ },
|
|
|
"outputs": [
|
|
|
{
|
|
|
"data": {
|
|
@@ -72,7 +79,9 @@
|
|
|
{
|
|
|
"cell_type": "code",
|
|
|
"execution_count": 3,
|
|
|
- "metadata": {},
|
|
|
+ "metadata": {
|
|
|
+ "collapsed": false
|
|
|
+ },
|
|
|
"outputs": [
|
|
|
{
|
|
|
"data": {
|
|
@@ -153,7 +162,9 @@
|
|
|
{
|
|
|
"cell_type": "code",
|
|
|
"execution_count": 4,
|
|
|
- "metadata": {},
|
|
|
+ "metadata": {
|
|
|
+ "collapsed": false
|
|
|
+ },
|
|
|
"outputs": [
|
|
|
{
|
|
|
"data": {
|
|
@@ -185,7 +196,9 @@
|
|
|
{
|
|
|
"cell_type": "code",
|
|
|
"execution_count": 5,
|
|
|
- "metadata": {},
|
|
|
+ "metadata": {
|
|
|
+ "collapsed": false
|
|
|
+ },
|
|
|
"outputs": [
|
|
|
{
|
|
|
"data": {
|
|
@@ -221,7 +234,9 @@
|
|
|
{
|
|
|
"cell_type": "code",
|
|
|
"execution_count": 6,
|
|
|
- "metadata": {},
|
|
|
+ "metadata": {
|
|
|
+ "collapsed": false
|
|
|
+ },
|
|
|
"outputs": [
|
|
|
{
|
|
|
"data": {
|
|
@@ -295,7 +310,9 @@
|
|
|
{
|
|
|
"cell_type": "code",
|
|
|
"execution_count": 7,
|
|
|
- "metadata": {},
|
|
|
+ "metadata": {
|
|
|
+ "collapsed": false
|
|
|
+ },
|
|
|
"outputs": [
|
|
|
{
|
|
|
"data": {
|
|
@@ -327,7 +344,9 @@
|
|
|
{
|
|
|
"cell_type": "code",
|
|
|
"execution_count": 8,
|
|
|
- "metadata": {},
|
|
|
+ "metadata": {
|
|
|
+ "collapsed": false
|
|
|
+ },
|
|
|
"outputs": [
|
|
|
{
|
|
|
"data": {
|
|
@@ -362,7 +381,9 @@
|
|
|
{
|
|
|
"cell_type": "code",
|
|
|
"execution_count": 9,
|
|
|
- "metadata": {},
|
|
|
+ "metadata": {
|
|
|
+ "collapsed": true
|
|
|
+ },
|
|
|
"outputs": [],
|
|
|
"source": [
|
|
|
"# Computes the action integral in [0,10]\n",
|
|
@@ -383,7 +404,9 @@
|
|
|
{
|
|
|
"cell_type": "code",
|
|
|
"execution_count": 10,
|
|
|
- "metadata": {},
|
|
|
+ "metadata": {
|
|
|
+ "collapsed": false
|
|
|
+ },
|
|
|
"outputs": [
|
|
|
{
|
|
|
"data": {
|
|
@@ -416,7 +439,9 @@
|
|
|
{
|
|
|
"cell_type": "code",
|
|
|
"execution_count": 11,
|
|
|
- "metadata": {},
|
|
|
+ "metadata": {
|
|
|
+ "collapsed": false
|
|
|
+ },
|
|
|
"outputs": [
|
|
|
{
|
|
|
"data": {
|
|
@@ -458,7 +483,9 @@
|
|
|
{
|
|
|
"cell_type": "code",
|
|
|
"execution_count": 12,
|
|
|
- "metadata": {},
|
|
|
+ "metadata": {
|
|
|
+ "collapsed": false
|
|
|
+ },
|
|
|
"outputs": [
|
|
|
{
|
|
|
"data": {
|
|
@@ -491,7 +518,9 @@
|
|
|
{
|
|
|
"cell_type": "code",
|
|
|
"execution_count": 13,
|
|
|
- "metadata": {},
|
|
|
+ "metadata": {
|
|
|
+ "collapsed": false
|
|
|
+ },
|
|
|
"outputs": [
|
|
|
{
|
|
|
"data": {
|
|
@@ -531,7 +560,9 @@
|
|
|
{
|
|
|
"cell_type": "code",
|
|
|
"execution_count": 14,
|
|
|
- "metadata": {},
|
|
|
+ "metadata": {
|
|
|
+ "collapsed": false
|
|
|
+ },
|
|
|
"outputs": [
|
|
|
{
|
|
|
"data": {
|
|
@@ -606,7 +637,9 @@
|
|
|
{
|
|
|
"cell_type": "code",
|
|
|
"execution_count": 15,
|
|
|
- "metadata": {},
|
|
|
+ "metadata": {
|
|
|
+ "collapsed": false
|
|
|
+ },
|
|
|
"outputs": [
|
|
|
{
|
|
|
"data": {
|
|
@@ -630,7 +663,9 @@
|
|
|
{
|
|
|
"cell_type": "code",
|
|
|
"execution_count": 16,
|
|
|
- "metadata": {},
|
|
|
+ "metadata": {
|
|
|
+ "collapsed": false
|
|
|
+ },
|
|
|
"outputs": [
|
|
|
{
|
|
|
"data": {
|
|
@@ -662,7 +697,7 @@
|
|
|
"cell_type": "markdown",
|
|
|
"metadata": {},
|
|
|
"source": [
|
|
|
- "# Exercise\n",
|
|
|
+ "# Exercise : Mass-Spring System Derivation\n",
|
|
|
"\n",
|
|
|
"Use both the above methods to check which of the following is the correct trajectory for the mass-spring system (there are no external forces acting on the system). \n",
|
|
|
"Assume that the mass starts at rest in position $1$."
|
|
@@ -671,7 +706,9 @@
|
|
|
{
|
|
|
"cell_type": "code",
|
|
|
"execution_count": 17,
|
|
|
- "metadata": {},
|
|
|
+ "metadata": {
|
|
|
+ "collapsed": false
|
|
|
+ },
|
|
|
"outputs": [
|
|
|
{
|
|
|
"data": {
|
|
@@ -699,7 +736,9 @@
|
|
|
{
|
|
|
"cell_type": "code",
|
|
|
"execution_count": 18,
|
|
|
- "metadata": {},
|
|
|
+ "metadata": {
|
|
|
+ "collapsed": false
|
|
|
+ },
|
|
|
"outputs": [
|
|
|
{
|
|
|
"data": {
|
|
@@ -728,7 +767,9 @@
|
|
|
{
|
|
|
"cell_type": "code",
|
|
|
"execution_count": 19,
|
|
|
- "metadata": {},
|
|
|
+ "metadata": {
|
|
|
+ "collapsed": false
|
|
|
+ },
|
|
|
"outputs": [
|
|
|
{
|
|
|
"data": {
|
|
@@ -757,7 +798,9 @@
|
|
|
{
|
|
|
"cell_type": "code",
|
|
|
"execution_count": 20,
|
|
|
- "metadata": {},
|
|
|
+ "metadata": {
|
|
|
+ "collapsed": false
|
|
|
+ },
|
|
|
"outputs": [
|
|
|
{
|
|
|
"data": {
|
|
@@ -786,7 +829,9 @@
|
|
|
{
|
|
|
"cell_type": "code",
|
|
|
"execution_count": 21,
|
|
|
- "metadata": {},
|
|
|
+ "metadata": {
|
|
|
+ "collapsed": false
|
|
|
+ },
|
|
|
"outputs": [
|
|
|
{
|
|
|
"data": {
|