Hi Tim,

Thank you for your response!

And thanks for letting me know that symbolic square root matrix routine was 
not implemented. 

I will try to do the following:

1) Get eigenvectors first;
2) Take square root of the eigenvalues;
3) Re-construct the square root matrix from the original eigenvectors and 
the sqrt of eigenvalues.

Thanks again!

Shawn

On Monday, November 24, 2014 2:17:08 PM UTC-5, Tim Lahey wrote:
>
> 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] <javascript:>. 
> > To post to this group, send email to [email protected] 
> <javascript:>. 
> > 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/79209aad-242d-4e63-9d65-b8c2d581aaf8%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to