Sympy.physics.mechanics / dynamicsymbols

63 views
Skip to first unread message

Peter Stahlecker

unread,
Feb 6, 2022, 1:39:20 AM2/6/22
to sympy
My question is more for my ‚general education‘ in sympy.

I write this little program

from sympy.physics.mechanics import *
import sympy as sm
a = dynamicsymbols(‚a‘)
b = sm.symbols(‚b‘)

print(‚type of a:‘,  type(a))
print(‚type of b:‘, type(b))

I get this result:

type of a:  a
type of b: class sympy.core.symbols.Symbols

Is seems that a does not have a type. How can that be? I thought in python ‚everything‘ has a type.

Thanks!
Any explanation is highly appreciated! 

 
  

Jason Moore

unread,
Feb 6, 2022, 1:49:22 AM2/6/22
to sympy
Peter,

All `dynamicsymbols` is, is:

f = Function('f')
t = symbols('t')
f_of_t = f(t)

The last line `f(t)` is generating a new class of type f, instead of using a predefined class (look up metaclasses). So the user, typically not aware of this element in Python, is confused about what they are working with in the last line. It is just the way SymPy Function works. There are open issues about trying to change it to something more sensible for the user to understand.

Jason

--
You received this message because you are subscribed to the Google Groups "sympy" group.
To unsubscribe from this group and stop receiving emails from it, send an email to sympy+un...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/sympy/5db2836e-44a8-428f-8b82-c56b2b2b5b20n%40googlegroups.com.

Peter Stahlecker

unread,
Feb 6, 2022, 2:20:03 AM2/6/22
to sy...@googlegroups.com
Dear Jason,

Thanks a lot for your explanation! Clear!
I checked on metaclasses, but I must admit I mostly understood, that a simple user like me should not mess with them!  :-))

Peter

--
Best regards,

Peter Stahlecker

Peter Stahlecker

unread,
Feb 14, 2022, 12:04:31 PM2/14/22
to sy...@googlegroups.com
Dear Jason,

Just read you latest addition about vectors and reference frames.
Small question:
In order to rotate a frame relative to another one, you use these terms
A.orient_axis(N, ..)
A.orient_body_fixed(N, …)

I assume, these are the new versions for
A.orientnew(N, ‚Axis‘, …)
A.orientnew(N, ‚Body, …)

You might recall, that I ‚empirically‘ found that the Body version created much larger equations of motion compared to using ‚intermediate ‚Axis‘ versions.

Is it better to use orient_body_fixed, to avoid this issue of larger equations of motion?

Thanks & take care!
Peter

Peter Stahlecker

unread,
Feb 14, 2022, 12:40:59 PM2/14/22
to sy...@googlegroups.com
Dear Jason,

As to the speed of the new terms, I simply tried it, using the equations of motion of a one body pendulum.
There is no difference to the older terms:

with the body version the the rhs has 863, 824 operations.
with the axis version, 2 intermediate frames, the rhs has 43,722 operations.

The operations count was exactly the same with older and newer terms.

Take care, Peter 

Alan Bromborsky

unread,
Feb 14, 2022, 1:26:46 PM2/14/22
to sy...@googlegroups.com

For the people developing and maintaining the mechanics modules, you may want to look at the following book which treats mechanics problems with some new methods.  Describing rotations is greatly simplified -

https://link.springer.com/book/10.1007/0-306-47122-1

Jason Moore

unread,
Feb 14, 2022, 1:28:22 PM2/14/22
to sympy
Peter,

If orient_body_fixed produces longer equations of motion than chaining orient_axis (or the older orient() and orientnew()), then we should figure out what the problem is with orient_body_fixed.  orient_body_fixed should produce shorter equations of motion because the angular velocities are supposed to be in the simplest form.

Jason

Jason Moore

unread,
Feb 14, 2022, 1:33:40 PM2/14/22
to sympy
Alan,

Thanks for the tip. There are lots of mechanics notations and methods, but I'm not sure I'd use many of them for teaching mechanics because the more advanced math principles often hide the forest for the trees for engineering students. These newer methods based on Geometric and Clifford algebra are good for computational efficiency and succinctness of notation but that's more useful for people that already understand the principles of mechanics.

Jason

Jason Moore

unread,
Feb 14, 2022, 1:39:09 PM2/14/22
to sympy

Peter Stahlecker

unread,
Feb 14, 2022, 2:27:42 PM2/14/22
to sy...@googlegroups.com
Dear Alan,

Thanks a lot for the hint!
I had a look at the book in Amazon, what little they let me see.
I must admit that books not written in the format
- some motivation
- definition
- theorem
- proof
are difficult for me to read. I get lost in the narrative.
Take care! Peter

Reply all
Reply to author
Forward
0 new messages