I encountered a few issues with SymPy today. I'll explain what I found and what I plan to do about it.
I have an expression (1158485859) that, in Latex, is
\frac{-\hbar^2}{2m} \nabla^2 = {\cal H}
The \nabla^2 is represented in SymPy as Laplacian(), though an argument is required for the operator.
My solution: leave the SymPy representation as Pow(Symbol('nabla'), Integer(2))
Also on the topic of vectors, I encountered the expression
\vec{p} \cdot \vec{F}(\vec{r}, t) = a
In order to convert that to SymPy, I'd need to specify a basis for `\vec{p}` (e.g., `from sympy.vector import CoordSys3D`). For example,
>>> N = CoordSys3D('N')
>>> p = Symbol('p_x')*N.i + Symbol('p_y')*N.j + Symbol('p_z')*N.k
>>> F = Symbol('F_x')*N.i + Symbol('F_y')*N.j + Symbol('F_z')*N.k
>>> p.dot(F)
F_x*p_x + F_y*p_y + F_z*p_z
However, that doesn't seem to extend to functions:
>>> p.dot(Function(F)(Symbol('r'), Symbol('t')))
Traceback (most recent call last):
...
TypeError: expecting string or Symbol for name
My solution: leave the SymPy representation as incorrect, using "multiplication" instead of "dot"
No comments:
Post a Comment