(*********************************************************************** Mathematica-Compatible Notebook This notebook can be used on any computer system with Mathematica 4.0, MathReader 4.0, or any compatible application. The data for the notebook starts with the line containing stars above. To get the notebook into a Mathematica-compatible application, do one of the following: * Save the data starting with the line of stars above into a file with a name ending in .nb, then open the file inside the application; * Copy the data starting with the line of stars above to the clipboard, then use the Paste menu command inside the application. Data for notebooks contains only printable 7-bit ASCII and can be sent directly in email or through ftp in text mode. Newlines can be CR, LF or CRLF (Unix, Macintosh or MS-DOS style). NOTE: If you modify the data for this notebook not in a Mathematica- compatible application, you must delete the line below containing the word CacheID, otherwise Mathematica-compatible applications may try to use invalid cache data. For more information on notebooks and Mathematica-compatible applications, contact Wolfram Research: web: http://www.wolfram.com email: info@wolfram.com phone: +1-217-398-0700 (U.S.) Notebook reader applications are available free of charge from Wolfram Research. ***********************************************************************) (*CacheID: 232*) (*NotebookFileLineBreakTest NotebookFileLineBreakTest*) (*NotebookOptionsPosition[ 516354, 16335]*) (*NotebookOutlinePosition[ 552656, 17515]*) (* CellTagsIndexPosition[ 552612, 17511]*) (*WindowFrame->Normal*) Notebook[{ Cell[CellGroupData[{ Cell["\<\ Code Generation for Simulation and Control Applications\ \>", "Title", CellMargins->{{0, -87}, {Inherited, Inherited}}, Evaluatable->False, CellLabelMargins->{{0, Inherited}, {Inherited, Inherited}}, TextAlignment->Left, TextJustification->0, AspectRatioFixed->True], Cell[TextData[{ "\nMats Jirstrand and Johan Gunnarsson\n\n", ButtonBox["MathCore AB", ButtonData:>{ URL[ "http://www.mathcore.com"], None}, ButtonStyle->"Hyperlink"], "\nMj\[ADoubleDot]rdevi Science Park", StyleBox["\n", TextAlignment->Center, TextJustification->0, FontFamily->"Arial"], "SE-583 30 Link\[ODoubleDot]ping", StyleBox["\n", TextAlignment->Center, TextJustification->0, FontFamily->"Arial"], "Sweden\n\nThird International ", StyleBox["Mathematica", FontSlant->"Italic"], " Symposium 1999,\n23-25 August, RISC, Linz, Austria" }], "Author", TextAlignment->Left, TextJustification->0, FontSize->12], Cell[CellGroupData[{ Cell["Abstract", "Section"], Cell[TextData[{ "The use of ", StyleBox["Mathematica", FontSlant->"Italic"], " in combination with ", StyleBox["MathCode C++", FontSlant->"Italic"], " is illustrated in a context of modeling of dynamical systems and design \ of controllers. The symbolic tools are used to derive a set of nonlinear \ differential equations using Euler-Lagrange equations of motion. The model is \ converted to C++ using ", StyleBox["MathCode C++", FontSlant->"Italic"], ", which produces an efficient implementation of the large expressions used \ in the model. The exported code is used for simulations, which illustrates \ that ", StyleBox["Mathematica", FontSlant->"Italic"], " in combination with ", StyleBox["MathCode C++", FontSlant->"Italic"], " can be used to do accurate and powerful simulations of nonlinear systems. \ Controller synthesis is performed where the resulting controller is exported \ to C++ and run externally. The applications presented are a seesaw/pendulum \ process and aerodynamics of a fighter aircraft." }], "Text", FontFamily->"Times New Roman"] }, Open ]], Cell[CellGroupData[{ Cell["1 Introduction", "Section"], Cell[TextData[{ "Control system design is a discipline where advanced mathematics is \ applied to real world problems ranging from paper and pulp manufacturing, \ aircraft, and CD players to bio-chemical processes, logistics, and financial \ applications. ", StyleBox["Mathematica", FontSlant->"Italic"], " is very powerful for dealing with the mathematics in these control \ problems and the application package Control System Professional (CSP) \ implements many useful features. When it comes to nonlinear systems the \ combination of the symbolic and numeric capabilities of ", StyleBox["Mathematica", FontSlant->"Italic"], " makes modeling and control system design in this environment very \ attractive. The notebook concept for documentation of different trade-offs \ and decisions during the design process also contributes to making ", StyleBox["Mathematica", FontSlant->"Italic"], " suitable for this kind of work." }], "Text"], Cell[TextData[{ "The application package ", StyleBox["MathCode C++", FontSlant->"Italic"], " adds automatic C++ code generation to ", StyleBox["Mathematica,", FontSlant->"Italic"], " which can be used both to enhance performance of simulations of large \ systems and to generate stand-alone C++ code to be used in applications \ separately from ", StyleBox["Mathematica.", FontSlant->"Italic"], " Performance will be the issue in the seesaw/pendulum example below while \ the stand-alone feature is explored in the fighter aircraft example. The \ stand-alone code generation feature of ", StyleBox["MathCode C++", FontSlant->"Italic"], " makes it possible to design and prototype a controller in ", StyleBox["Mathematica ", FontSlant->"Italic"], "and then \"lift out\" the resulting stand-alone code to be used in the \ real control system. This minimizes the need of coding the control law \ manually from the algorithms designed in ", StyleBox["Mathematica", FontSlant->"Italic"], "." }], "Text"], Cell[TextData[{ "In this document we will try to illustrate the use of ", StyleBox["Mathematica", FontSlant->"Italic"], " together with ", StyleBox["MathCode C++", FontSlant->"Italic"], " for modeling, control system design, and code generation. The document is \ organized as follows. In the rest of this section we give some basic facts \ about dynamic systems needed to formulate controller design problems. In \ Section 2 a nonlinear mechanical system is modeled and simulated using \ generated C++ code. In Section 3 controller design for an aircraft is done \ and in Section 4 we give some conclusions. " }], "Text"], Cell[CellGroupData[{ Cell["Preliminaries", "Subsection"], Cell["\<\ Many dynamic systems can be modeled by a set of first order \ differential equations, see e.g. [1, 2]\ \>", "Text"], Cell[BoxData[{ RowBox[{"\t\t", Cell[TextData[Cell[BoxData[ RowBox[{ RowBox[{Cell[""], \(dx[t]\/dt\)}], " ", "=", " ", \(f[x[t], u[t]]\)}]]]]]}], "\[IndentingNewLine]", RowBox[{"\t \t", Cell[TextData[Cell[BoxData[ \(TraditionalForm\`y[t] = \ g[x[t]]\)]]]]}]}], "NumberedEquation"], Cell[TextData[{ "where ", Cell[BoxData[ FormBox[ RowBox[{ RowBox[{ FormBox[\(f : \[DoubleStruckCapitalR]\^n\), "TraditionalForm"], "\[Cross]", \(\[DoubleStruckCapitalR]\^m\)}], "\[Rule]", \(\[DoubleStruckCapitalR]\^n\)}], TraditionalForm]]], ". Here ", Cell[BoxData[ \(TraditionalForm\`x[t] \[Element] \[DoubleStruckCapitalR]\^n\)]], ", ", Cell[BoxData[ \(TraditionalForm\`u[t] \[Element] \[DoubleStruckCapitalR]\^m\)]], ", and ", Cell[BoxData[ \(TraditionalForm\`y[t] \[Element] \[DoubleStruckCapitalR]\^p\)]], " are called the ", StyleBox["states", FontSlant->"Italic"], ", ", StyleBox["inputs,", FontSlant->"Italic"], " and ", StyleBox["outputs", FontSlant->"Italic"], " of the system, respectively. Equation (1) is called the ", StyleBox["state space form", FontSlant->"Italic"], " of the equations describing the behavior of the system and is \ particularly useful for control system design. We will also use the \ dot-notation ", Cell[BoxData[ \(TraditionalForm\`x\& . \)]], " for denoting differentiation w.r.t. time ", Cell[BoxData[ \(TraditionalForm\`dx\/dt\)]], ". If the system is linear the state space form can be written as" }], "Text"], Cell[BoxData[ RowBox[{"\t\t", RowBox[{Cell[TextData[Cell[BoxData[ \(dx[t]\/dt = \[ScriptCapitalA]\ . x[t] + \[ScriptCapitalB] . u[t]\)]]]], ",", "\[IndentingNewLine]", "\t\t ", Cell[ TextData[Cell[BoxData[ \(TraditionalForm\`y[t] = \[ScriptCapitalC] . x[t]\)]]]]}]}]], "NumberedEquation"], Cell[TextData[{ "where ", Cell[BoxData[ \(TraditionalForm\`\[ScriptCapitalA] \[Element] \[DoubleStruckCapitalR]\ \^\(n\[Cross]n\)\)]], ", ", Cell[BoxData[ \(TraditionalForm\`\[ScriptCapitalB] \[Element] \[DoubleStruckCapitalR]\ \^\(n\[Cross]m\)\)]], ", and ", Cell[BoxData[ \(TraditionalForm\`\[ScriptCapitalC] \[Element] \[DoubleStruckCapitalR]\ \^\(p\[Cross]n\)\)]], " are constant real matrices. If ", Cell[BoxData[ \(TraditionalForm\`f[0, 0] = 0\)]], " in (1) the system can be linearized around x=0, u=0. The \ \[ScriptCapitalA], \[ScriptCapitalB], and \[ScriptCapitalC] matrices are then \ computed from ", Cell[BoxData[ \(TraditionalForm\`f\)]], " and ", Cell[BoxData[ \(TraditionalForm\`g\)]], " by taking partial derivatives as follows" }], "Text"], Cell[BoxData[ RowBox[{"\t\t", RowBox[{Cell[TextData[{ "\[ScriptCapitalA] = ", Cell[BoxData[ RowBox[{\(\[PartialD]f[x, u]\/\[PartialD]x\), SubscriptBox["\[VerticalSeparator]", GridBox[{ {\(x = 0\)}, {\(u = 0\)} }]]}]]] }]], ",", "\[IndentingNewLine]", "\t\t", Cell[TextData[{ "\[ScriptCapitalB] = ", Cell[BoxData[ RowBox[{\(\[PartialD]f[x, u]\/\[PartialD]u\), SubscriptBox["\[VerticalSeparator]", GridBox[{ {\(x = 0\)}, {\(u = 0\)} }]]}]]] }]], ",", "\[IndentingNewLine]", "\t\t", Cell[TextData[{ "\[ScriptCapitalC] = ", Cell[BoxData[ \(\(\(\[PartialD]g[ x]\/\[PartialD]x\)\( \[VerticalSeparator] \_\(x = 0\)\)\)\)]] }]]}]}]], "NumberedEquation"], Cell["\<\ The linearized model is usually a good approximation whenever the \ states and input to the system are small. There exists a large number of \ control design methods for linear systems which makes it desirable to work \ with linear models if possible during controller synthesis. The performance \ of the resulting controller can then be studied in simulations where the \ linear model has been exchanged with the nonlinear one.\ \>", "Text"], Cell["\<\ A linear state-feedback controller is a very simple type of \ controller where the control signal is a linear combination of the states \ that are assumed to be measurable. Hence, a linear state-feedback law has the \ form\ \>", "Text"], Cell[BoxData[ RowBox[{ "\t\t", Cell["u[t] = -\[ScriptCapitalL].x[t]"]}]], "NumberedEquation"], Cell[TextData[{ "There exists many methods for computing the matrix \[ScriptCapitalL] but a \ necessary condition is that the chosen ", Cell[BoxData[ \(TraditionalForm\`\[ScriptCapitalL]\)]], " makes the closed loop system asymptotically stable, which essentially \ means that non-zero states converge to zero. More or less advanced methods \ makes it possible to compute ", Cell[BoxData[ \(TraditionalForm\`\[ScriptCapitalL]\)]], " such that different trade offs between performance and robustness can be \ obtained, see e.g. [1, 4, 5]." }], "Text"], Cell[TextData[{ "A slightly more advanced controller is the linear dynamic controller, \ which includes an internal model of the system to be controlled. A so called \ observer is used to estimated the states ", Cell[BoxData[ \(TraditionalForm\`x[t]\)]], " of the system from measured signals ", Cell[BoxData[ \(TraditionalForm\`y[t]\)]], " and a linear feedback law is used to compute the input to the system to \ be controlled. Using the notation ", Cell[BoxData[ \(TraditionalForm\`x\&^[t]\)]], " for estimated states the linear dynamic controller can be written as \ follows" }], "Text"], Cell[BoxData[ RowBox[{"\t\t", RowBox[{Cell[TextData[Cell[BoxData[ \(\(d x\&^[t]\)\/dt\ = \ \[ScriptCapitalA]\_c\ . x\&^[t] + \[ScriptCapitalB]\_c . y[t]\)]]]], ",", "\[IndentingNewLine]", "\t\t ", Cell[TextData[Cell[BoxData[ \(u[ t]\ = \ \(-\[ScriptCapitalL] . \(x\&^\)[ t]\)\)]]]]}]}]], "NumberedEquation"], Cell["\<\ Hence, a dynamic controller requires real time solving of a system \ of differential equations. In the seesaw/pendulum example below we will use a \ linear state-feedback controller of the form (1) and in the fighter aircraft \ example we will use the observer based controller of the form (5).\ \>", \ "Text"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["2 The Seesaw/Pendulum Process", "Section"], Cell[TextData[{ "In this section we will illustrate how the symbolic capabilities of ", StyleBox["Mathematica", FontSlant->"Italic"], " can be used to derive a model of a nonlinear system. Using ", StyleBox["MathCode C++", FontSlant->"Italic"], " the large symbolic expressions in the nonlinear model are then converted \ to C++ code and used to simulate the system very efficiently. The system is a \ laboratory process frequently used in control education known as the \ seesaw/pendulum process. One implementation of the seesaw/pendulum process \ has been developed by Quanser Consulting (", ButtonBox["http://www.quanser.com", ButtonData:>{ URL[ "http://www.quanser.com"], None}, ButtonStyle->"Hyperlink"], ")." }], "Text"], Cell[CellGroupData[{ Cell["The System", "Subsection"], Cell[TextData[{ "The process consists of a seesaw, two carts called ", Cell[BoxData[ \(TraditionalForm\`C\_1\)]], " and ", Cell[BoxData[ \(TraditionalForm\`C\_2\)]], ", two parallel tracks, an inverted pendulum, and a weight. Each cart can \ be driven by a DC motor controlled by an input voltage. Cart ", Cell[BoxData[ \(TraditionalForm\`C\_1\)]], " carries the weight and cart ", Cell[BoxData[ \(TraditionalForm\`C\_2\)]], " carries the inverted pendulum attached by a friction free joint. The \ carts can be moved along the tracks by controlling the input voltages of the \ DC motors." }], "Text"], Cell[TextData[{ "We start by modeling the open loop system, i.e., without any feedback from \ measured signals. The forces ", Cell[BoxData[ \(TraditionalForm\`F\_1\)]], " and ", Cell[BoxData[ \(TraditionalForm\`F\_2\)]], " acting on each cart are chosen as inputs. We will use the Lagrangian \ methodology to obtain a nonlinear model of the system and then linearize it. \ The linearized model is used for control system design where the Control \ System Professional (CSP) application package is used. The closed loop system \ are then simulated both within ", StyleBox["Mathematica", FontSlant->"Italic"], " and by external code generated using ", StyleBox["MathCode C++", FontSlant->"Italic"], "." }], "Text"], Cell[GraphicsData["Bitmap", "\<\ CF5dJ6E]HGAYHf4PAg9QL6QYHgWoo000>Ool3000KOol4000JOol3000JOol4000KOol3 000KOol4000JOol3000JOol4000HOol4000JOol4000JOol3000KOol3000J Ool4000JOol4000JOol3000JOol4000IOol4000JOol4000JOol3000JOol4 000IOol4000KOol3000JOol3000KOol3000IOol4000KOol3000JOol4000J Ool3000JOol3000KOol3000JOol4000JOol3000IOol3000KOol4000JOol3 000JOol4000iOol000moo`<001]oo`@001Yoo`<001Yoo`@001]oo`<001]o o`@001Yoo`<001Yoo`@001Qoo`@001Yoo`@001Yoo`<001]oo`<001Yoo`@0 01Yoo`@001Yoo`<001Yoo`@001Uoo`@001Yoo`@001Yoo`<001Yoo`@001Uo o`@001]oo`<001Yoo`<001]oo`<001Uoo`@001]oo`<001Yoo`@001Yoo`<0 01Yoo`<001]oo`<001Yoo`@001Yoo`<001Uoo`<001]oo`@001Yoo`<001Yo o`@003Qoo`0047oo0`006goo10006Woo0`006Woo10006goo0`006goo1000 6Woo0`006Woo100067oo10006Woo10006Woo0`006goo0`006Woo10006Woo 10006Woo0`006Woo10006Goo10006Woo10006Woo0`006Woo10006Goo1000 6goo0`006Woo0`006goo0`006Goo10006goo0`006Woo10006Woo0`006Woo 0`006goo0`006Woo10006Woo0`006Goo0`006goo10006Woo0`006Woo1000 =goo000AOol3000KOol4000JOol3000JOol4000KOol3000KOol4000JOol3 000JOol4000HOol4000JOol4000JOol3000KOol3000JOol4000JOol4000J Ool3000JOol4000IOol4000JOol4000JOol3000JOol4000IOol4000KOol3 000JOol3000KOol3000IOol4000KOol3000JOol4000JOol3000JOol3000K Ool3000JOol4000JOol3000IOol3000KOol4000JOol3000JOol4000fOol0 019oo`<001]oo`@001Yoo`<001Yoo`@001]oo`<001]oo`@001Yoo`<001Yo o`@001Qoo`@001Yoo`@001Yoo`<001]oo`<001Yoo`@001Yoo`@001Yoo`<0 01Yoo`@001Uoo`@001Yoo`@001Yoo`<001Yoo`@001Uoo`@001]oo`<001Yo o`<001]oo`<001Uoo`@001]oo`<001Yoo`@001Yoo`<001Yoo`<001]oo`<0 01Yoo`@001Yoo`<001Uoo`<001]oo`@001Yoo`<001Yoo`@003Eoo`004goo 0`006goo10006Woo0`006Woo10006goo0`006goo10006Woo0`006Woo1000 67oo10006Woo10006Woo0`006goo0`006Woo10006Woo10006Woo0`006Woo 10006Goo10006Woo10006Woo0`006Woo10006Goo10006goo0`006Woo0`00 6goo0`006Goo10006goo0`006Woo10006Woo0`006Woo0`006goo0`006Woo 10006Woo0`006Goo0`006goo10006Woo0`006Woo1000=7oo000DOol3000K Ool4000JOol3000JOol4000KOol3000KOol4000JOol3000JOol4000HOol4 000JOol4000JOol3000KOol3000JOol4000JOol4000JOol3000JOol4000I Ool4000JOol4000JOol3000JOol4000IOol4000KOol3000JOol3000KOol3 000IOol4000KOol3000JOol4000JOol3000JOol3000KOol3000JOol4000J Ool3000IOol3000KOol4000JOol3000JOol4000cOol001Eoo`<001]oo`@0 01Yoo`<001Yoo`@001]oo`<001]oo`@001Yoo`<001Yoo`@001Qoo`@001Yo o`@001Yoo`<001]oo`<001Yoo`@001Yoo`@001Yoo`<001Yoo`@001Uoo`@0 01Yoo`@001Yoo`<001Yoo`@001Uoo`@001]oo`<001Yoo`<001]oo`<001Uo o`@001]oo`<001Yoo`@001Yoo`<001Yoo`<001]oo`<001Yoo`@001Yoo`<0 01Uoo`<001]oo`@001Yoo`<001Yoo`@0039oo`005Woo0`006goo10006Woo 0`006Woo10006goo0`006goo10006Woo0`006Woo100067oo10006Woo1000 6Woo0`006goo0`006Woo10006Woo10006Woo0`006Woo10006Goo10006Woo 10006Woo0`006Woo10006Goo10006goo0`006Woo0`006goo0`006Goo1000 6goo0`006Woo10006Woo0`006Woo0`006goo0`006Woo10006Woo0`006Goo 0`006goo10006Woo0`006Woo1000@00000YBP=oo`006goo0`006goo 10006Woo0`006Woo10006goo0`006goo0`006goo0`006Woo0`006Goo0`00 6goo0`006goo0`006goo0P006goo0`006goo0`006goo0`006Woo0`006Woo 0`006goo0`006goo0`006Woo0`006Woo10006goo0`006Woo0`006goo0`00 6Goo10006goo0`006Woo0`006goo0`006Woo0`006goo0`006Woo0`006goo 0`006Goo0`006goo0`006goo0`006Woo0`007Woo00Ag_@Q2000YBPAoo`04 8@P000Q2Mkd3Ool00?l00?l00?l00?l002d001moo`04E[D00000E[D2Ool0 14Ha000005Je17oo003o003o003o003o000/000QOol00bU:000@Q002Mkd0 0`Q2000YBP05Ool00?mooomoo`5oobd00?mooomooamoo`08Kg/8@P00AS4Y BP00249g_@Eoo`00ogooogoo0Woo:`00ogooogoo8Goo00=6<@0000000P00 00=F]GooOol017oo003oOoooOol3OolY003oOoooOolSOol01248000002U: 1goo003oOoooOol4OolW003oOoooOolTOol01248000002481goo003oOooo Ool4OolV003oOoooOolTOol01THa000000Q20016<@Ioo`00ogooogoo1Goo 8`00ogooogoo9Goo00ENm`000016Woo003oOoooOolOol=003o OoooOolaOol70007Ool00?mooomoo`ioo`d00?mooomooc5oo`X000Aoo`00 ogooogoo3Woo3P00ogooUGoo30002Goo2`002Woo2`002Woo2`002Goo3000 2Goo30002Goo2`002Woo5P00003oOoooOol>OolR0009Ool;000:Ool;000: Ool;000:Ool;0009Ool<0009Ool<0009Ool<0009Ool;000:Ool;000:Ool; 0009Ool<0009Ool<0009Ool<0009Ool;000:Ool;000:Ool;0009Ool<0009 Ool<002SOol<0002Ool00?mooomoo`9oo`D000IoobT00?mooomooaIoo`P0 00Ioo`00ogoongoo1`001Goo4`002Woo8@00ogooogoo1Woo1@002Goo003o OooVOol;000AOolH000JOolQ003oOooeOol2000goo8000ogooi7oo003oOonlOol<000[Ool;000BOol8001]o ob400?moocAoo`00ogoo7goo0P002Woo0`000Woo00<007ooOol0Rgoo2`00 C7oo00<007ooOol0ngoo8@00ogoo97oo003oOolFOol:000?Ool30027Ool; 001AOol00`00Oomoo`3oOol7oo00<007oo Ool0GWoo2`00Ngoo00<007ooOol0ogooR7oo8@00U7oo003cOol5000hOol0 0`00Oomoo`1IOol;0020Ool00`00Oomoo`3oOonHOolQ0024Ool00?9oo`H0 03Qoo`03001oogoo05Aoo`/008Eoo`03001oogoo0?moojQoob4007Aoo`00 lWoo1000>Woo00<007ooOol0Cgoo2`00RWoo00<007ooOol0ogoo^7oo8@00 I7oo003eOol00`00Oomoo`0XOol01UJe:DXQ2248Lh0AGoo2`00Y7oo2@00ogooogoo47oo0P00:Goo 003oOolNOol00b480016<@10Ool;002WOol=003oOoooOol>Ool2000YOol0 0?mooaioo`038@P004Ha03]oo`/00:]oo`P000=oo`D00?mooomoo`aoo`80 02Uoo`00mGoo00<007ooOol09Goo007oo00<007ooOol01Goo2`00b7oo3@002Woo0P00ogooogoo 2Goo0P00:7oo003oOolbOol00`00Oomoo`0;003=Ool=000:Ool3003oOooo Ool8Ool2000XOol00?mooc1oo`/00=9oo`h000Uoo`<00?mooomoo`Qoo`80 02Qoo`00ogoo;7oo2P00egoo6P00ogooogoo27oo0P00:7oo003oOolWOol; 003DOol30004OolJ003oOoooOol8Ool2000XOol00?moob9oo`/00=5oo`T0 00Ioo`8000]oo``00?mooomoo`Uoo`8002Qoo`00ogoo7Goo2`00`Goo2`00 6Goo0P002goo3000ogooogoo2Goo0P00:7oo003fOol00`00Oomoo`0NOol; 000?Ool00`00Oomoo`2VOol50009Ool00`00Oomoo`0QOol3000:Ool<003o OoooOol9Ool2000XOol00?Ioo`03001oogoo01Uoo`/001Aoo`03001oogoo 09moo`P0039oo`8000Yoo``00?mooomoo`Uoo`8002Qoo`00mWoo00<007oo Ool057oo2`006Woo00<007ooOol0RWoo2`00@goo0`002Goo2`00ogooogoo 2Woo0P00:7oo003fOol00`00Oomoo`0?Ool;000NOol4001jOol6001IOol3 0008Ool;003oOoooOol:Ool2000XOol00?Moo`03001oogoo00Yoo`X0025o o`H007Eoo`H005ioo`@000Moo`X00?mooomoo`]oo`8002Qoo`00mgoo00<0 07ooOol01Goo2`009Goo1P00H7oo2`00Kgoo10001Woo2@00ogooogoo37oo 0P00:7oo003gOol00`00Oomoo`0;000[Ool5001?Ool80024Ool50004Ool8 003oOoooOol3Ool<000XOol00?Eoo`/0031oo`@004aoo`D008eoo`H00003 Ool0000000D00?moooEooa/002Moo`00l7oo2`00=Woo0`00=goo3000W7oo 2`00ogoojGoo7@005oo`/004Ioo`03001oogoo00eo o`X00@06Ool28@P00fLiOomoo`3oOolYOol00`00Oomoo`3oOolROolM000I OolD003>Ool00:Moo`/0039oo`03G_L0012400Ioo`0348@005kg0?moob]o o`03001oogoo0?mooa=ooah002IooaD00MoobT004AooaT00GooOol00goo00=6<@00L`008@P027oo00<007ooOol0ogoo6Woo00<007ooOol0]7oo7P00 000Q203oOolUOol00`00Oomoo`2HOolM001=OolH000WOolb000@Ool2002j Ool007Ioo`/006Aoo`0;:DX00000249>LgNmKg]>L`Q20016<@3oOolUOol0 0`00Oomoo`29OolN001KOolI000HOolM000:OolI000@Ool2002jOol0075o o`/006Uoo`04AS4002486@00AS5NmgNm01Qooa<001Aoo`800;Uo o`00E7oo2`00QWoo00=W>B488@P04Goo00<007ooOol0ogoo87oo00<007oo Ool07Woo8P00AGoo6000C7oo0P0047oo6@009Woo00Mkd06Goo2`0067oo0P00 ^Goo0016Ool:002YOol00`00Oomoo`3oOolFOolN000NOolD0012Ool[000i Ool2000AOolF000JOol00fLi48@0000600000b48Mkeoo`05Ool01GNmAS48 @Q24Mkd06goo1P006Woo0P00^Goo0011Ool:003oOoniOolN000[OolF0011 OolW0002Ool2000iOol2000BOolE000IOol036Li24800124CW=_NgooMke> L`Q2000HaPQoo`03IcT8@S6<03]oo`800;Uoo`00?7oo2`00ogoo[goo7@00 2Woo00<007ooOol0;Goo5`00>goo7P0047oo0P00>Goo0P004Woo50006Woo 00@@Q0008@Qg_@Eoo`04IcT8@P00AS42Ool00dicAS5oo`03Ool00b48249o o`0jOol2002iOol003Moo`/00?moojEooah001Qoo`03001oogoo02aooaP0 02eoob`0011oo`8003Uoo`8001=ooa8001Yoo`04CW<00000Kg/7Ool00dic 0008@P02Ool00bU:48Aoo`03Ool00b4848Aoo`0jOol2002iOol0039oo`/0 0?mooiaooah001ioo`03001oogoo00Eoo`03001oogoo02aooaP001iooah0 00AooaT0011oo`8003Uoo`8001Aooa0001]oo`03:DX002U:00Uoo`072480 05JeOomNm`00AS400Woo00=>L`00>Lh0>goo0P007Woo0P00VGoo000]Ool; 003oOonCOolM000]Ool00`00Oomoo`05Ool00`00Oomoo`0[OolJ000?OolN 000BOolI000@Ool2000iOol3000EOol<000MOol00a240016<@09Ool2IcT3 Ool00cW>0000000200000b48Mkeoo`0jOol3000GOol00`00Oomoo`04002J Ool002Qoo`/00LdHaIcTnOol2000GOol00`00Oomoo`2NOol002=o o`/00Goo0P00?Woo0P0000=F]Goo Ool0Cgoo0P001Woo1P002goo0P00Wgoo000JOol;003EOol00`00Oomoo`2D OolM001VOol00`00Oomoo`0SOolZ000YOol00`00AS5oo`0EOolE000COol2 000iOol2000nOol00b480016<@1AOol20005Ool2000@Ool3002NOol001Eo o`/00=Yoo`03001oogoo08Eooah007Aoo`03001oogoo029ooa000003Ool0 000001P002Uoo`030016Goo0P00?Woo00AF]@00001_N`Qoo`036Goo0P00?goo00<@Q0006C6<6Goo0P00?goo00EW>@00000HaVmk00Aoo`04CW<8@P00>Li6Ool2 000FOol6002LOol000Ioo`H00>eoo`@004aooah00:eoo`03001oogoo029o o`80011ooaP001Uoo`03>Lh0000000D00003249>Lgoo00Ioo`8Q21aoo`T0 01Uoo`8003Uoo`80041oo`05CW<8@P00000HaP028@P01A2400000248Mkd0 ;7oo10005Woo0P005Woo1P00W7oo0006Ool3003`Ool4000nOolM002lOol0 0`00Oomoo`06Ool00`00Oomoo`0IOol2000AOolF000IOol01C6<0000036< G_L00Woo00EW>BU:000005Je00Ioo`038@P8@Woo03eoo`8003Uoo`80045o o`03Kg/aS00000@0000348A>Lgoo02Moo`H001Yoo`8001Ioo`03001oogoo 09moo`001goo0P00l7oo0`00<7oo7P00dgoo00<007ooOol06Goo0P004Woo 50006Goo00A>L`00001F]@Ioo`04moo`03001oogoo01Uoo`80 01Aooa0001Yoo`04IcT00000IcT8Ool00dHa000HaP02Ool01GNmCWGoo0`00H7oo1P00:goo0P006Woo00<007ooOol0Vgoo0007 Ool2003aOol20006OolM003nOol00`00Oomoo`0IOol2000EOol>000KOol0 0dic0008@P09Ool00gNmG_Mg_@05Ool00dic001W>@0mOol2000jOol2001K Ool6000XOol;000IOol00`00Oomoo`2KOol000Moo`800>Yooah00?moo`eo o`03001oogoo01Uoo`8001Moo`X001eoo`03AS400248019oo`03CW=g_Goo 03aoo`8003Yoo`8007Qooa`001Uoo`03001oogoo09]oo`001goo0P00g7oo 7P00ogoo6goo00<007ooOol06Goo0P00?Woo00=6<@008@P0DGoo0`00>Goo 0P00Cgoo0`0057oo90008goo00<007ooOol0Vgoo0007Ool2003>OolM003o OolZOol00`00Oomoo`0IOol3000mOol00dHa000HaP1AOol3000iOol20019 Ool60005OolU000dOol00`00Oomoo`2KOol000Moo`800;mooah00?moocQo o`03001oogoo01Yoo`8003eoo`03G_L00000059oo`8003Uoo`8004=oob@0 04Moo`03001oogoo09Yoo`001goo0P00/Goo7P00ogooAWoo00<007ooOol0 6Woo0P00?Goo00A_N`00001Nm`Uoo`03E[E6Goo0P007goo9@0000=oo`0000000P00ogoo0goo0007Ool2002D OolN003oOomJOol00`00Oomoo`0SOol2000nOol014ic000005Je1goo00Goo0P003Woo90004goo1@00ogoo0Woo0007Ool20026 OolN003oOomXOol00`00Oomoo`0SOol2000oOol012U:000004Ha17oo00E_ NbU:0008@Vmk04Ioo`8003Uoob8002Eoo`D00?moo`9oo`001goo0P00N7oo 7P00ogooMWoo00<007ooOol08goo0P00?goo00Eg_B48000000Q200Lgoo04Ioo`8003Uooa4003Moo`@00?moo`9oo`001goo0`00JGoo 7@00ogooQGoo00<007ooOol08goo0P00@Goo00=>La240000100000moo`@006Eoo`03001oogoo09Aoo`00ogooogoo8Goo00<007ooOol0ogoo =Goo1000IWoo00<007ooOol0Tgoo003oOoooOolQOol00`00Oomoo`1QOol0 0`00Oomoo`3@Ool4001VOol00`00Oomoo`2COol00?mooomoob5oo`03001o ogoo065oo`03001oogoo0=1oo`D006Eoo`03001oogoo09=oo`00ogooogoo 8Woo00<007ooOol0H7oo00<007ooOol0dGoo1000IGoo00<007ooOol0Tgoo 003oOoooOolROol00`00Oomoo`1POol00`00Oomoo`3AOol4003kOol00?mo oomoob9oo`03001oogoo065oo`03001oogoo0=1oo`@00?]oo`00ogooogoo 8Woo00<007ooOol0HGoo00<007ooOol0d7oo1000ngoo003oOoooOolROol0 0`00Oomoo`1QOol00`00Oomoo`3=Ool00`00Oomoo`04003kOol00?mooomo ob9oo`03001oogoo065oo`03001oogoo0goo2`004Woo1000fWoo1000n7oo003oOoooOolS Ool00`00Oomoo`0/Ool6000VOol2003LOol4001VOol00`00Oomoo`0DOol0 0fLiMkeoo`1hOol00?mooomoob=oo`03001oogoo02Ioo`L003Aoo`03001o ogoo0=9oo`@006Ioo`03001oogoo01=oo`03AS4005kg07Uoo`00ogooogoo 8goo00<007ooOol04Goo3000A7oo00<007ooOol0dWoo1000IWoo00<007oo Ool04goo00=Nm`00AS40NGoo003oOoooOolSOol01000Oomoogoo1`00FGoo 00<007ooOol0dWoo1@00IGoo00<007ooOol04goo00=_N`00AS400Woo0WNm MGoo003oOoooOolSOol5001OOol00`00Oomoo`3BOol5001VOol00`00Oomo o`0COol010008@QW>A240P0000@00Ool00`00Oomoo`02 Ool4001fOol017Nm000006mk0Woo00=6<@00E[D017oo00 Ool00`00Oomoo`02Ool4001gOol200001UkgOomoodic001Nm`Aoo`03AS40 05kg075oo`00ogooogoo5Woo00<007ooOol02Woo00<007ooOol0>Goo00<0 0248Ool09Goo00<007ooOol0cWoo00<007ooOol00Woo1@00MWoo00Ool00`00Oomoo`03Ool4 001fOol00c6<000icP02Ool00gNm000aS004Ool00eJe001>L`1aOol00?mo oomooaIoo`03001oogoo04Ioo`038@P007oo02Eoo`03001oogoo0LhQ22U:Mkd4Ool00b48001oo`3fOol00`00Oomoo`03Ool4001V Ool00`00Oomoo`0=Ool00ekg00000003Ool0136<0016<@Q20P000017oo00AN m`000016<@Eoo`03:DX006mk0?Ioo`03001oogoo00=oo`D006Ioo`03001o ogoo00eoo`800008G_MoogooG_M>LgooMkeNmgEoo`00ogooogoo5Woo00<0 07ooOol0=Woo00A6<@00001F]@=oo`038@P001S600Ioo`03AS4005kg0?Io o`03001oogoo00=oo`D006Ioo`03001oogoo00eoo`0348@005Je07aoo`00 ogooogoo5Woo00<007ooOol0=goo00HQ2000249_NgooCW<200000ekgOomo o`04Ool00dHa001Nm`3fOol00`00Oomoo`04Ool4001VOol00`00Oomoo`0= Ool00b480016<@1lOol00?mooomooaIoo`03001oogoo03Moo`08Mkd@Q000 6Lh0036<07aoo`00ogooogoo5Woo00<007ooOol0>7oo 00MW>@Q2000@Q000249_N`04Ool00dic6Ool00dHa000Q201lOol00?mooomooaIoo`03001oogoo00]o o`03001oogoo02]oo`05CW<000000016<@05Ool00ekgAS4YBP0200000dHa Oomoo`3kOol4001fOol00ekg0000001lOol00?mooomoobAoo`03001oogoo 02aoo`046@Qoo`03 Lbeoo`03001oogoo 0=Eoo`@006Moo`03001oogoo08Yoo`00ogooogoo97oo00<007ooOol0:7oo 00ANm`006EkgG_MF]@=6<@03L`02G_L00fLiOomoo`24Ool00`00Oomo o`07Ool5003_Ool00?mooomoobIoo`03001oogoo019oo`/004Aoo`03001o ogoo045oo`03G_L0036<08Uoo`03001oogoo00Qoo`@006Moo`03001oogoo 08Eoo`00ogooogoo5Woo00<007ooOol03Goo00<007ooOol00goo1@00FGoo 00<007ooOol0@Woo00@aS0008@QNmhMoo`03001oogoo00Qoo`@006Moo`03 001oogoo08Eoo`00ogooogoo5Woo00<007ooOol03Goo1`00GGoo00<007oo Ool0=Goo00=g_EkgOol01Goo00@icR48:DYg_@9oo`05CW<8@P008@QNm`25 Ool00`00Oomoo`08Ool4001WOol00`00Oomoo`25Ool00?mooomooaIoo`03 001oogoo075oo`03001oogoo03Aoo`04CW<00000>Lh4Ool015kg000004Ha 17oo00Ig_DHa24800248Mkf3Ool00`00Oomoo`08Ool4001WOol00`00Oomo o`25Ool00?mooomooaIoo`03001oogoo075oo`03001oogoo03Eoo`04AS40 0000E[D3Ool00b48000HaP07Ool01GNmAS4001S6Mkd0Pgoo00<007ooOol0 1goo1000Igoo00<007ooOol0QGoo003oOoooOolFOol00`00Oomoo`2ZOol0 1R480008@VmkOom>L`800003G_Moogoo00Moo`03AS4004ic08=oo`03001o ogoo00Moo`D006Moo`03001oogoo08Aoo`00ogooogoo5Woo00<007ooOol0 ZWoo00Qg_A24000HaWNm48@002U:17oo00@0008=oo`03001oogoo00Qoo`@00>ioo`00ogooogoo5Woo00<007oo Ool0[7oo00E>L`00000004Ha00Eoo`03eoo`00ogooogoo5Woo00<007oo Ool03Woo00<007ooOol0VWoo00Q6<@00001_NgNm48@001S6Vgoo1000Igoo 00<007ooOol0Pgoo003oOoooOolWOol00`00Oomoo`2IOol016mk000004Ha 0Woo00AW>@00000aS9Yoo`@006Moo`03001oogoo08=oo`00ogooogoo9goo 00<007ooOol0HGoo00<007ooOol0=Goo00@Q2000249g_@=oo`04AS400000 CW>IOol4001WOol00`00Oomoo`23Ool00?mooomoobMoo`03001oogoo065o o`03001oogoo03Aoo`04G_L001S6E[D5Ool00eJeG_MNm`2IOol4001WOol0 0`00Oomoo`23Ool00?mooomoobMoo`03001oogoo065oo`03001oogoo0=Uo o`D006Moo`03001oogoo089oo`00ogooogoo9goo00<007ooOol0HGoo00<0 07ooOol0fWoo1000Igoo00<007ooOol0PWoo003oOoooOolWOol00`00Oomo o`1QOol00`00Oomoo`3JOol4001WOol00`00Oomoo`22Ool00?mooomoobMo o`03001oogoo069oo`03001oogoo0=Uoo`@00>aoo`00ogooogoo9goo00<0 07ooOol0HWoo00<007ooOol0cGoo00<007ooOol02Goo1000k7oo003oOooo OolWOol00`00Oomoo`1ROol00`00Oomoo`3=Ool00`00Oomoo`09Ool5003[ Ool00?mooomooaIoo`03001oogoo00ioo`03001oogoo069oo`03001oogoo 0]oo`00ogooogoo5Woo00<007ooOol0Lgoo 00<007ooOol0cGoo00<007ooOol02Woo1000jgoo003oOoooOolFOol00`00 Oomoo`1cOol00`00Oomoo`3=Ool00`00Oomoo`0:Ool4003[Ool00?mooomo oaIoo`03001oogoo07=oo`03001oogoo0Uo o`00ogooogoo:7oo00<007ooOol0HWoo00<007ooOol0fgoo1000jGoo003o OoooOolXOol00`00Oomoo`1ROol00`00Oomoo`3KOol4003YOol00?mooomo obQoo`03001oogoo069oo`03001oogoo0=]oo`@006Qoo`03001oogoo07io o`00ogooogoo:7oo00<007ooOol0HWoo00<007ooOol0fgoo1@00Igoo00<0 07ooOol0OWoo003oOoooOolXOol00`00Oomoo`1ROol00`00Oomoo`3LOol4 001WOol00`00Oomoo`1nOol00?mooomoobUoo`03001oogoo065oo`03001o ogoo0Moo`00ogooogoo5Woo 00<007ooOol0ogooAGoo00<007ooOol03Goo1000igoo003oOoooOolFOol0 0`00Oomoo`3oOom5Ool00`00Oomoo`0=Ool4003WOol00?mooomooaIoo`03 001oogoo0?moodEoo`03001oogoo00eoo`D006Moo`03001oogoo07aoo`00 ogooogoo5Woo00<007ooOol0ogooAGoo00<007ooOol03Goo1@00Igoo00<0 07ooOol0O7oo003oOoooOolFOol00`00Oomoo`3oOom6Ool00`00Oomoo`0= Ool4001XOol00`00Oomoo`1kOol00?mooomooaIoo`03001oogoo0?mooeIo o`@006Qoo`03001oogoo07]oo`00ogooogoo5Woo00<007ooOol047oo00<0 07ooOol0ogoo@goo1000J7oo00<007ooOol0Ngoo003oOoooOolYOol00`00 Oomoo`3oOom3Ool4001XOol00`00Oomoo`1kOol00?mooomoobUoo`03001o ogoo0?mood=oo`D006Moo`8007aoo`00ogooogoo:Woo00<007ooOol0HGoo 00<007ooOol0gWoo1000iGoo003oOoooOolZOol00`00Oomoo`1QOol00`00 Oomoo`3NOol4003UOol00?mooomoobYoo`03001oogoo065oo`03001oogoo 0=ioo`@00>Eoo`00ogooogoo:Woo00<007ooOol0HGoo00<007ooOol0gWoo 1000iGoo003oOoooOolZOol00`00Oomoo`1QOol00`00Oomoo`3NOol4003U Ool00?mooomoobYoo`03001oogoo065oo`03001oogoo09oo`00 ogooogoo5goo00<007ooOol04Goo00<007ooOol0ogooAGoo1000FWoo1P00 PWoo003oOoooOol[Ool00`00Oomoo`3oOom4Ool:001@Ool60027Ool00?mo oomoob]oo`03001oogoo069oo`03001oogoo0=aoo`h00=]oo`00ogooogoo :goo00<007ooOol0HWoo00<007ooOol0fgoo2@000goo1@00?goo0`00Ugoo 003oOoooOol[Ool00`00Oomoo`1ROol00`00Oomoo`3JOol:0005Ool4000h Ool6002JOol00?mooomoob]oo`03001oogoo069oo`03001oogoo0=Uoo`/0 00Ioo`<003Ioo`<009moo`00ogooogoo:goo00<007ooOol0HWoo00<007oo Ool0f7oo30001goo0`00:Woo0P00Zgoo003oOoooOol[Ool00`00Oomoo`1R Ool00`00Oomoo`3GOol=0008Ool3000SOol6002]Ool00?mooomoob]oo`03 001oogoo069oo`03001oogoo0003EOol00?mooomooaMoo`03001oogoo0?moodMo o`03001oogoo00Moo`8000Uoo`d00=Ioo`00ogooogoo5goo00<007ooOol0 ogooAgoo00<007ooOol01goo0`0027oo3@00eWoo003oOoooOolGOol00`00 Oomoo`3oOomBOol20008Ool<003GOol00?mooomooaMoo`03001oogoo0?mo oe9oo`<000Moo``00=Moo`00ogooogoo5goo00<007ooOol04Woo00<007oo Ool0ogoo?Woo0`001goo2P00f7oo003oOoooOol/Ool00`00Oomoo`3oOolo Ool40005Ool9003IOol00?mooomoobaoo`03001oogoo069oo`03001oogoo 0=Yoo`D000=oo`P00=Yoo`00ogooogoo;7oo00<007ooOol0HWoo00<007oo Ool0fgoo3P00fgoo003oOoooOol/Ool00`00Oomoo`1ROol00`00Oomoo`3N Ool9003MOol00?mooomoobaoo`03001oogoo069oo`03001oogoo0>9oo`D0 0=eoo`00ogooogoo;Goo00<007ooOol0HGoo00<007ooOol0hgoo1000gGoo 003oOoooOol]Ool00`00Oomoo`1QOol00`00Oomoo`3SOol4003MOol00?mo oomoobeoo`03001oogoo065oo`03001oogoo0Aoo`@00=Yo o`00ogooogoo;Woo00<007ooOol0HWoo00<007ooOol0i7oo1000fWoo003o OoooOol^Ool00`00Oomoo`1ROol00`00Oomoo`3TOol4003JOol00?mooomo obioo`03001oogoo069oo`03001oogoo0>Aoo`@00=Yoo`00ogooogoo;Woo 00<007ooOol0HWoo00<007ooOol0i7oo1@00fGoo003oOoooOol^Ool00`00 Oomoo`1ROol00`00Oomoo`3UOol4003IOol00?mooomoobioo`03001oogoo 069oo`03001oogoo0Moo`@00=Ioo`00ogooogoo;goo00<007ooOol0HWoo 00<007ooOol0igoo1000eWoo003oOoooOol_Ool00`00Oomoo`1ROol00`00 Oomoo`3WOol4003FOol00?mooomoobmoo`03001oogoo069oo`03001oogoo 0>Moo`@00=Ioo`00ogooogoo;goo00<007ooOol0HWoo00<007ooOol0cGoo 00<007ooOol05goo1@00eGoo003oOoooOol_Ool00`00Oomoo`1ROol00`00 Oomoo`3=Ool00`00Oomoo`0GOol5003EOol00?mooomoobmoo`03001oogoo 06=oo`03001oogoo0=moo`03IcU_Ngoo00Eoo`@00=Eoo`00ogooogoo5goo 00<007ooOol05Woo00<007ooOol0HWoo00<007ooOol0eWoo00Ig_DHa8@PQ 236Lioo`Q2AS5F]C6< 00Eoo`@00=Eoo`00ogooogoo5goo00<007ooOol0Ngoo00<007ooOol0e7oo 00Ag_@Q248Ag_@=oo`048@P004Ha8@P2Ool00dHaOomoo`03Ool4003EOol0 0?mooomooaMoo`03001oogoo0?mooe=oo`03AS4003W>00Aoo`04Kg/00000 AS48Ool5003DOol00?mooomooaMoo`03001oogoo0?mooe=oo`038@P004Ha 00Eoo`0300Eoo`03AS4004Ha0?mooeQo o`@00=5oo`00ogooogoo5goo00<007ooOol01goo00@00>Lh0ogooFgoo1000 cgoo003oOoooOolROol01WNm6Ool00?mooomooomoohMoo`@0 0Ool0 0?mooomooomoohMoo`@00 Ool40037Ool00?mooomooomoohioo`@00 ogooogoo=7oo003oOoooOolCOol80007Ool01B4800000000AS40ogooogoo @3oOoooOol_Ool0 0?mooomooaIoo`8000]oo`030?mooomoobmo o`00ogooogoo5goo00<007ooOol02Goo00<8@P00CW<00Woo00=F]@002480 ogooogoo;goo003oOoooOolGOol00`00Oomoo`08Ool014ic000007Nm0goo 00<8@P00E[D0ogooogoo;Woo003oOoooOolROol00bU:000YBP04Ool00c6< 000aS03oOoooOol^Ool00?mooomoob5oo`04Mkd00000CW<4Ool015Je0000 07Nmogooogoo;Goo003oOoooOolQOol014Ha0008@WNm1Goo00<8@P00CW<0 ogooogoo;Goo003oOoooOolQOol00aS6000aS006Ool00c6<000HaP3oOooo Ool]Ool00?mooomooomooomooeYoo`00ogooogooogooogooFWoo003oOooo OoooOoooOomJOol00?mooomooomooomooeYoo`00ogooogooogooogooFWoo 003oOoooOoooOoooOomJOol00?mooomooomooomooeYoo`00ogooogooogoo ogooFWoo003oOoooOoooOoooOomJOol00?mooomooomooomooeYoo`00ogoo ogooogooogooFWoo003oOoooOoooOoooOomJOol00?mooomooomooomooeYo o`00ogooogooogooogooFWoo0000\ \>"], "Graphics", ImageSize->{407.875, 239.563}, ImageMargins->{{0, 0}, {0, 0}}, ImageRegion->{{0, 1}, {0, 1}}], Cell["Figure 1. The Pendulum/Seesaw Process.", "Caption"], Cell["\<\ In Figure 1 we introduce names of variables and constants \ describing the process.\ \>", "Text"], Cell[TextData[{ "Variables:\n\t", Cell[BoxData[ \(TraditionalForm\`x\_1\)]], "\ttranslation of cart 1 from center of track\n\t", Cell[BoxData[ \(TraditionalForm\`x\_2\)]], "\ttranslation of cart 2 from center of track\n\t\[Theta]\tangle of seesaw \ with vertical\n\t\[Alpha]\tangle of inverted pendulum with normal to track\n\t\ ", Cell[BoxData[ \(TraditionalForm\`F\_1\)]], "\tforce applied to cart 1\n\t", Cell[BoxData[ \(TraditionalForm\`F\_2\)]], "\tforce applied to cart 2" }], "Text", Evaluatable->False, AspectRatioFixed->True], Cell[TextData[{ "Constants:\n\tJ\tinertia of seesaw with track at height h\n\t", Cell[BoxData[ \(TraditionalForm\`m\_s\)]], "\tmass of seesaw with track\n\tc\theight of center of gravity of the \ seesaw from pivot point\n\th\theight of track from pivot point\n\t", Cell[BoxData[ \(TraditionalForm\`m\_1\)]], "\tmass of cart 1 (weight cart, on the back track)\n\t", Cell[BoxData[ \(TraditionalForm\`m\_2\)]], "\tmass of cart 2\t (pendulum cart, on the front track)\n\t", Cell[BoxData[ \(TraditionalForm\`m\_p\)]], "\tmass of pendulum\n\t", Cell[BoxData[ \(TraditionalForm\`l\_p\)]], "\tcenter of mass of pendulum rod (half of full length)\n\tg\tgravitational \ acceleration" }], "Text", Evaluatable->False, AspectRatioFixed->True], Cell[TextData[{ "The physical values of the above constants are stored as rules in ", StyleBox["Mathematica", FontSlant->"Italic"], " to be used later on in simulations." }], "Text"], Cell[BoxData[ \(physicalvalues := {\ \ J \[Rule] 1.6, m\_s \[Rule] 6.6, c \[Rule] 0.06, h \[Rule] 0.115, m\_1 \[Rule] 0.48 + 0.38, m\_2 \[Rule] 0.48, m\_p \[Rule] 0.2, l\_p \[Rule] 0.61\/2 + 0.03, g \[Rule] 9.81}\)], "Input"] }, Open ]], Cell[CellGroupData[{ Cell["Modeling", "Subsection"], Cell["\<\ Following the Lagrangian methodology [3] the system is divided in a \ number of subsystems whose potential energy and kinetic energy are computed \ in terms of the generalized coordinates introduced in Figure 1 above. The \ Lagrangian, which is the difference between the total kinetic and potential \ energy, can then be used to derive the equations of motion for the \ system.\ \>", "Text"], Cell[CellGroupData[{ Cell["Computation of the Lagrangian", "Subsubsection", Evaluatable->False, AspectRatioFixed->True], Cell["Coordinates of the center of mass of the seesaw", "Text", Evaluatable->False, AspectRatioFixed->True], Cell[BoxData[{ \(x\_s := c\ Sin[\[Theta][t]]\), "\n", \(y\_s := c\ Cos[\[Theta][t]]\)}], "Input", AspectRatioFixed->True], Cell["The potential and kinetic energies of the seesaw", "Text", Evaluatable->False, AspectRatioFixed->True], Cell[BoxData[{ \(V\_s := m\_s\ g\ y\_s\), "\n", \(T\_s := Simplify[1\/2\ J\ \((\[PartialD]\_t \[Theta][t])\)\^2]\)}], "Input", AspectRatioFixed->True], Cell["Coordinates of the center of track", "Text", Evaluatable->False, AspectRatioFixed->True], Cell[BoxData[{ \(x\_c := h\ Sin[\[Theta][t]]\), "\n", \(y\_c := h\ Cos[\[Theta][t]]\)}], "Input", AspectRatioFixed->True], Cell["Coordinates of cart 1", "Text", Evaluatable->False, AspectRatioFixed->True], Cell[BoxData[{ \(x\_m1 := x\_c + x\_1[t]\ Cos[\[Theta][t]]\), "\n", \(y\_m1 := y\_c - x\_1[t]\ Sin[\[Theta][t]]\)}], "Input", AspectRatioFixed->True], Cell["The potential and kinetic energies of cart 1", "Text", Evaluatable->False, AspectRatioFixed->True], Cell[BoxData[{ \(V\_m1 := m\_1\ g\ y\_m1\), "\n", \(T\_m1 := Simplify[1\/2\ m\_1\ \((\((\[PartialD]\_t x\_m1)\)\^2 + \ \((\[PartialD]\_t y\_m1)\)\^2)\)]\)}], "Input", AspectRatioFixed->True], Cell["Coordinates of cart 2", "Text", Evaluatable->False, AspectRatioFixed->True], Cell[BoxData[{ \(x\_m2 := x\_c + x\_2[t]\ Cos[\[Theta][t]]\), "\n", \(y\_m2 := y\_c - x\_2[t]\ Sin[\[Theta][t]]\)}], "Input", AspectRatioFixed->True], Cell["The potential and kinetic energies of cart 2", "Text", Evaluatable->False, AspectRatioFixed->True], Cell[BoxData[{ \(V\_m2 := m\_2\ g\ y\_m2\), "\n", \(T\_m2 := Simplify[1\/2\ m\_2\ \((\((\[PartialD]\_t x\_m2)\)\^2 + \ \((\[PartialD]\_t y\_m2)\)\^2)\)]\)}], "Input", AspectRatioFixed->True], Cell["Coordinates of the center of mass of the pendulum", "Text", Evaluatable->False, AspectRatioFixed->True], Cell[BoxData[{ \(x\_p := x\_m2 + l\_p\ Sin[\[Alpha][t] + \[Theta][t]]\), "\n", \(y\_p := y\_m2 + l\_p\ Cos[\[Alpha][t] + \[Theta][t]]\)}], "Input", AspectRatioFixed->True], Cell["The potential and kinetic energies of the pendulum", "Text", Evaluatable->False, AspectRatioFixed->True], Cell[BoxData[{ \(V\_p := m\_p\ g\ y\_p\), "\n", \(T\_p := Simplify[1\/2\ m\_p\ \((\((\[PartialD]\_t x\_p)\)\^2 + \ \((\[PartialD]\_t y\_p)\)\^2)\)]\)}], "Input", AspectRatioFixed->True], Cell["The total potential energy", "Text", Evaluatable->False, AspectRatioFixed->True], Cell[BoxData[ \(V\_tot := V\_s + V\_m1 + V\_m2 + V\_p\)], "Input", AspectRatioFixed->True], Cell["The total kinetic energy", "Text", Evaluatable->False, AspectRatioFixed->True], Cell[BoxData[ \(T\_tot := T\_s + T\_m1 + T\_m2 + T\_p\)], "Input", AspectRatioFixed->True], Cell["The Lagrangian of the system ", "Text", Evaluatable->False, AspectRatioFixed->True], Cell[BoxData[ \(L := T\_tot - V\_tot\)], "Input", AspectRatioFixed->True], Cell[" The Lagrangian of the system becomes", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(Simplify[L]\)], "Input"], Cell[BoxData[ RowBox[{\(1\/2\), " ", RowBox[{"(", RowBox[{\(\(-2\)\ c\ g\ Cos[\[Theta][t]]\ m\_s\), "-", \(2\ g\ m\_1\ \((h\ Cos[\[Theta][t]] - Sin[\[Theta][t]]\ x\_1[t])\)\), "-", \(2\ g\ m\_2\ \((h\ Cos[\[Theta][t]] - Sin[\[Theta][t]]\ x\_2[t])\)\), "-", \(2\ g\ m\_p\ \((h\ Cos[\[Theta][t]] + Cos[\[Alpha][t] + \[Theta][t]]\ l\_p - Sin[\[Theta][t]]\ x\_2[t])\)\), "+", RowBox[{"J", " ", SuperscriptBox[ RowBox[{ SuperscriptBox["\[Theta]", "\[Prime]", MultilineFunction->None], "[", "t", "]"}], "2"]}], "+", RowBox[{\(m\_1\), " ", RowBox[{"(", RowBox[{ RowBox[{\((h\^2 + x\_1[t]\^2)\), " ", SuperscriptBox[ RowBox[{ SuperscriptBox["\[Theta]", "\[Prime]", MultilineFunction->None], "[", "t", "]"}], "2"]}], "+", RowBox[{"2", " ", "h", " ", RowBox[{ SuperscriptBox["\[Theta]", "\[Prime]", MultilineFunction->None], "[", "t", "]"}], " ", RowBox[{ SubsuperscriptBox["x", "1", "\[Prime]", MultilineFunction->None], "[", "t", "]"}]}], "+", SuperscriptBox[ RowBox[{ SubsuperscriptBox["x", "1", "\[Prime]", MultilineFunction->None], "[", "t", "]"}], "2"]}], ")"}]}], "+", RowBox[{\(m\_2\), " ", RowBox[{"(", RowBox[{ RowBox[{\((h\^2 + x\_2[t]\^2)\), " ", SuperscriptBox[ RowBox[{ SuperscriptBox["\[Theta]", "\[Prime]", MultilineFunction->None], "[", "t", "]"}], "2"]}], "+", RowBox[{"2", " ", "h", " ", RowBox[{ SuperscriptBox["\[Theta]", "\[Prime]", MultilineFunction->None], "[", "t", "]"}], " ", RowBox[{ SubsuperscriptBox["x", "2", "\[Prime]", MultilineFunction->None], "[", "t", "]"}]}], "+", SuperscriptBox[ RowBox[{ SubsuperscriptBox["x", "2", "\[Prime]", MultilineFunction->None], "[", "t", "]"}], "2"]}], ")"}]}], "+", RowBox[{\(m\_p\), " ", RowBox[{"(", RowBox[{ RowBox[{ RowBox[{"(", RowBox[{ RowBox[{\((h\ Cos[\[Theta][t]] - Sin[\[Theta][t]]\ x\_2[t])\), " ", RowBox[{ SuperscriptBox["\[Theta]", "\[Prime]", MultilineFunction->None], "[", "t", "]"}]}], "+", RowBox[{\(Cos[\[Alpha][t] + \[Theta][t]]\), " ", \(l\_p\), " ", RowBox[{"(", RowBox[{ RowBox[{ SuperscriptBox["\[Alpha]", "\[Prime]", MultilineFunction->None], "[", "t", "]"}], "+", RowBox[{ SuperscriptBox["\[Theta]", "\[Prime]", MultilineFunction->None], "[", "t", "]"}]}], ")"}]}], "+", RowBox[{\(Cos[\[Theta][t]]\), " ", RowBox[{ SubsuperscriptBox["x", "2", "\[Prime]", MultilineFunction->None], "[", "t", "]"}]}]}], ")"}], "^", "2"}], "+", RowBox[{ RowBox[{"(", RowBox[{ RowBox[{\((h\ Sin[\[Theta][t]] + Cos[\[Theta][t]]\ x\_2[t])\), " ", RowBox[{ SuperscriptBox["\[Theta]", "\[Prime]", MultilineFunction->None], "[", "t", "]"}]}], "+", RowBox[{\(Sin[\[Alpha][t] + \[Theta][t]]\), " ", \(l\_p\), " ", RowBox[{"(", RowBox[{ RowBox[{ SuperscriptBox["\[Alpha]", "\[Prime]", MultilineFunction->None], "[", "t", "]"}], "+", RowBox[{ SuperscriptBox["\[Theta]", "\[Prime]", MultilineFunction->None], "[", "t", "]"}]}], ")"}]}], "+", RowBox[{\(Sin[\[Theta][t]]\), " ", RowBox[{ SubsuperscriptBox["x", "2", "\[Prime]", MultilineFunction->None], "[", "t", "]"}]}]}], ")"}], "^", "2"}]}], ")"}]}]}], ")"}]}]], "Output"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Computation of the Equations of Motion", "Subsubsection", Evaluatable->False, AspectRatioFixed->True], Cell[TextData[{ "The equations of motion are given by the partial differential equations \ that ", Cell[BoxData[ \(TraditionalForm\`L\)]], " must satisfy" }], "Text"], Cell[TextData[{ "\t\t", Cell[BoxData[ FormBox[ RowBox[{ StyleBox[\(\(d\/\(d\ t\)\) \[PartialD]L\/\[PartialD]q\& . \_i - \ \[PartialD]L\/\[PartialD]q\_i \[Equal] Q\_i\)], StyleBox[","], StyleBox[" "], StyleBox[\(i = 1\)], StyleBox[","], StyleBox["\[Ellipsis]"], StyleBox[" "], StyleBox[","], StyleBox["n"]}], TraditionalForm]]], " ," }], "NumberedEquation"], Cell[TextData[{ "where ", Cell[BoxData[ \(TraditionalForm\`L\)]], " is the Lagrangian, ", Cell[BoxData[ \(TraditionalForm\`q\_i, \ i = 1, \[Ellipsis], n\)]], " are the generalized coordinates, and ", Cell[BoxData[ \(TraditionalForm\`Q\_i, \ i = 1, \[Ellipsis], n\)]], " are the generalized force associated with each coordinate. In this case \ the quadruple ", Cell[BoxData[ \(TraditionalForm\`{q\_1, q\_2, q\_3, q\_4}\)]], " corresponds to ", Cell[BoxData[ \(TraditionalForm\`{x\_1, x\_2, \[Theta], \[Alpha]}\)]], " and ", Cell[BoxData[ \(TraditionalForm\`Q\_1 = F\_1, \ Q\_2 = F\_2, Q\_3 = \(Q\_4 = 0\)\)]], ". We derive each equation and simplify it" }], "Text"], Cell[BoxData[{ \(\(eqn\_1 = Simplify[\[PartialD]\_t\((\[PartialD]\_\(\[PartialD]\_t x\_1[t]\)L)\) \ - \[PartialD]\_\(x\_1[t]\)L == F\_1];\)\), "\n", \(\(eqn\_2 = Simplify[\[PartialD]\_t\((\[PartialD]\_\(\[PartialD]\_t x\_2[t]\)L)\) \ - \[PartialD]\_\(x\_2[t]\)L == F\_2];\)\), "\n", \(\(eqn\_3 = Simplify[\[PartialD]\_t\((\[PartialD]\_\(\[PartialD]\_t \ \[Theta][t]\)L)\) - \[PartialD]\_\(\[Theta][t]\)L == 0];\)\), "\n", \(\(eqn\_4 = Simplify[\[PartialD]\_t\((\[PartialD]\_\(\[PartialD]\_t \ \[Alpha][t]\)L)\) - \[PartialD]\_\(\[Alpha][t]\)L == 0];\)\)}], "Input", AspectRatioFixed->True], Cell[TextData[{ "These equations are coupled ordinary differential equations (ODEs) of \ second order in the generalized coordinates ", Cell[BoxData[ \(TraditionalForm\`x\_1, \ \[Theta], \ x\_2, \ \[Alpha]\)]], ". To rewrite these in standard state space form (a system of first order \ ODEs) we introduce the following states:" }], "Text"], Cell[TextData[{ "\t\t", Cell[BoxData[ FormBox[ RowBox[{"x", "=", RowBox[{"(", GridBox[{ {\(x\_1\), "\[Theta]", \(x\_2\), "\[Alpha]", \(x\& . \_1\), \(\[Theta]\& . \), \(x\& . \ \_2\), \(\[Alpha]\& . \)} }], ")"}]}], TraditionalForm]]], "." }], "Text"], Cell["The inputs to the system are", "Text"], Cell[TextData[{ "\t\t", Cell[BoxData[ FormBox[ RowBox[{"u", "=", Cell[TextData[Cell[BoxData[ FormBox[ RowBox[{"(", GridBox[{ {\(F\_1\), \(F\_2\)} }], ")"}], TraditionalForm]]]]]}], TraditionalForm]]], "." }], "Text"], Cell[TextData[{ "We observe that the second order time derivatives of the positions and \ angles appears linearly which makes it easy to solve for these in terms the \ states. Second order time derivatives will ", StyleBox["always", FontSlant->"Italic"], " appear linearly in the equations derived from the partial differential \ equation (6) that the Lagrangian of the system has to satisfy. This is due to \ the fact that the Lagrangian only consists of at most first order time \ derivatives and the second order derivatives appear according to the chain \ rule when differentiating the term ", Cell[BoxData[ \(TraditionalForm\`\[PartialD]L\/\[PartialD]\(q\& . \)\_i\)]], " in (6) w.r.t. time." }], "Text"], Cell["Solve for second order derivatives", "Text", Evaluatable->False, AspectRatioFixed->True], Cell[BoxData[ \(\(sol = Solve[\ {\ eqn\_1, eqn\_2, eqn\_3, eqn\_4\ }, {\ \[PartialD]\_{t, 2}x\_1[t], \[PartialD]\_{t, 2}x\_2[ t], \[PartialD]\_{t, 2}\[Theta][ t], \[PartialD]\_{t, 2}\[Alpha][t]\ }\ ];\)\)], "Input", AspectRatioFixed->True], Cell["\<\ These solutions will become a part of the right hand sides of the \ differential equations used for simulating the system.\ \>", "Text"], Cell["\<\ We introduce conversion rules to get rid of explicit time \ dependence. This makes some expressions look simpler and takes less \ space.\ \>", "Text", Evaluatable->False, AspectRatioFixed->True], Cell[BoxData[ \(\(ssvariables := {\ \ x\_1[t] \[Rule] x\_1, \[Theta][t] \[Rule] \[Theta], x\_2[t] \[Rule] x\_2, \[Alpha][ t] \[Rule] \[Alpha], \[PartialD]\_t x\_1[t] \[Rule] dx\_1, \[PartialD]\_t \[Theta][t] \[Rule] d\[Theta], \[PartialD]\_t x\_2[t] \[Rule] dx\_2, \[PartialD]\_t \[Alpha][t] \[Rule] d\[Alpha]\ };\)\)], "Input", AspectRatioFixed->True], Cell["\<\ We compute the right hand side of the nonlinear state space form \ (1) of the equations\ \>", "Text", Evaluatable->False, AspectRatioFixed->True], Cell[TextData[{ "\t\t", Cell[BoxData[ \(TraditionalForm\`x\& . [t] = f[x[t]\ , u[t]]\)]], " " }], "Text", Evaluatable->False, AspectRatioFixed->True], Cell[TextData[{ "which becomes very large! Observe that the first four entries in ", Cell[BoxData[ \(TraditionalForm\`f\)]], " correspond to pure integrations. This allow us to write the model as a \ system of first order differential equations as desired." }], "Text", Evaluatable->False, AspectRatioFixed->True], Cell[CellGroupData[{ Cell[BoxData[ RowBox[{"f", "=", RowBox[{ RowBox[{ RowBox[{ RowBox[{"(", GridBox[{ {\(\[PartialD]\_t\ x\_1[t]\)}, {\(\[PartialD]\_t \[Theta][t]\)}, {\(\[PartialD]\_t x\_2[t]\)}, {\(\[PartialD]\_t \[Alpha][t]\)}, {\(\[PartialD]\_{t, 2}x\_1[t]\)}, {\(\[PartialD]\_{t, 2}\[Theta][t]\)}, {\(\[PartialD]\_{t, 2}x\_2[t]\)}, {\(\[PartialD]\_{t, 2}\[Alpha][t]\)} }], ")"}], "/.", "sol"}], "/.", "ssvariables"}], "//", "Flatten"}]}]], "Input"], Cell[BoxData[ \({dx\_1, d\[Theta], dx\_2, d\[Alpha], \(-\(\(\(-F\_1\) + m\_1\ \((\(-g\)\ Sin[\[Theta]] - d\[Theta]\^2\ x\_1)\)\)\/m\_1\)\) + h\ \((\((Cos[\[Alpha]]\ l\_p\ m\_p\ \((\(-F\_2\) + m\_2\ \((\(-g\)\ Sin[\[Theta]] - d\[Theta]\^2\ x\_2)\) + m\_p\ \((\(-g\)\ Sin[\[Theta]] + \((\(-d\[Alpha]\^2\ \)\ Sin[\[Alpha]] - 2\ d\[Alpha]\ d\[Theta]\ Sin[\[Alpha]] - d\[Theta]\^2\ Sin[\[Alpha]])\)\ l\_p - d\[Theta]\^2\ x\_2)\))\) - l\_p\ m\_p\ \((m\_2 + m\_p)\)\ \((\(-g\)\ Sin[\[Alpha] + \[Theta]] + 2\ d\[Theta]\ Sin[\[Alpha]]\ dx\_2 + d\[Theta]\^2\ \((h\ Sin[\[Alpha]] - Cos[\[Alpha]]\ x\_2)\))\))\)/\((Cos[\[Alpha]]\ \ l\_p\ m\_p\ \((h\ m\_2 + \((h + Cos[\[Alpha]]\ l\_p)\)\ m\_p)\) - l\_p\ m\_p\ \((m\_2 + m\_p)\)\ \((h\ Cos[\[Alpha]] + l\_p + Sin[\[Alpha]]\ x\_2)\))\) - \((\((Cos[\[Alpha]]\^2\ \ l\_p\%2\ m\_p\%2 - l\_p\%2\ m\_p\ \((m\_2 + m\_p)\))\)\ \((\(-\((Cos[\[Alpha]]\ l\_p\ m\_p\ \ \((\(-F\_2\) + m\_2\ \((\(-g\)\ Sin[\[Theta]] - d\[Theta]\^2\ x\_2)\) + m\_p\ \((\(-g\)\ Sin[\[Theta]] + \ \((\(-d\[Alpha]\^2\)\ Sin[\[Alpha]] - 2\ d\[Alpha]\ d\[Theta]\ \ Sin[\[Alpha]] - d\[Theta]\^2\ Sin[\[Alpha]])\)\ l\_p - d\[Theta]\^2\ x\_2)\))\) - l\_p\ m\_p\ \((m\_2 + m\_p)\)\ \((\(-g\)\ Sin[\[Alpha] + \ \[Theta]] + 2\ d\[Theta]\ Sin[\[Alpha]]\ dx\_2 + d\[Theta]\^2\ \((h\ Sin[\[Alpha]] - Cos[\[Alpha]]\ x\_2)\))\))\)\)\ \ \((\(-l\_p\)\ m\_1\ m\_p\ \((h\ m\_2 + h\ m\_p + Cos[\[Alpha]]\ l\_p\ m\_p)\)\ \((h\ Cos[\ \[Alpha]] + l\_p + Sin[\[Alpha]]\ x\_2)\) + Cos[\[Alpha]]\ l\_p\ m\_p\ \((\(-h\^2\)\ \ m\_1\%2 + m\_1\ \((J + h\^2\ m\_p + 2\ h\ Cos[\[Alpha]]\ l\_p\ m\_p + l\_p\%2\ m\_p + m\_1\ \((h\^2 + x\_1\%2)\) + 2\ Sin[\[Alpha]]\ l\_p\ m\_p\ x\_2 + m\_p\ x\_2\%2 + m\_2\ \((h\^2 + x\_2\%2)\))\))\))\) + \ \((Cos[\[Alpha]]\ l\_p\ m\_p\ \((h\ m\_2 + \((h + Cos[\[Alpha]]\ l\_p)\)\ m\_p)\) - l\_p\ m\_p\ \((m\_2 + m\_p)\)\ \((h\ Cos[\[Alpha]] + l\_p + Sin[\[Alpha]]\ x\_2)\))\)\ \((\(-l\_p\)\ \ m\_1\ m\_p\ \((h\ m\_2 + h\ m\_p + Cos[\[Alpha]]\ l\_p\ m\_p)\)\ \((\(-g\)\ \ Sin[\[Alpha] + \[Theta]] + 2\ d\[Theta]\ Sin[\[Alpha]]\ dx\_2 + d\[Theta]\^2\ \((h\ Sin[\[Alpha]] - Cos[\[Alpha]]\ x\_2)\))\) + Cos[\[Alpha]]\ l\_p\ m\_p\ \((\(-h\)\ m\_1\ \((\ \(-F\_1\) + m\_1\ \((\(-g\)\ Sin[\[Theta]] - d\[Theta]\^2\ x\_1)\))\) + m\_1\ \((2\ d\[Theta]\ Sin[\[Alpha]]\ \ dx\_2\ l\_p\ m\_p - c\ g\ Sin[\[Theta]]\ m\_s + m\_1\ \((\(-g\)\ h\ Sin[\[Theta]] + \ \((\(-g\)\ Cos[\[Theta]] + 2\ d\[Theta]\ dx\_1)\)\ x\_1)\) + 2\ d\[Theta]\ dx\_2\ m\_p\ x\_2 + d\[Alpha]\^2\ Cos[\[Alpha]]\ l\_p\ \ m\_p\ x\_2 + 2\ d\[Alpha]\ d\[Theta]\ Cos[\[Alpha]]\ l\_p\ m\_p\ x\_2 + m\_2\ \((\(-g\)\ h\ Sin[\[Theta]] + \ \((\(-g\)\ Cos[\[Theta]] + 2\ d\[Theta]\ dx\_2)\)\ x\_2)\) - m\_p\ \((\((d\[Alpha]\^2\ h\ Sin[\ \[Alpha]] + 2\ d\[Alpha]\ d\[Theta]\ h\ Sin[\[Alpha]] + g\ Sin[\[Alpha] + \[Theta]])\)\ l\_p \ + g\ \((h\ Sin[\[Theta]] + Cos[\[Theta]]\ \ x\_2)\))\))\))\))\))\))\)/\((\((J\ Cos[\[Alpha]]\ l\_p\%3\ m\_1\ m\_2\ \ m\_p\%2 + J\ Cos[\[Alpha]]\ l\_p\%3\ m\_1\ m\_p\%3 - J\ Cos[\[Alpha]]\^3\ l\_p\%3\ m\_1\ m\_p\%3 + Cos[\[Alpha]]\ l\_p\%3\ m\_1\%2\ m\_2\ m\_p\%2\ \ x\_1\%2 + Cos[\[Alpha]]\ l\_p\%3\ m\_1\%2\ m\_p\%3\ x\_1\%2 - Cos[\[Alpha]]\^3\ l\_p\%3\ m\_1\%2\ m\_p\%3\ x\_1\%2 \ + Cos[\[Alpha]]\ l\_p\%3\ m\_1\ m\_2\%2\ m\_p\%2\ x\_2\%2 + 2\ Cos[\[Alpha]]\ l\_p\%3\ m\_1\ m\_2\ m\_p\%3\ \ x\_2\%2 - Cos[\[Alpha]]\^3\ l\_p\%3\ m\_1\ m\_2\ m\_p\%3\ x\_2\%2 - Cos[\[Alpha]]\ Sin[\[Alpha]]\^2\ l\_p\%3\ m\_1\ m\_2\ \ m\_p\%3\ x\_2\%2 + Cos[\[Alpha]]\ l\_p\%3\ m\_1\ m\_p\%4\ x\_2\%2 - Cos[\[Alpha]]\^3\ l\_p\%3\ m\_1\ m\_p\%4\ x\_2\%2 - Cos[\[Alpha]]\ Sin[\[Alpha]]\^2\ l\_p\%3\ m\_1\ \ m\_p\%4\ x\_2\%2)\)\ \((Cos[\[Alpha]]\ l\_p\ m\_p\ \((h\ m\_2 + \((h + Cos[\[Alpha]]\ l\_p)\)\ m\_p)\) - l\_p\ m\_p\ \((m\_2 + m\_p)\)\ \((h\ Cos[\[Alpha]] + l\_p + Sin[\[Alpha]]\ x\_2)\))\))\))\), \(-\(\((Cos[\ \[Alpha]]\ l\_p\ m\_p\ \((\(-F\_2\) + m\_2\ \((\(-g\)\ Sin[\[Theta]] - d\[Theta]\^2\ x\_2)\) + m\_p\ \((\(-g\)\ Sin[\[Theta]] + \((\(-d\[Alpha]\^2\)\ \ Sin[\[Alpha]] - 2\ d\[Alpha]\ d\[Theta]\ Sin[\[Alpha]] - d\[Theta]\^2\ Sin[\[Alpha]])\)\ l\_p - d\[Theta]\^2\ x\_2)\))\) - l\_p\ m\_p\ \((m\_2 + m\_p)\)\ \((\(-g\)\ Sin[\[Alpha] + \[Theta]] + 2\ d\[Theta]\ Sin[\[Alpha]]\ dx\_2 + d\[Theta]\^2\ \((h\ Sin[\[Alpha]] - Cos[\[Alpha]]\ x\_2)\))\))\)/\((Cos[\[Alpha]]\ \ l\_p\ m\_p\ \((h\ m\_2 + \((h + Cos[\[Alpha]]\ l\_p)\)\ m\_p)\) - l\_p\ m\_p\ \((m\_2 + m\_p)\)\ \((h\ Cos[\[Alpha]] + l\_p + Sin[\[Alpha]]\ x\_2)\))\)\)\) + \((\((Cos[\[Alpha]]\^2\ \ l\_p\%2\ m\_p\%2 - l\_p\%2\ m\_p\ \((m\_2 + m\_p)\))\)\ \((\(-\((Cos[\[Alpha]]\ l\_p\ m\_p\ \ \((\(-F\_2\) + m\_2\ \((\(-g\)\ Sin[\[Theta]] - d\[Theta]\^2\ x\_2)\) + m\_p\ \((\(-g\)\ Sin[\[Theta]] + \((\(-d\ \[Alpha]\^2\)\ Sin[\[Alpha]] - 2\ d\[Alpha]\ d\[Theta]\ Sin[\[Alpha]] - d\[Theta]\^2\ Sin[\[Alpha]])\)\ l\_p \ - d\[Theta]\^2\ x\_2)\))\) - l\_p\ m\_p\ \((m\_2 + m\_p)\)\ \((\(-g\)\ Sin[\[Alpha] + \[Theta]] \ + 2\ d\[Theta]\ Sin[\[Alpha]]\ dx\_2 + d\[Theta]\^2\ \((h\ Sin[\[Alpha]] - Cos[\[Alpha]]\ x\_2)\))\))\)\)\ \((\(-l\ \_p\)\ m\_1\ m\_p\ \((h\ m\_2 + h\ m\_p + Cos[\[Alpha]]\ l\_p\ m\_p)\)\ \((h\ \ Cos[\[Alpha]] + l\_p + Sin[\[Alpha]]\ x\_2)\) + Cos[\[Alpha]]\ l\_p\ m\_p\ \((\(-h\^2\)\ m\_1\%2 + m\_1\ \((J + h\^2\ m\_p + 2\ h\ Cos[\[Alpha]]\ l\_p\ m\_p + l\_p\%2\ m\_p + m\_1\ \((h\^2 + x\_1\%2)\) + 2\ Sin[\[Alpha]]\ l\_p\ m\_p\ x\_2 + m\_p\ x\_2\%2 + m\_2\ \((h\^2 + x\_2\%2)\))\))\))\) + \ \((Cos[\[Alpha]]\ l\_p\ m\_p\ \((h\ m\_2 + \((h + Cos[\[Alpha]]\ l\_p)\)\ m\_p)\) - l\_p\ m\_p\ \((m\_2 + m\_p)\)\ \((h\ Cos[\[Alpha]] + l\_p + Sin[\[Alpha]]\ x\_2)\))\)\ \((\(-l\_p\)\ m\_1\ \ m\_p\ \((h\ m\_2 + h\ m\_p + Cos[\[Alpha]]\ l\_p\ m\_p)\)\ \((\(-g\)\ Sin[\ \[Alpha] + \[Theta]] + 2\ d\[Theta]\ Sin[\[Alpha]]\ dx\_2 + d\[Theta]\^2\ \((h\ Sin[\[Alpha]] - Cos[\[Alpha]]\ x\_2)\))\) + Cos[\[Alpha]]\ l\_p\ m\_p\ \((\(-h\)\ m\_1\ \ \((\(-F\_1\) + m\_1\ \((\(-g\)\ Sin[\[Theta]] - d\[Theta]\^2\ x\_1)\))\) + m\_1\ \((2\ d\[Theta]\ Sin[\[Alpha]]\ dx\_2\ \ l\_p\ m\_p - c\ g\ Sin[\[Theta]]\ m\_s + m\_1\ \((\(-g\)\ h\ Sin[\[Theta]] + \ \((\(-g\)\ Cos[\[Theta]] + 2\ d\[Theta]\ dx\_1)\)\ x\_1)\) + 2\ d\[Theta]\ dx\_2\ m\_p\ x\_2 + d\[Alpha]\^2\ Cos[\[Alpha]]\ l\_p\ m\_p\ \ x\_2 + 2\ d\[Alpha]\ d\[Theta]\ Cos[\[Alpha]]\ l\_p\ m\_p\ x\_2 + m\_2\ \((\(-g\)\ h\ Sin[\[Theta]] + \ \((\(-g\)\ Cos[\[Theta]] + 2\ d\[Theta]\ dx\_2)\)\ x\_2)\) - m\_p\ \((\((d\[Alpha]\^2\ h\ \ Sin[\[Alpha]] + 2\ d\[Alpha]\ d\[Theta]\ h\ Sin[\[Alpha]] + g\ Sin[\[Alpha] + \[Theta]])\)\ l\_p \ + g\ \((h\ Sin[\[Theta]] + Cos[\[Theta]]\ \ x\_2)\))\))\))\))\))\))\)/\((\((J\ Cos[\[Alpha]]\ l\_p\%3\ m\_1\ m\_2\ \ m\_p\%2 + J\ Cos[\[Alpha]]\ l\_p\%3\ m\_1\ m\_p\%3 - J\ Cos[\[Alpha]]\^3\ l\_p\%3\ m\_1\ m\_p\%3 + Cos[\[Alpha]]\ l\_p\%3\ m\_1\%2\ m\_2\ m\_p\%2\ x\_1\%2 + Cos[\[Alpha]]\ l\_p\%3\ m\_1\%2\ m\_p\%3\ x\_1\%2 - Cos[\[Alpha]]\^3\ l\_p\%3\ m\_1\%2\ m\_p\%3\ x\_1\%2 + Cos[\[Alpha]]\ l\_p\%3\ m\_1\ m\_2\%2\ m\_p\%2\ x\_2\%2 + 2\ Cos[\[Alpha]]\ l\_p\%3\ m\_1\ m\_2\ m\_p\%3\ x\_2\%2 - Cos[\[Alpha]]\^3\ l\_p\%3\ m\_1\ m\_2\ m\_p\%3\ x\_2\%2 - Cos[\[Alpha]]\ Sin[\[Alpha]]\^2\ l\_p\%3\ m\_1\ m\_2\ \ m\_p\%3\ x\_2\%2 + Cos[\[Alpha]]\ l\_p\%3\ m\_1\ m\_p\%4\ x\_2\%2 - Cos[\[Alpha]]\^3\ l\_p\%3\ m\_1\ m\_p\%4\ x\_2\%2 - Cos[\[Alpha]]\ Sin[\[Alpha]]\^2\ l\_p\%3\ m\_1\ m\_p\%4\ \ x\_2\%2)\)\ \((Cos[\[Alpha]]\ l\_p\ m\_p\ \((h\ m\_2 + \((h + Cos[\[Alpha]]\ l\_p)\)\ m\_p)\) - l\_p\ m\_p\ \((m\_2 + m\_p)\)\ \((h\ Cos[\[Alpha]] + l\_p + Sin[\[Alpha]]\ x\_2)\))\))\), \(-Sec[\[Alpha]]\)\ \((\ \(-g\)\ Sin[\[Alpha] + \[Theta]] + 2\ d\[Theta]\ Sin[\[Alpha]]\ dx\_2 + d\[Theta]\^2\ \((h\ Sin[\[Alpha]] - Cos[\[Alpha]]\ x\_2)\))\) + \((Sec[\[Alpha]]\ l\_p\ \ \((\(-\((Cos[\[Alpha]]\ l\_p\ m\_p\ \((\(-F\_2\) + m\_2\ \((\(-g\)\ Sin[\[Theta]] - d\[Theta]\^2\ x\_2)\) + m\_p\ \((\(-g\)\ Sin[\[Theta]] + \((\(-d\ \[Alpha]\^2\)\ Sin[\[Alpha]] - 2\ d\[Alpha]\ d\[Theta]\ Sin[\[Alpha]] - d\[Theta]\^2\ Sin[\[Alpha]])\)\ l\_p \ - d\[Theta]\^2\ x\_2)\))\) - l\_p\ m\_p\ \((m\_2 + m\_p)\)\ \((\(-g\)\ Sin[\[Alpha] + \[Theta]] \ + 2\ d\[Theta]\ Sin[\[Alpha]]\ dx\_2 + d\[Theta]\^2\ \((h\ Sin[\[Alpha]] - Cos[\[Alpha]]\ x\_2)\))\))\)\)\ \((\(-l\ \_p\)\ m\_1\ m\_p\ \((h\ m\_2 + h\ m\_p + Cos[\[Alpha]]\ l\_p\ m\_p)\)\ \((h\ \ Cos[\[Alpha]] + l\_p + Sin[\[Alpha]]\ x\_2)\) + Cos[\[Alpha]]\ l\_p\ m\_p\ \((\(-h\^2\)\ m\_1\%2 + m\_1\ \((J + h\^2\ m\_p + 2\ h\ Cos[\[Alpha]]\ l\_p\ m\_p + l\_p\%2\ m\_p + m\_1\ \((h\^2 + x\_1\%2)\) + 2\ Sin[\[Alpha]]\ l\_p\ m\_p\ x\_2 + m\_p\ x\_2\%2 + m\_2\ \((h\^2 + x\_2\%2)\))\))\))\) + \ \((Cos[\[Alpha]]\ l\_p\ m\_p\ \((h\ m\_2 + \((h + Cos[\[Alpha]]\ l\_p)\)\ m\_p)\) - l\_p\ m\_p\ \((m\_2 + m\_p)\)\ \((h\ Cos[\[Alpha]] + l\_p + Sin[\[Alpha]]\ x\_2)\))\)\ \((\(-l\_p\)\ m\_1\ \ m\_p\ \((h\ m\_2 + h\ m\_p + Cos[\[Alpha]]\ l\_p\ m\_p)\)\ \((\(-g\)\ Sin[\ \[Alpha] + \[Theta]] + 2\ d\[Theta]\ Sin[\[Alpha]]\ dx\_2 + d\[Theta]\^2\ \((h\ Sin[\[Alpha]] - Cos[\[Alpha]]\ x\_2)\))\) + Cos[\[Alpha]]\ l\_p\ m\_p\ \((\(-h\)\ m\_1\ \ \((\(-F\_1\) + m\_1\ \((\(-g\)\ Sin[\[Theta]] - d\[Theta]\^2\ x\_1)\))\) + m\_1\ \((2\ d\[Theta]\ Sin[\[Alpha]]\ dx\_2\ \ l\_p\ m\_p - c\ g\ Sin[\[Theta]]\ m\_s + m\_1\ \((\(-g\)\ h\ Sin[\[Theta]] + \ \((\(-g\)\ Cos[\[Theta]] + 2\ d\[Theta]\ dx\_1)\)\ x\_1)\) + 2\ d\[Theta]\ dx\_2\ m\_p\ x\_2 + d\[Alpha]\^2\ Cos[\[Alpha]]\ l\_p\ m\_p\ \ x\_2 + 2\ d\[Alpha]\ d\[Theta]\ Cos[\[Alpha]]\ l\_p\ m\_p\ x\_2 + m\_2\ \((\(-g\)\ h\ Sin[\[Theta]] + \ \((\(-g\)\ Cos[\[Theta]] + 2\ d\[Theta]\ dx\_2)\)\ x\_2)\) - m\_p\ \((\((d\[Alpha]\^2\ h\ \ Sin[\[Alpha]] + 2\ d\[Alpha]\ d\[Theta]\ h\ Sin[\[Alpha]] + g\ Sin[\[Alpha] + \[Theta]])\)\ l\_p \ + g\ \((h\ Sin[\[Theta]] + Cos[\[Theta]]\ \ x\_2)\))\))\))\))\))\))\)/\((J\ Cos[\[Alpha]]\ l\_p\%3\ m\_1\ m\_2\ m\_p\%2 + J\ Cos[\[Alpha]]\ l\_p\%3\ m\_1\ m\_p\%3 - J\ Cos[\[Alpha]]\^3\ l\_p\%3\ m\_1\ m\_p\%3 + Cos[\[Alpha]]\ l\_p\%3\ m\_1\%2\ m\_2\ m\_p\%2\ x\_1\%2 + Cos[\[Alpha]]\ l\_p\%3\ m\_1\%2\ m\_p\%3\ x\_1\%2 - Cos[\[Alpha]]\^3\ l\_p\%3\ m\_1\%2\ m\_p\%3\ x\_1\%2 + Cos[\[Alpha]]\ l\_p\%3\ m\_1\ m\_2\%2\ m\_p\%2\ x\_2\%2 + 2\ Cos[\[Alpha]]\ l\_p\%3\ m\_1\ m\_2\ m\_p\%3\ x\_2\%2 - Cos[\[Alpha]]\^3\ l\_p\%3\ m\_1\ m\_2\ m\_p\%3\ x\_2\%2 - Cos[\[Alpha]]\ Sin[\[Alpha]]\^2\ l\_p\%3\ m\_1\ m\_2\ m\_p\%3\ \ x\_2\%2 + Cos[\[Alpha]]\ l\_p\%3\ m\_1\ m\_p\%4\ x\_2\%2 - Cos[\[Alpha]]\^3\ l\_p\%3\ m\_1\ m\_p\%4\ x\_2\%2 - Cos[\[Alpha]]\ Sin[\[Alpha]]\^2\ l\_p\%3\ m\_1\ m\_p\%4\ \ x\_2\%2)\) + Sec[\[Alpha]]\ \((h\ Cos[\[Alpha]] + l\_p + Sin[\[Alpha]]\ x\_2)\)\ \((\((Cos[\[Alpha]]\ l\_p\ m\_p\ \ \((\(-F\_2\) + m\_2\ \((\(-g\)\ Sin[\[Theta]] - d\[Theta]\^2\ x\_2)\) + m\_p\ \((\(-g\)\ Sin[\[Theta]] + \((\(-d\[Alpha]\^2\ \)\ Sin[\[Alpha]] - 2\ d\[Alpha]\ d\[Theta]\ Sin[\[Alpha]] - d\[Theta]\^2\ Sin[\[Alpha]])\)\ l\_p - d\[Theta]\^2\ x\_2)\))\) - l\_p\ m\_p\ \((m\_2 + m\_p)\)\ \((\(-g\)\ Sin[\[Alpha] + \[Theta]] + 2\ d\[Theta]\ Sin[\[Alpha]]\ dx\_2 + d\[Theta]\^2\ \((h\ Sin[\[Alpha]] - Cos[\[Alpha]]\ x\_2)\))\))\)/\((Cos[\[Alpha]]\ \ l\_p\ m\_p\ \((h\ m\_2 + \((h + Cos[\[Alpha]]\ l\_p)\)\ m\_p)\) - l\_p\ m\_p\ \((m\_2 + m\_p)\)\ \((h\ Cos[\[Alpha]] + l\_p + Sin[\[Alpha]]\ x\_2)\))\) - \((\((Cos[\[Alpha]]\^2\ \ l\_p\%2\ m\_p\%2 - l\_p\%2\ m\_p\ \((m\_2 + m\_p)\))\)\ \((\(-\((Cos[\[Alpha]]\ l\_p\ m\_p\ \ \((\(-F\_2\) + m\_2\ \((\(-g\)\ Sin[\[Theta]] - d\[Theta]\^2\ x\_2)\) + m\_p\ \((\(-g\)\ Sin[\[Theta]] + \ \((\(-d\[Alpha]\^2\)\ Sin[\[Alpha]] - 2\ d\[Alpha]\ d\[Theta]\ \ Sin[\[Alpha]] - d\[Theta]\^2\ Sin[\[Alpha]])\)\ l\_p - d\[Theta]\^2\ x\_2)\))\) - l\_p\ m\_p\ \((m\_2 + m\_p)\)\ \((\(-g\)\ Sin[\[Alpha] + \ \[Theta]] + 2\ d\[Theta]\ Sin[\[Alpha]]\ dx\_2 + d\[Theta]\^2\ \((h\ Sin[\[Alpha]] - Cos[\[Alpha]]\ x\_2)\))\))\)\)\ \ \((\(-l\_p\)\ m\_1\ m\_p\ \((h\ m\_2 + h\ m\_p + Cos[\[Alpha]]\ l\_p\ m\_p)\)\ \((h\ Cos[\ \[Alpha]] + l\_p + Sin[\[Alpha]]\ x\_2)\) + Cos[\[Alpha]]\ l\_p\ m\_p\ \((\(-h\^2\)\ \ m\_1\%2 + m\_1\ \((J + h\^2\ m\_p + 2\ h\ Cos[\[Alpha]]\ l\_p\ m\_p + l\_p\%2\ m\_p + m\_1\ \((h\^2 + x\_1\%2)\) + 2\ Sin[\[Alpha]]\ l\_p\ m\_p\ x\_2 + m\_p\ x\_2\%2 + m\_2\ \((h\^2 + x\_2\%2)\))\))\))\) + \ \((Cos[\[Alpha]]\ l\_p\ m\_p\ \((h\ m\_2 + \((h + Cos[\[Alpha]]\ l\_p)\)\ m\_p)\) - l\_p\ m\_p\ \((m\_2 + m\_p)\)\ \((h\ Cos[\[Alpha]] + l\_p + Sin[\[Alpha]]\ x\_2)\))\)\ \((\(-l\_p\)\ \ m\_1\ m\_p\ \((h\ m\_2 + h\ m\_p + Cos[\[Alpha]]\ l\_p\ m\_p)\)\ \((\(-g\)\ \ Sin[\[Alpha] + \[Theta]] + 2\ d\[Theta]\ Sin[\[Alpha]]\ dx\_2 + d\[Theta]\^2\ \((h\ Sin[\[Alpha]] - Cos[\[Alpha]]\ x\_2)\))\) + Cos[\[Alpha]]\ l\_p\ m\_p\ \((\(-h\)\ m\_1\ \((\ \(-F\_1\) + m\_1\ \((\(-g\)\ Sin[\[Theta]] - d\[Theta]\^2\ x\_1)\))\) + m\_1\ \((2\ d\[Theta]\ Sin[\[Alpha]]\ \ dx\_2\ l\_p\ m\_p - c\ g\ Sin[\[Theta]]\ m\_s + m\_1\ \((\(-g\)\ h\ Sin[\[Theta]] + \ \((\(-g\)\ Cos[\[Theta]] + 2\ d\[Theta]\ dx\_1)\)\ x\_1)\) + 2\ d\[Theta]\ dx\_2\ m\_p\ x\_2 + d\[Alpha]\^2\ Cos[\[Alpha]]\ l\_p\ \ m\_p\ x\_2 + 2\ d\[Alpha]\ d\[Theta]\ Cos[\[Alpha]]\ l\_p\ m\_p\ x\_2 + m\_2\ \((\(-g\)\ h\ Sin[\[Theta]] + \ \((\(-g\)\ Cos[\[Theta]] + 2\ d\[Theta]\ dx\_2)\)\ x\_2)\) - m\_p\ \((\((d\[Alpha]\^2\ h\ Sin[\ \[Alpha]] + 2\ d\[Alpha]\ d\[Theta]\ h\ Sin[\[Alpha]] + g\ Sin[\[Alpha] + \[Theta]])\)\ l\_p \ + g\ \((h\ Sin[\[Theta]] + Cos[\[Theta]]\ \ x\_2)\))\))\))\))\))\))\)/\((\((J\ Cos[\[Alpha]]\ l\_p\%3\ m\_1\ m\_2\ \ m\_p\%2 + J\ Cos[\[Alpha]]\ l\_p\%3\ m\_1\ m\_p\%3 - J\ Cos[\[Alpha]]\^3\ l\_p\%3\ m\_1\ m\_p\%3 + Cos[\[Alpha]]\ l\_p\%3\ m\_1\%2\ m\_2\ m\_p\%2\ \ x\_1\%2 + Cos[\[Alpha]]\ l\_p\%3\ m\_1\%2\ m\_p\%3\ x\_1\%2 - Cos[\[Alpha]]\^3\ l\_p\%3\ m\_1\%2\ m\_p\%3\ x\_1\%2 \ + Cos[\[Alpha]]\ l\_p\%3\ m\_1\ m\_2\%2\ m\_p\%2\ x\_2\%2 + 2\ Cos[\[Alpha]]\ l\_p\%3\ m\_1\ m\_2\ m\_p\%3\ \ x\_2\%2 - Cos[\[Alpha]]\^3\ l\_p\%3\ m\_1\ m\_2\ m\_p\%3\ x\_2\%2 - Cos[\[Alpha]]\ Sin[\[Alpha]]\^2\ l\_p\%3\ m\_1\ m\_2\ \ m\_p\%3\ x\_2\%2 + Cos[\[Alpha]]\ l\_p\%3\ m\_1\ m\_p\%4\ x\_2\%2 - Cos[\[Alpha]]\^3\ l\_p\%3\ m\_1\ m\_p\%4\ x\_2\%2 - Cos[\[Alpha]]\ Sin[\[Alpha]]\^2\ l\_p\%3\ m\_1\ \ m\_p\%4\ x\_2\%2)\)\ \((Cos[\[Alpha]]\ l\_p\ m\_p\ \((h\ m\_2 + \((h + Cos[\[Alpha]]\ l\_p)\)\ m\_p)\) - l\_p\ m\_p\ \((m\_2 + m\_p)\)\ \((h\ Cos[\[Alpha]] + l\_p + Sin[\[Alpha]]\ x\_2)\))\))\))\), \ \(-\(\((\(-\((Cos[\[Alpha]]\ l\_p\ m\_p\ \((\(-F\_2\) + m\_2\ \((\(-g\)\ Sin[\[Theta]] - d\[Theta]\^2\ x\_2)\) + m\_p\ \((\(-g\)\ Sin[\[Theta]] + \ \((\(-d\[Alpha]\^2\)\ Sin[\[Alpha]] - 2\ d\[Alpha]\ d\[Theta]\ \ Sin[\[Alpha]] - d\[Theta]\^2\ Sin[\[Alpha]])\)\ l\_p - d\[Theta]\^2\ x\_2)\))\) - l\_p\ m\_p\ \((m\_2 + m\_p)\)\ \((\(-g\)\ Sin[\[Alpha] + \[Theta]] + 2\ d\[Theta]\ Sin[\[Alpha]]\ dx\_2 + d\[Theta]\^2\ \((h\ Sin[\[Alpha]] - Cos[\[Alpha]]\ x\_2)\))\))\)\)\ \ \((\(-l\_p\)\ m\_1\ m\_p\ \((h\ m\_2 + h\ m\_p + Cos[\[Alpha]]\ l\_p\ m\_p)\)\ \((h\ Cos[\[Alpha]] + l\_p + Sin[\[Alpha]]\ x\_2)\) + Cos[\[Alpha]]\ l\_p\ m\_p\ \((\(-h\^2\)\ m\_1\%2 + m\_1\ \((J + h\^2\ m\_p + 2\ h\ Cos[\[Alpha]]\ l\_p\ m\_p + l\_p\%2\ m\_p + m\_1\ \((h\^2 + x\_1\%2)\) + 2\ Sin[\[Alpha]]\ l\_p\ m\_p\ x\_2 + m\_p\ x\_2\%2 + m\_2\ \((h\^2 + x\_2\%2)\))\))\))\) + \((Cos[\[Alpha]]\ \ l\_p\ m\_p\ \((h\ m\_2 + \((h + Cos[\[Alpha]]\ l\_p)\)\ m\_p)\) - l\_p\ m\_p\ \((m\_2 + m\_p)\)\ \((h\ Cos[\[Alpha]] + l\_p + Sin[\[Alpha]]\ x\_2)\))\)\ \((\(-l\_p\)\ m\_1\ m\_p\ \ \((h\ m\_2 + h\ m\_p + Cos[\[Alpha]]\ l\_p\ m\_p)\)\ \((\(-g\)\ Sin[\ \[Alpha] + \[Theta]] + 2\ d\[Theta]\ Sin[\[Alpha]]\ dx\_2 + d\[Theta]\^2\ \((h\ Sin[\[Alpha]] - Cos[\[Alpha]]\ x\_2)\))\) + Cos[\[Alpha]]\ l\_p\ m\_p\ \((\(-h\)\ m\_1\ \((\(-F\_1\) \ + m\_1\ \((\(-g\)\ Sin[\[Theta]] - d\[Theta]\^2\ x\_1)\))\) + m\_1\ \((2\ d\[Theta]\ Sin[\[Alpha]]\ dx\_2\ l\_p\ \ m\_p - c\ g\ Sin[\[Theta]]\ m\_s + m\_1\ \((\(-g\)\ h\ Sin[\[Theta]] + \((\(-g\)\ \ Cos[\[Theta]] + 2\ d\[Theta]\ dx\_1)\)\ x\_1)\) + 2\ d\[Theta]\ dx\_2\ m\_p\ x\_2 + d\[Alpha]\^2\ Cos[\[Alpha]]\ l\_p\ m\_p\ x\_2 \ + 2\ d\[Alpha]\ d\[Theta]\ Cos[\[Alpha]]\ l\_p\ m\_p\ x\_2 + m\_2\ \((\(-g\)\ h\ Sin[\[Theta]] + \((\(-g\)\ \ Cos[\[Theta]] + 2\ d\[Theta]\ dx\_2)\)\ x\_2)\) - m\_p\ \((\((d\[Alpha]\^2\ h\ Sin[\[Alpha]] + 2\ d\[Alpha]\ d\[Theta]\ h\ Sin[\ \[Alpha]] + g\ Sin[\[Alpha] + \[Theta]])\)\ l\_p + g\ \((h\ Sin[\[Theta]] + Cos[\[Theta]]\ \ x\_2)\))\))\))\))\))\)/\((J\ Cos[\[Alpha]]\ l\_p\%3\ m\_1\ m\_2\ m\_p\%2 + J\ Cos[\[Alpha]]\ l\_p\%3\ m\_1\ m\_p\%3 - J\ Cos[\[Alpha]]\^3\ l\_p\%3\ m\_1\ m\_p\%3 + Cos[\[Alpha]]\ l\_p\%3\ m\_1\%2\ m\_2\ m\_p\%2\ x\_1\%2 + Cos[\[Alpha]]\ l\_p\%3\ m\_1\%2\ m\_p\%3\ x\_1\%2 - Cos[\[Alpha]]\^3\ l\_p\%3\ m\_1\%2\ m\_p\%3\ x\_1\%2 + Cos[\[Alpha]]\ l\_p\%3\ m\_1\ m\_2\%2\ m\_p\%2\ x\_2\%2 + 2\ Cos[\[Alpha]]\ l\_p\%3\ m\_1\ m\_2\ m\_p\%3\ x\_2\%2 - Cos[\[Alpha]]\^3\ l\_p\%3\ m\_1\ m\_2\ m\_p\%3\ x\_2\%2 - Cos[\[Alpha]]\ Sin[\[Alpha]]\^2\ l\_p\%3\ m\_1\ m\_2\ m\_p\%3\ \ x\_2\%2 + Cos[\[Alpha]]\ l\_p\%3\ m\_1\ m\_p\%4\ x\_2\%2 - Cos[\[Alpha]]\^3\ l\_p\%3\ m\_1\ m\_p\%4\ x\_2\%2 - Cos[\[Alpha]]\ Sin[\[Alpha]]\^2\ l\_p\%3\ m\_1\ m\_p\%4\ \ x\_2\%2)\)\)\)}\)], "Output"] }, Closed]] }, Open ]], Cell[CellGroupData[{ Cell["The Linearized Model", "Subsubsection", Evaluatable->False, AspectRatioFixed->True], Cell["\<\ Since we will design a controller using methods for linear systems \ we need to linearize the nonlinear state space model of the system around the \ origin. \ \>", "Text", Evaluatable->False, AspectRatioFixed->True], Cell[TextData[{ "\t\t", Cell[BoxData[ FormBox[ RowBox[{ RowBox[{"x", "=", RowBox[{"(", GridBox[{ {"0", "0", "0", "0", "0", "0", "0", "0"} }], ")"}]}], " ", ",", " ", RowBox[{"u", "=", RowBox[{ RowBox[{"(", GridBox[{ {"0", "0"} }], ")"}], " ", "\[Implies]", " ", \(x\& . [ t] \[TildeTilde] \[ScriptCapitalA]\ . x[t] + \ \[ScriptCapitalB] . \ u[t]\)}]}]}], TraditionalForm]]], "." }], "Text", Evaluatable->False, AspectRatioFixed->True], Cell[TextData[{ "This can easily be obtained using the ", StyleBox["Linearize", FontFamily->"Courier"], " function in CSP" }], "Text"], Cell[CellGroupData[{ Cell[BoxData[{ \(\(ss = Linearize[ f, {x\_1, \[Theta], x\_2, \[Alpha]}, \n\t\t{{x\_1, 0}, {\[Theta], 0}, {x\_2, 0}, {\[Alpha], 0}, {dx\_1, 0}, {d\[Theta], 0}, {dx\_2, 0}, {d\[Alpha], 0}}, \n\t\t{{F\_1, 0}, {F\_2, 0}}] // Simplify;\)\), "\n", \(Map[MatrixForm, ss]\)}], "Input"], Cell[BoxData[ RowBox[{"StateSpace", "[", RowBox[{ TagBox[ RowBox[{"(", "\[NoBreak]", GridBox[{ {"0", "0", "0", "0", "1", "0", "0", "0"}, {"0", "0", "0", "0", "0", "1", "0", "0"}, {"0", "0", "0", "0", "0", "0", "1", "0"}, {"0", "0", "0", "0", "0", "0", "0", "1"}, {\(-\(\(g\ h\ m\_1\)\/J\)\), \(g - \(c\ g\ h\ m\_s\)\/J\), \ \(-\(\(g\ h\ \((m\_2 + m\_p)\)\)\/J\)\), "0", "0", "0", "0", "0"}, {\(\(g\ m\_1\)\/J\), \(\(c\ g\ m\_s\)\/J\), \(\(g\ \((m\_2 + m\_p)\)\)\/J\), "0", "0", "0", "0", "0"}, {\(-\(\(g\ h\ m\_1\)\/J\)\), \(g - \(c\ g\ h\ m\_s\)\/J\), \ \(-\(\(g\ h\ \((m\_2 + m\_p)\)\)\/J\)\), \(-\(\(g\ m\_p\)\/m\_2\)\), "0", "0", "0", "0"}, {\(-\(\(g\ m\_1\)\/J\)\), \(-\(\(c\ g\ m\_s\)\/J\)\), \ \(-\(\(g\ \((m\_2 + m\_p)\)\)\/J\)\), \(\(g\ \((m\_2 + m\_p)\)\)\/\(l\_p\ m\_2\)\), "0", "0", "0", "0"} }], "\[NoBreak]", ")"}], (MatrixForm[ #]&)], ",", TagBox[ RowBox[{"(", "\[NoBreak]", GridBox[{ {"0", "0"}, {"0", "0"}, {"0", "0"}, {"0", "0"}, {\(h\^2\/J + 1\/m\_1\), \(h\^2\/J\)}, {\(-\(h\/J\)\), \(-\(h\/J\)\)}, {\(h\^2\/J\), \(h\^2\/J + 1\/m\_2\)}, {\(h\/J\), \(h\/J - 1\/\(l\_p\ m\_2\)\)} }], "\[NoBreak]", ")"}], (MatrixForm[ #]&)], ",", TagBox[ RowBox[{"(", "\[NoBreak]", GridBox[{ {"1", "0", "0", "0", "0", "0", "0", "0"}, {"0", "1", "0", "0", "0", "0", "0", "0"}, {"0", "0", "1", "0", "0", "0", "0", "0"}, {"0", "0", "0", "1", "0", "0", "0", "0"} }], "\[NoBreak]", ")"}], (MatrixForm[ #]&)], ",", TagBox[ RowBox[{"(", "\[NoBreak]", GridBox[{ {"0", "0"}, {"0", "0"}, {"0", "0"}, {"0", "0"} }], "\[NoBreak]", ")"}], (MatrixForm[ #]&)]}], "]"}]], "Output"] }, Open ]], Cell["\<\ We extract the matrices from the linearization and substitute with \ the physical values of the parameters to get numerical entities\ \>", "Text"], Cell[BoxData[ \(\({\[ScriptCapitalA], \[ScriptCapitalB], \[ScriptCapitalC], \ \[ScriptCapitalD]} = \(ss /. StateSpace \[Rule] List\) /. physicalvalues;\)\)], "Input"], Cell[CellGroupData[{ Cell[BoxData[ \(\[ScriptCapitalA] // MatrixForm\)], "Input"], Cell[BoxData[ TagBox[ RowBox[{"(", "\[NoBreak]", GridBox[{ {"0", "0", "0", "0", "1", "0", "0", "0"}, {"0", "0", "0", "0", "0", "1", "0", "0"}, {"0", "0", "0", "0", "0", "0", "1", "0"}, {"0", "0", "0", "0", "0", "0", "0", "1"}, {\(-0.6063806250000001`\), "9.530782875`", \(-0.47946374999999997`\), "0", "0", "0", "0", "0"}, {"5.272875`", "2.4279749999999996`", "4.16925`", "0", "0", "0", "0", "0"}, {\(-0.6063806250000001`\), "9.530782875`", \(-0.47946374999999997`\), \(-4.0875`\), "0", "0", "0", "0"}, {\(-5.272875`\), \(-2.4279749999999996`\), \(-4.16925`\), "41.48507462686568`", "0", "0", "0", "0"} }], "\[NoBreak]", ")"}], (MatrixForm[ #]&)]], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(\[ScriptCapitalB] // MatrixForm\)], "Input"], Cell[BoxData[ TagBox[ RowBox[{"(", "\[NoBreak]", GridBox[{ {"0", "0"}, {"0", "0"}, {"0", "0"}, {"0", "0"}, {"1.1710563226744186`", "0.008265625`"}, {\(-0.07187500000000001`\), \(-0.07187500000000001`\)}, {"0.008265625`", "2.0915989583333334`"}, {"0.07187500000000001`", \(-6.147030472636817`\)} }], "\[NoBreak]", ")"}], (MatrixForm[ #]&)]], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(\[ScriptCapitalC] // MatrixForm\)], "Input"], Cell[BoxData[ TagBox[ RowBox[{"(", "\[NoBreak]", GridBox[{ {"1", "0", "0", "0", "0", "0", "0", "0"}, {"0", "1", "0", "0", "0", "0", "0", "0"}, {"0", "0", "1", "0", "0", "0", "0", "0"}, {"0", "0", "0", "1", "0", "0", "0", "0"} }], "\[NoBreak]", ")"}], (MatrixForm[ #]&)]], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(\[ScriptCapitalD] // MatrixForm\)], "Input"], Cell[BoxData[ TagBox[ RowBox[{"(", "\[NoBreak]", GridBox[{ {"0", "0"}, {"0", "0"}, {"0", "0"}, {"0", "0"} }], "\[NoBreak]", ")"}], (MatrixForm[ #]&)]], "Output"] }, Open ]], Cell["\<\ The linear model of the system allow us to use standard methods for \ controller design. \ \>", "Text"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Controller Design", "Subsection"], Cell[TextData[{ "The method for computing the feedback law requires the linear model to be \ controllable. This implies that the system can be stabilized and that the \ method will find a numerical instantiation of ", Cell[BoxData[ \(TraditionalForm\`\[ScriptCapitalL]\)]], " such that this is obtained. To check controllability we use the ", StyleBox["Controllable", FontFamily->"Courier"], " command in CSP." }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(Controllable[ss /. physicalvalues]\)], "Input"], Cell[BoxData[ \(True\)], "Output"] }, Open ]], Cell[TextData[{ "Compute a full state feedback controller using the LQG-method (", StyleBox["LQRegulatorGains", FontFamily->"Courier"], " is a CSP command)." }], "Text"], Cell[CellGroupData[{ Cell[BoxData[{ \(\(\[ScriptCapitalL] = LQRegulatorGains[\[IndentingNewLine]ss /. physicalvalues, \[IndentingNewLine]DiagonalMatrix[{1, 5. , 1, 5. , 0, 0, 0, 0}], \[IndentingNewLine]0.1\ IdentityMatrix[ 2]\ ];\)\), "\n", \(\[ScriptCapitalL] // MatrixForm\)}], "Input"], Cell[BoxData[ TagBox[ RowBox[{"(", "\[NoBreak]", GridBox[{ {"26.792917634061048`", "52.94001757251486`", "21.36763243632607`", "11.826075752239758`", "7.239817088310864`", "18.30749866807136`", "6.540279309740164`", "2.289195364739435`"}, {\(-7.651828094122264`\), \(-26.790811938538504`\), \ \(-10.07752853452522`\), \(-27.725924950007695`\), \(-1.628894247352639`\), \ \(-8.778166989710856`\), \(-5.388408575785637`\), \(-4.549390017098888`\)} }], "\[NoBreak]", ")"}], (MatrixForm[ #]&)]], "Output"] }, Open ]], Cell[TextData[{ "The control law to be used is ", Cell[BoxData[ \(TraditionalForm\`u[t] = \(-\[ScriptCapitalL] . x[t]\)\)]], ", where ", Cell[BoxData[ \(TraditionalForm\`x[t]\)]], " are measurements of the states. This gives the following closed loop \ system to simulate ", Cell[BoxData[ \(TraditionalForm\`x\& . [t] = f\ [x[t]\ , \(-\[ScriptCapitalL] . x[t]\)]\)]], "." }], "Text"] }, Open ]], Cell[CellGroupData[{ Cell["Simulation and Code Generation", "Subsection"], Cell[CellGroupData[{ Cell["Preliminaries", "Subsubsection"], Cell["We store the states as a vector", "Text"], Cell[BoxData[ \(x\_ss := {x\_1, \[Theta], x\_2, \[Alpha], dx\_1, d\[Theta], dx\_2, d\[Alpha]}\)], "Input"], Cell["\<\ and close the feedback loop which gives the following right hand \ side of the state space equations\ \>", "Text"], Cell[BoxData[ \(\(f1 = f /. Thread[{F\_1, F\_2} \[Rule] \(-\[ScriptCapitalL] . x\_ss\)];\)\)], "Input"], Cell["\<\ Change names of variables to only ASCII characters (needed for code \ generation)\ \>", "Text"], Cell[BoxData[ \(\(Cvariables\ = \[IndentingNewLine]{x\_1 \[Rule] \ x1, \[Theta]\ \[Rule] \ theta, x\_2\ \[Rule] \ x2, \[Alpha]\ \[Rule] \ alpha, \[IndentingNewLine]dx\_1\ \[Rule] \ dx1, d\[Theta]\ \[Rule] \ dtheta, dx\_2\ \[Rule] \ dx2, \ d\[Alpha] \[Rule] \ dalpha};\)\)], "Input"], Cell["\<\ The right hand side of the closed loop state space equations \ (intended for code generation)\ \>", "Text"], Cell[BoxData[ \(\(rhs = \(f1 /. physicalvalues\)\ /. \ Cvariables;\)\)], "Input", AspectRatioFixed->True], Cell[TextData[{ "We define the function ", StyleBox["ClosedLoopPendulumEquationsRHS", FontFamily->"Courier"], ", which has the huge right hand side expression from above as its body. \ The type declarations ", StyleBox["Real ", FontFamily->"Courier"], StyleBox["and", FontFamily->"Times New Roman"], StyleBox[" ", FontFamily->"Courier"], " ", StyleBox["\[Rule] Real[8]", FontFamily->"Courier"], " below are the syntax in ", StyleBox["MathCode C++", FontSlant->"Italic"], " for providing type information. Explicit type declarations is needed to \ generate efficient C++ code. " }], "Text"], Cell[BoxData[ \(\(ClosedLoopPendulumEquationsRHS[\n\tReal\ x1_, Real\ theta_, Real\ x2_, Real\ alpha_, \n\tReal\ dx1_, Real\ dtheta_, Real\ dx2_, Real\ dalpha_] \[Rule] Real[8] = rhs;\)\)], "Input"] }, Open ]], Cell[CellGroupData[{ Cell[TextData[{ "Simulation of the Nonlinear Model within ", StyleBox["Mathematica", FontSlant->"Italic"] }], "Subsubsection"], Cell[TextData[{ "We define ", Cell[BoxData[ \(TraditionalForm\`f\_cl[t]\)]], " to be a short notation for the ClosedLoopPendulumEquationsRHS" }], "Text"], Cell[BoxData[ \(f\_cl[t_] := ClosedLoopPendulumEquationsRHS[x1[t], theta[t], x2[t], alpha[t], dx1[t], dtheta[t], dx2[t], dalpha[t]]\)], "Input"], Cell["The state vector", "Text"], Cell[BoxData[ \(\(x[t_] := {x1[t], theta[t], x2[t], alpha[t], dx1[t], dtheta[t], dx2[t], dalpha[t]};\)\)], "Input"], Cell["The differential equations for the closed loop system", "Text"], Cell[BoxData[ \(deq := Thread[\(x'\)[t] == f\_cl[t]]\)], "Input"], Cell["\<\ We need to specify some initial conditions for the simulation. \ Assume that cart 1 is positioned at -1, the seesaw is horizontal, cart 2 is \ positioned at +1 and the pendulum has a small deviation of 5.7\[Degree] from \ the vertical axis. Furthermore, assume that the system is at rest at these \ positions (all time derivatives are zero).\ \>", "Text"], Cell[BoxData[ \(initeq := Thread[x[0] == {\(-1\), 0, 1, 0.1, 0, 0, 0, 0}]\)], "Input"], Cell[TextData[StyleBox["Nonlinear System Simulation", FontWeight->"Bold"]], "Text"], Cell["We simulate the system using NDSolve.", "Text"], Cell[CellGroupData[{ Cell[BoxData[{ \(\(dsolStandard = NDSolve[\ deq\ \[Union] \ initeq, {x1, theta, x2, alpha, dx1, dtheta, dx2, dalpha}, {t, 0, 10}\ ];\) // Timing\), "\n", \(\(NDSolveStandardTime = First[%];\)\)}], "Input"], Cell[BoxData[ \({0.9519999999999982`\ Second, Null}\)], "Output"] }, Open ]], Cell[TextData[StyleBox["Linear System Simulation", FontWeight->"Bold"]], "Text"], Cell[BoxData[ \(dlineq := Thread[\(x'\)[ t] == \((\[ScriptCapitalA] - \[ScriptCapitalB] . \ \[ScriptCapitalL])\) . x[t]] // Chop\)], "Input"], Cell["We simulate the linear system using NDSolve.", "Text"], Cell[BoxData[ \(\(dsollin = NDSolve[\ dlineq\ \[Union] \ initeq, {x1, theta, x2, alpha, dx1, dtheta, dx2, dalpha}, {t, 0, 8}\ ];\)\)], "Input"], Cell["\<\ Plot the result for the first 4 state variables from the nonlinear \ simulation together with the result for the linear system.\ \>", "Text"], Cell[BoxData[ \(\(Map[\n\t Plot[#, {t, 0, 8}, PlotRange \[Rule] All, DisplayFunction \[Rule] Identity] &, {Part[ Flatten[x[t] /. dsolStandard], Range[4]], \n\t\tPart[ Flatten[x[t] /. dsollin], Range[4]]} // Transpose\ ];\)\)], "Input"], Cell[CellGroupData[{ Cell[BoxData[ \(\(Show[GraphicsArray[Partition[%, 2]], Display\n\t\tFunction \[Rule] $DisplayFunction];\)\)], "Input"], Cell[GraphicsData["PostScript", "\<\ %! %%Creator: Mathematica %%AspectRatio: .61803 MathPictureStart /Mabs { Mgmatrix idtransform Mtmatrix dtransform } bind def /Mabsadd { Mabs 3 -1 roll add 3 1 roll add exch } bind def %% Graphics %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 10 scalefont setfont % Scaling calculations 0.0238095 0.47619 0.0147151 0.47619 [ [ 0 0 0 0 ] [ 1 .61803 0 0 ] ] MathScale % Start of Graphics 1 setlinecap 1 setlinejoin newpath 0 0 m 1 0 L 1 .61803 L 0 .61803 L closepath clip newpath % Start of sub-graphic p 0.0238095 0.0147151 0.477324 0.295003 MathSubStart %% Graphics %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 10 scalefont setfont % Scaling calculations 0.0238095 0.119048 0.049226 0.501404 [ [.2619 .03673 -3 -9 ] [.2619 .03673 3 0 ] [.5 .03673 -3 -9 ] [.5 .03673 3 0 ] [.7381 .03673 -3 -9 ] [.7381 .03673 3 0 ] [.97619 .03673 -3 -9 ] [.97619 .03673 3 0 ] [.01131 .14951 -18 -4.5 ] [.01131 .14951 0 4.5 ] [.01131 .24979 -18 -4.5 ] [.01131 .24979 0 4.5 ] [.01131 .35007 -18 -4.5 ] [.01131 .35007 0 4.5 ] [.01131 .45035 -18 -4.5 ] [.01131 .45035 0 4.5 ] [.01131 .55063 -6 -4.5 ] [.01131 .55063 0 4.5 ] [ 0 0 0 0 ] [ 1 .61803 0 0 ] ] MathScale % Start of Graphics 1 setlinecap 1 setlinejoin newpath 0 g .25 Mabswid [ ] 0 setdash .2619 .04923 m .2619 .05548 L s [(2)] .2619 .03673 0 1 Mshowa .5 .04923 m .5 .05548 L s [(4)] .5 .03673 0 1 Mshowa .7381 .04923 m .7381 .05548 L s [(6)] .7381 .03673 0 1 Mshowa .97619 .04923 m .97619 .05548 L s [(8)] .97619 .03673 0 1 Mshowa .125 Mabswid .08333 .04923 m .08333 .05298 L s .14286 .04923 m .14286 .05298 L s .20238 .04923 m .20238 .05298 L s .32143 .04923 m .32143 .05298 L s .38095 .04923 m .38095 .05298 L s .44048 .04923 m .44048 .05298 L s .55952 .04923 m .55952 .05298 L s .61905 .04923 m .61905 .05298 L s .67857 .04923 m .67857 .05298 L s .79762 .04923 m .79762 .05298 L s .85714 .04923 m .85714 .05298 L s .91667 .04923 m .91667 .05298 L s .25 Mabswid 0 .04923 m 1 .04923 L s .02381 .14951 m .03006 .14951 L s [(0.2)] .01131 .14951 1 0 Mshowa .02381 .24979 m .03006 .24979 L s [(0.4)] .01131 .24979 1 0 Mshowa .02381 .35007 m .03006 .35007 L s [(0.6)] .01131 .35007 1 0 Mshowa .02381 .45035 m .03006 .45035 L s [(0.8)] .01131 .45035 1 0 Mshowa .02381 .55063 m .03006 .55063 L s [(1)] .01131 .55063 1 0 Mshowa .125 Mabswid .02381 .0743 m .02756 .0743 L s .02381 .09937 m .02756 .09937 L s .02381 .12444 m .02756 .12444 L s .02381 .17458 m .02756 .17458 L s .02381 .19965 m .02756 .19965 L s .02381 .22472 m .02756 .22472 L s .02381 .27486 m .02756 .27486 L s .02381 .29993 m .02756 .29993 L s .02381 .325 m .02756 .325 L s .02381 .37514 m .02756 .37514 L s .02381 .40021 m .02756 .40021 L s .02381 .42528 m .02756 .42528 L s .02381 .47542 m .02756 .47542 L s .02381 .50049 m .02756 .50049 L s .02381 .52556 m .02756 .52556 L s .02381 .02416 m .02756 .02416 L s .02381 .5757 m .02756 .5757 L s .02381 .60077 m .02756 .60077 L s .25 Mabswid .02381 0 m .02381 .61803 L s 0 0 1 r .5 Mabswid .02381 .55063 m .02499 .55088 L .02605 .55149 L .02729 .5526 L .02846 .554 L .03279 .56132 L .04262 .58242 L .04723 .59113 L .04976 .59507 L .05212 .59812 L .05468 .60065 L .05603 .60166 L .05673 .60208 L .05749 .60247 L .05818 .60276 L .05882 .60297 L .06008 .60322 L .06122 .60327 L .06244 .60313 L .0631 .60297 L .06383 .60272 L .06459 .6024 L .06529 .60203 L .06791 .60008 L .0694 .59858 L .07076 .59697 L .07382 .59254 L .07933 .58192 L .08454 .56905 L .10458 .50112 L .14291 .33763 L .16229 .25674 L .18369 .17746 L .20418 .11523 L .22296 .07161 L .23238 .05469 L .2423 .0404 L .25227 .02951 L .25791 .0248 L .26316 .0213 L .26821 .0187 L .27087 .01761 L .27368 .01666 L .27615 .016 L .27885 .01543 L .28004 .01524 L .28131 .01507 L .28243 .01494 L .28362 .01484 L .28486 .01477 L Mistroke .286 .01473 L .2867 .01472 L .28737 .01472 L .2886 .01473 L .28979 .01478 L .29087 .01484 L .29207 .01493 L .29333 .01505 L .29552 .01533 L .29756 .01565 L .30221 .0166 L .31268 .01965 L .3226 .0233 L .34117 .0308 L .35942 .03739 L .36981 .04031 L .37489 .04147 L .37955 .04237 L .38411 .04311 L .38909 .04375 L .3941 .04423 L .39683 .04442 L .39936 .04456 L .40068 .04462 L .40211 .04467 L .40345 .04471 L .40469 .04474 L .40581 .04476 L .40705 .04477 L .40833 .04477 L .40953 .04477 L .4102 .04477 L .41094 .04476 L .41163 .04475 L .41227 .04474 L .41477 .04469 L .41606 .04465 L .41749 .0446 L .42038 .04448 L .43046 .04389 L .43971 .04322 L .4505 .04241 L .45577 .04205 L .46055 .04177 L .46493 .04155 L .46969 .04136 L .4723 .04129 L .47345 .04126 L .47471 .04124 L .47582 .04122 L Mistroke .47701 .0412 L .47827 .04119 L .47945 .04118 L .48012 .04118 L .48083 .04118 L .4821 .04118 L .48289 .04119 L .48362 .04119 L .485 .04121 L .48631 .04123 L .48753 .04126 L .49026 .04133 L .49255 .04141 L .49507 .04151 L .50015 .04179 L .51036 .04257 L .51967 .04351 L .54059 .04615 L .5613 .04893 L .57041 .05004 L .58046 .05109 L .59005 .05189 L .59905 .05244 L .60402 .05266 L .60856 .05281 L .61095 .05286 L .61355 .05291 L .61487 .05292 L .61559 .05293 L .61627 .05293 L .61691 .05294 L .6176 .05294 L .6188 .05295 L .62004 .05295 L .62117 .05294 L .62247 .05294 L .6237 .05293 L .62484 .05291 L .62589 .0529 L .62828 .05286 L .63093 .0528 L .63333 .05274 L .6387 .05256 L .64954 .05207 L .65974 .05148 L .67817 .05031 L .68863 .04967 L .69837 .04913 L .70883 .04864 L .71836 .04831 L Mistroke .72359 .04818 L .72854 .04808 L .73126 .04804 L .73377 .04801 L .73652 .04798 L .73791 .04797 L .73865 .04797 L .73944 .04797 L .74073 .04796 L .74192 .04796 L .74266 .04796 L .74335 .04796 L .74463 .04796 L .74587 .04797 L .74701 .04797 L .74825 .04798 L .74957 .04799 L .75186 .048 L .75399 .04803 L .75884 .04809 L .76411 .04818 L .76892 .04828 L .77972 .04855 L .8004 .04913 L .8095 .04937 L .81955 .04961 L .82913 .04979 L .83351 .04986 L .83813 .04991 L .84049 .04994 L .84308 .04996 L .84546 .04998 L .84762 .04999 L .85019 .05 L .8516 .05 L .85225 .05001 L .85293 .05001 L .85416 .05001 L .8553 .05001 L .85652 .05001 L .85722 .05001 L .85787 .05001 L .85912 .05001 L .85982 .05001 L .86045 .05001 L .86284 .05 L .86419 .04999 L .86564 .04999 L .86827 .04997 L .87341 .04993 L Mistroke .87815 .04989 L .89668 .04964 L .91713 .04931 L .92711 .04915 L .93621 .04903 L .945 .04893 L .95456 .04885 L .95981 .04882 L .96212 .04881 L .96466 .0488 L .96705 .04879 L .9693 .04879 L .97053 .04878 L .97167 .04878 L .97291 .04878 L .97422 .04878 L .97524 .04878 L .97619 .04878 L Mfstroke 1 0 0 r .02381 .55063 m .02499 .55088 L .02605 .5515 L .02729 .55262 L .02846 .55402 L .03279 .56128 L .04262 .58191 L .04723 .59046 L .05212 .59745 L .05468 .60008 L .05613 .60124 L .05749 .6021 L .05874 .60269 L .05988 .60306 L .06119 .60329 L .0624