<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://invarians.org/index.php?action=history&amp;feed=atom&amp;title=The_Principia_Machina%2FTools%2FSymPy</id>
	<title>The Principia Machina/Tools/SymPy - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://invarians.org/index.php?action=history&amp;feed=atom&amp;title=The_Principia_Machina%2FTools%2FSymPy"/>
	<link rel="alternate" type="text/html" href="https://invarians.org/index.php?title=The_Principia_Machina/Tools/SymPy&amp;action=history"/>
	<updated>2026-10-21T06:33:23Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.46.2</generator>
	<entry>
		<id>https://invarians.org/index.php?title=The_Principia_Machina/Tools/SymPy&amp;diff=6749&amp;oldid=prev</id>
		<title>PMA Publisher: Published from the Principia Machina source</title>
		<link rel="alternate" type="text/html" href="https://invarians.org/index.php?title=The_Principia_Machina/Tools/SymPy&amp;diff=6749&amp;oldid=prev"/>
		<updated>2026-10-15T19:34:15Z</updated>

		<summary type="html">&lt;p&gt;Published from the Principia Machina source&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw-interface=&quot;&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 19:34, 15 October 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{DISPLAYTITLE:SymPy}}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;SymPy: Symbolic Mechanics, Euler-Lagrange Equations and Units in Python&amp;#039;&amp;#039;&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;SymPy: Symbolic Mechanics, Euler-Lagrange Equations and Units in Python&amp;#039;&amp;#039;&amp;#039;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:Principia Machina]] [[Category:Tools]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:Principia Machina]] [[Category:Tools]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l33&quot;&gt;Line 33:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 34:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;#039;&amp;#039;&amp;#039;[[The Principia Machina/Research Toolkit/Bibliography#SYMPYPYPI|SYMPYPYPI]]&amp;#039;&amp;#039;&amp;#039; &amp;amp;ndash; SymPy Development Team (2025). sympy 1.14.0. PyPI. [https://pypi.org/project/sympy/ pypi.org/project/sympy/].&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;#039;&amp;#039;&amp;#039;[[The Principia Machina/Research Toolkit/Bibliography#SYMPYPYPI|SYMPYPYPI]]&amp;#039;&amp;#039;&amp;#039; &amp;amp;ndash; SymPy Development Team (2025). sympy 1.14.0. PyPI. [https://pypi.org/project/sympy/ pypi.org/project/sympy/].&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;#039;&amp;#039;&amp;#039;[[The Principia Machina/Research Toolkit/Bibliography#SYMPYMECH|SYMPYMECH]]&amp;#039;&amp;#039;&amp;#039; &amp;amp;ndash; SymPy Development Team. Kane&amp;#039;s Method &amp;amp;amp; Lagrange&amp;#039;s Method (docs). [https://docs.sympy.org/latest/modules/physics/mechanics/api/kane_lagrange.html docs.sympy.org/latest/modules/physics/mechanics/api/kane_lag...].&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* &amp;#039;&amp;#039;&amp;#039;[[The Principia Machina/Research Toolkit/Bibliography#SYMPYMECH|SYMPYMECH]]&amp;#039;&amp;#039;&amp;#039; &amp;amp;ndash; SymPy Development Team. Kane&amp;#039;s Method &amp;amp;amp; Lagrange&amp;#039;s Method (docs). [https://docs.sympy.org/latest/modules/physics/mechanics/api/kane_lagrange.html docs.sympy.org/latest/modules/physics/mechanics/api/kane_lag...].&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key pma_cutover_20261020t051351z-soft_:diff:1.41:old-5806:rev-6749:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>PMA Publisher</name></author>
	</entry>
	<entry>
		<id>https://invarians.org/index.php?title=The_Principia_Machina/Tools/SymPy&amp;diff=5806&amp;oldid=prev</id>
		<title>BFP Rauch: 1 revision imported</title>
		<link rel="alternate" type="text/html" href="https://invarians.org/index.php?title=The_Principia_Machina/Tools/SymPy&amp;diff=5806&amp;oldid=prev"/>
		<updated>2026-10-06T03:41:02Z</updated>

		<summary type="html">&lt;p&gt;1 revision imported&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw-interface=&quot;&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 03:41, 6 October 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;en&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>BFP Rauch</name></author>
	</entry>
	<entry>
		<id>https://invarians.org/index.php?title=The_Principia_Machina/Tools/SymPy&amp;diff=5805&amp;oldid=prev</id>
		<title>DeltaS Zero: Physics tool added 2026-10-06: SymPy; scores by the research pass, with references (tpm_toolkit 0.1.0)</title>
		<link rel="alternate" type="text/html" href="https://invarians.org/index.php?title=The_Principia_Machina/Tools/SymPy&amp;diff=5805&amp;oldid=prev"/>
		<updated>2026-10-06T03:40:47Z</updated>

		<summary type="html">&lt;p&gt;Physics tool added 2026-10-06: SymPy; scores by the research pass, with references (tpm_toolkit 0.1.0)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;SymPy: Symbolic Mechanics, Euler-Lagrange Equations and Units in Python&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
[[Category:Principia Machina]] [[Category:Tools]]&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Added to the survey on 2026-10-06 by the [[The Principia Machina/Research Toolkit|Research Toolkit]]&amp;#039;s research pass. The scores below are that pass&amp;#039;s assessment from the evidence cited under References, on the survey&amp;#039;s four axes and scale; they are not the original survey&amp;#039;s (2026-09-26), and no rule of the Principia Machina reads them. See [[The Principia Machina/Tools#The additions of 2026-10-06|the additions]] on the front page.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
== Overview &amp;amp; Architectural Fit ==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;SymPy&amp;#039;&amp;#039;&amp;#039; is a computer algebra library written in pure Python. Its mechanics module, &amp;lt;code&amp;gt;sympy.physics.mechanics&amp;lt;/code&amp;gt;, derives equations of motion by Lagrange&amp;#039;s and Kane&amp;#039;s methods; &amp;lt;code&amp;gt;sympy.calculus.euler&amp;lt;/code&amp;gt; derives Euler-Lagrange equations for functions of several variables; &amp;lt;code&amp;gt;sympy.physics.units&amp;lt;/code&amp;gt; carries units through expressions and converts between systems. It is the free reference for the &amp;#039;&amp;#039;derive by machine&amp;#039;&amp;#039; step: write the Lagrangian once, have the equations derived, and compare them line by line with a hand derivation.&lt;br /&gt;
&lt;br /&gt;
== Mathematical Evaluation for TPM ==&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Lagrangian / Action (8/10):&amp;#039;&amp;#039;&amp;#039; &amp;lt;code&amp;gt;LagrangesMethod&amp;lt;/code&amp;gt; takes a Lagrangian, generalized coordinates, holonomic and nonholonomic constraints and non-conservative forces, and returns the system in mass-matrix and forcing form, &amp;lt;math&amp;gt;M(q,t)\,\ddot{q} = f(q,\dot{q},t)&amp;lt;/math&amp;gt;, from &amp;lt;math&amp;gt;\frac{d}{dt}\frac{\partial L}{\partial \dot{q}_i} - \frac{\partial L}{\partial q_i} = Q_i&amp;lt;/math&amp;gt;. No packaged Noether-current routine exists.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Field / PDE (5/10):&amp;#039;&amp;#039;&amp;#039; Field Lagrangian densities can be varied symbolically, but SymPy has no production numerical solver for partial differential equations.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relativity (4/10):&amp;#039;&amp;#039;&amp;#039; Generic tensor and differential-geometry modules exist; they are much weaker than xAct or SageManifolds for curvature work (not re-tested in this pass).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Quantum / Data (3.5/10):&amp;#039;&amp;#039;&amp;#039; Operator algebra exists in &amp;lt;code&amp;gt;sympy.physics.quantum&amp;lt;/code&amp;gt; (not re-checked); nothing learns from data.&lt;br /&gt;
&lt;br /&gt;
== Integration Pipeline ==&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Write the Lagrangian&amp;#039;&amp;#039;&amp;#039; in SymPy&amp;#039;s symbols, with each coordinate a function of time.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Derive&amp;#039;&amp;#039;&amp;#039; with &amp;lt;code&amp;gt;LagrangesMethod&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;euler_equations&amp;lt;/code&amp;gt;.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Check&amp;#039;&amp;#039;&amp;#039; the result&amp;#039;s dimensions with &amp;lt;code&amp;gt;physics.units&amp;lt;/code&amp;gt; and its limits by substitution.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Build conserved quantities by hand&amp;#039;&amp;#039;&amp;#039; from &amp;lt;math&amp;gt;p_i = \partial L / \partial \dot{q}_i&amp;lt;/math&amp;gt; and check that their time derivatives vanish on the equations of motion.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Export&amp;#039;&amp;#039;&amp;#039; the equations as code for SciPy or [[The Principia Machina/Tools/Dedalus|Dedalus]] to solve.&lt;br /&gt;
&lt;br /&gt;
== Status, Licence and Limits ==&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Status:&amp;#039;&amp;#039;&amp;#039; Active. Latest stable release 1.14.0, 27 April 2025; the development documentation shows 1.15.0.dev, with no 1.15 release found.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Licence:&amp;#039;&amp;#039;&amp;#039; New BSD.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Home:&amp;#039;&amp;#039;&amp;#039; https://www.sympy.org&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Limits:&amp;#039;&amp;#039;&amp;#039; Expression swell and simplification cost grow quickly for coupled fields. The mechanics module targets multibody systems of ordinary differential equations, not covariant field theory. Noether currents, boundary terms and gauge redundancy are all manual.&lt;br /&gt;
&lt;br /&gt;
== On the Principia Machina ==&lt;br /&gt;
A tool runs only where the sponsor installed and bound it, and what it returns is untrusted input, vetted before use; its numbers are never values of the site&amp;#039;s calculator, TPC. An equation it derives is transcribed into the kernel&amp;#039;s form grammar before anything checks it, and lands as a RESULT of regime L with EQUATION and ROLE. See [[The Principia Machina/Agent/Tools|Agent/Tools]] and [[The Principia Machina/Tools/Operator&amp;#039;s guide|the operator&amp;#039;s guide]].&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;[[The Principia Machina/Research Toolkit/Bibliography#SYMPY2017|SYMPY2017]]&amp;#039;&amp;#039;&amp;#039; &amp;amp;ndash; Meurer A., Smith C.P., Paprocki M., Čertík O., Kirpichev S.B., et al. (29 authors) (2017). SymPy: symbolic computing in Python. PeerJ Computer Science 3:e103. [https://doi.org/10.7717/peerj-cs.103 doi:10.7717/peerj-cs.103].&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;[[The Principia Machina/Research Toolkit/Bibliography#SYMPYPYPI|SYMPYPYPI]]&amp;#039;&amp;#039;&amp;#039; &amp;amp;ndash; SymPy Development Team (2025). sympy 1.14.0. PyPI. [https://pypi.org/project/sympy/ pypi.org/project/sympy/].&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;[[The Principia Machina/Research Toolkit/Bibliography#SYMPYMECH|SYMPYMECH]]&amp;#039;&amp;#039;&amp;#039; &amp;amp;ndash; SymPy Development Team. Kane&amp;#039;s Method &amp;amp;amp; Lagrange&amp;#039;s Method (docs). [https://docs.sympy.org/latest/modules/physics/mechanics/api/kane_lagrange.html docs.sympy.org/latest/modules/physics/mechanics/api/kane_lag...].&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>DeltaS Zero</name></author>
	</entry>
</feed>