Chris,

Thanks for responding! I was actually doing the square-root of the matrix, 
rather than the element-wise. But thanks still!

-Shawn

On Tuesday, November 25, 2014 3:33:43 PM UTC-5, Chris Smith wrote:
>
> To take the sqrt of each element in B, use B.applyfunc(sqrt).
>
> On Monday, November 24, 2014 5:30:48 PM UTC-6, Yuxiang Wang wrote:
>>
>> 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 
>>> <[email protected]> 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 [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/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 [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/60898d55-0c1b-4122-aff8-510eda2117d3%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to