Hi Aaron,

Thank you for the response!

I tried to use numpy.ndarray because I got other orders of tensors, so I 
wanted to be consistent. But it seems that Matrix object can be 
higher-order too, so I'll try to use them. Thanks for the tip!

Shawn

On Monday, November 24, 2014 3:22:34 PM UTC-5, Aaron Meurer wrote:
>
> It seems sqrt(Matrix) (where sqrt is sympy.sqrt) is unevaluated, but 
> if you do Matrix(B)**(S(1)/2) it tries to evaluate it (but it hangs). 
>
> You shouldn't use NumPy if you are dealing with symbolic matrices. 
> There is no advantage to using NumPy at that point, vs. sympy.Matrix. 
>
> Aaron Meurer 
>
> On Mon, Nov 24, 2014 at 12:23 PM, Yuxiang Wang 
> <wangyux...@gmail.com <javascript:>> wrote: 
> > 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 sympy+un...@googlegroups.com. 
> >> > To post to this group, send email to sy...@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. 
> > 
> > -- 
> > 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 <javascript:>. 
> > To post to this group, send email to sy...@googlegroups.com 
> <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/79209aad-242d-4e63-9d65-b8c2d581aaf8%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 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/c6d01f5a-7bdb-4568-8e7d-3eaa32a71e2d%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to