On Tue, Oct 8, 2013 at 11:48 AM, Ondřej Čertík <[email protected]> wrote:
> On Tue, Oct 8, 2013 at 10:02 AM, Taylan Şengül <[email protected]> wrote:
>> Hi all,
>>
>> I am quite new to sympy.
>>
>> When I type the following
>>
>> a = symbols('a')
>> m = Matrix( [ [a, 0], [0, 1] ] )
>> m.eigenvals()
>>
>> I expect the answer to
>> {a: 1,  1: 1}
>>
>> But I get
>>
>> {a/2 + sqrt((a - 1)**2)/2 + 1/2: 1, a/2 - sqrt((a - 1)**2)/2 + 1/2: 1}
>>
>> I think first the characteristic polynomial is computed and then roots are
>> found. This produces the mess. Wouldn't it be better to try to factor the
>> characteristic polynomial first and then find roots?
>
>
> SymPy assumes that "a" is complex, so no simplifications can be done, isn't 
> it?
> But you can tell SymPy that "a" is real, then some simplifications can be 
> done:
>
> In [1]: a = symbols('a')
>
> In [2]: m = Matrix( [ [a, 0], [0, 1] ] )
>
> In [3]: m.eigenvals()
> Out[3]:
> ⎧       __________                __________       ⎫
> ⎪      ╱        2                ╱        2        ⎪
> ⎨a   ╲╱  (a - 1)     1     a   ╲╱  (a - 1)     1   ⎬
> ⎪─ - ───────────── + ─: 1, ─ + ───────────── + ─: 1⎪
> ⎩2         2         2     2         2         2   ⎭
>
> In [4]: a = Symbol("a", real=True)
>
> In [5]: m = Matrix( [ [a, 0], [0, 1] ] )
>
> In [6]: m.eigenvals()
> Out[6]:
> ⎧a   │a - 1│   1     a   │a - 1│   1   ⎫
> ⎨─ - ─────── + ─: 1, ─ + ─────── + ─: 1⎬
> ⎩2      2      2     2      2      2   ⎭


Ah, I see your point --- because the eigenvalue are symmetric, you can
actually simplify this to "a" and 1.

Ondrej

-- 
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.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to