Dear all,

I have the following code to extract the square root of a symmetric 
second-order tensor.

from sympy import symbols, Matrix, mpmathimport numpy as np

F11, F12, F13, F21, F22, F23, F31, F32, F33 = symbols('F11, F12, F13, F21, F22, 
F23, F31, F32, F33', real=True)
F = np.array([[F11, F12, F13], [F21, F22, F23], [F31, F32, F33]])
B = F.dot(F.T)
mpmath.sqrtm(Matrix(B))

However, it gave me the error:

TypeError                                 Traceback (most recent call 
last)<ipython-input-14-439fed475a57> in <module>()
      5 F = np.array([[F11, F12, F13], [F21, F22, F23], [F31, F32, F33]])
      6 B = F.dot(F.T)----> 7 mpmath.sqrtm(Matrix(B))

X:\WinPython3\python-3.4.2.amd64\lib\site-packages\sympy\mpmath\matrices\calculus.py
 in sqrtm(ctx, A, _may_rotate)
    308 
    309         """
--> 310         A = ctx.matrix(A)
    311         # Trivial
    312         if A*0 == A:

X:\WinPython3\python-3.4.2.amd64\lib\site-packages\sympy\mpmath\matrices\matrices.py
 in __init__(self, *args, **kwargs)
    326                     A[i,j] = convert(A[i,j])
    327         elif hasattr(args[0], 'tolist'):
--> 328             A = self.ctx.matrix(args[0].tolist())
    329             self.__data = A._matrix__data
    330             self.__rows = A._matrix__rows

X:\WinPython3\python-3.4.2.amd64\lib\site-packages\sympy\mpmath\matrices\matrices.py
 in __init__(self, *args, **kwargs)
    299                 for i, row in enumerate(A):
    300                     for j, a in enumerate(row):
--> 301                         self[i, j] = convert(a)
    302             else:
    303                 # interpret list as row vector

X:\WinPython3\python-3.4.2.amd64\lib\site-packages\sympy\mpmath\ctx_mp_python.py
 in convert(ctx, x, strings)
    660         if hasattr(x, '_mpmath_'):
    661             return ctx.convert(x._mpmath_(prec, rounding))
--> 662         return ctx._convert_fallback(x, strings)
    663 
    664     def isnan(ctx, x):

X:\WinPython3\python-3.4.2.amd64\lib\site-packages\sympy\mpmath\ctx_mp.py in 
_convert_fallback(ctx, x, strings)
    612             else:
    613                 raise ValueError("can only create mpf from zero-width 
interval")
--> 614         raise TypeError("cannot create mpf from " + repr(x))
    615 
    616     def mpmathify(ctx, *args, **kwargs):

TypeError: cannot create mpf from F11**2 + F12**2 + F13**2

May I ask why that is happening? Is this a limitation of sympy or that I am 
doing something wrong?

Thank you!

Shawn

-- 
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+unsubscr...@googlegroups.com.
To post to this group, send email to sympy@googlegroups.com.
Visit this group at http://groups.google.com/group/sympy.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sympy/228b5b46-c2fe-4d90-83f6-4dd96927eddd%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to