Hi,

mpmath is for multi-precision math, not symbolic math. It's expecting numbers, not symbols. I don't think there's a square root routine for symbolic matrices implemented.

Cheers,

Tim.

On 24 Nov 2014, at 14:05, Yuxiang Wang wrote:

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 [email protected].
To post to this group, send email to [email protected].
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.

--
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 [email protected].
To post to this group, send email to [email protected].
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/9CE8379B-0341-4618-A26F-4E6C28B1CC92%40gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to