       Re: Eigenvalues, eigenvectors, matrix ranks, determinants, and all that stuff

• To: mathgroup at smc.vnet.net
• Subject: [mg125606] Re: Eigenvalues, eigenvectors, matrix ranks, determinants, and all that stuff
• From: Peter Pein <petsie at dordos.net>
• Date: Wed, 21 Mar 2012 05:46:09 -0500 (EST)
• Delivered-to: l-mathgroup@mail-archive0.wolfram.com

Am 19.03.2012 10:56, schrieb Konstantin:
> On Mar 16, 4:33 am, Bill Rowe<readn... at sbcglobal.net>  wrote:
>> On 3/15/12 at 12:31 AM, kparchev... at gmail.com (Konstantin) wrote:
>>
>> <snip>
>>
>>> Very often algebraic manipulations in Mathematica do not produce
>>> expected result just because we and the program have different
>>> defaul assumptions about type of variables. So I tried to specify
>>> EVERYTHING about my variables explicitly ( @ means "belongs to", !=
>>> means "not equal" )
>>> \$Assumptions = u@Reals&&  u!=0&&  Bx@Reals&&  By@Reals&&  Bz@Reals
>>> &&  Bx!=0&&  By!=0&&  Bz!=0&&  rho>0&&  cs>0;
>>
>> Unless you have re-defined @ (an ill advised thing to do) you
>> are not repeat not free to use it to do something other than the
>> built-in definition. That is Mathematica interprets u@Reals as
>> the function u with argument Reals, i.e:
>>
>> In:= u@Reals
>>
>> Out= u(\[DoubleStruckCapitalR])
>>
>> If you want to declare u to be a real variable use the function
>> Element that performs exactly this function That is the statement
>>
>> {u, Bx, By, Bz} \[Element] Reals
>>
>> defines the list of variables all to be real.
>>
>> And note,
>>
>> In:= Reduce[{Element[x, Reals]&&  x != 0}, x]
>>
>> Out= x<0\[Or]x>0
>>
>> That is stating x != 0 is sufficient to declare x to be real
>> since the comparison of x to 0 is not valid unless x is real
>
> I do not use symbol @ in my code. I use standard symbol "belongs to"
> to specify, that u is real. There is no equivalent for this symbol in
> ASCII table. And I mentioned in brackets, that in my notation @ means
> "belongs to". So, syntax is fine. What can you say about the main
> point? Why does Mathematica calculates rank of matrix incorrectly and
> how can I calculate my eigenvectors other than do simplifications
> "manually"?
>

As you want Abs[Bxyz], put it into the matrix:

A1 =
{{u, rho, 0, 0, 0, 0, 0, 0},
{0, u, 0, 0, rho^(-1), 0, Abs[By]/(4*Pi*rho), Abs[Bz]/(4*Pi*rho)},
{0, 0, u, 0, 0, 0, -Abs[Bx]/(4*Pi*rho), 0},
{0, 0, 0, u, 0, 0, 0, -Abs[Bx]/(4*Pi*rho)},
{0, cs^2*rho, 0, 0, u, 0, 0, 0},
{0, 0, 0, 0, 0, u, 0, 0},
{0, Abs[By], -Abs[Bx], 0, 0, 0, u, 0},
{0, Abs[Bz], 0, -Abs[Bx], 0, 0, 0, u}};

or use oldA1 /.{pi->Pi,(b:Bx|By|Bz):>Abs[b]}

the fourth eigenvalue/vector seems to be what you want:

{val,vec}=Simplify[Eigensystem@A1][[All,4]]
gives:
{u+Abs[Bx]/(2 Sqrt[\[Pi]] Sqrt[rho]),
{0,0,Abs[Bz]/(2 Sqrt[\[Pi]] Sqrt[rho] Abs[By]),
-(1/(2 Sqrt[\[Pi]] Sqrt[rho])),0,0,-(Abs[Bz]/Abs[By]),1}
}

check:
A1.vec-val vec//Simplify
{0,0,0,0,0,0,0,0}

further I get:
In:= MatrixRank[A1-val IdentityMatrix]
Out= 7

and
In:= Solve[(A1-val IdentityMatrix).Array[v,8]==0,Array[v,8]]
Solve::vars: During evaluation of In:= Solve::svars: Equations may
not give solutions for all "solve" variables. >>
Out= {{v->0,v->0,v->-((Abs[By]
v)/Abs[Bz]),v->0,v->0,v->-2 Sqrt[\[Pi]] Sqrt[rho]
v,v->(2 Sqrt[\[Pi]] Sqrt[rho] Abs[By] v)/Abs[Bz]}}

to get the same vector as via Eigensystem, add v==1 to the equations:

In:= Solve[(A1-val IdentityMatrix).Array[v,8]==0&&v==1,Array[v,8]]
Out= {{v->0,v->0,v->Abs[Bz]/(2 Sqrt[\[Pi]] Sqrt[rho]
Abs[By]),v->-(1/(2 Sqrt[\[Pi]]
Sqrt[rho])),v->0,v->0,v->-(Abs[Bz]/Abs[By]),v->1}}

hth,
Peter



• Prev by Date: Re: Compiling Runge-kutta
• Next by Date: Re: Different Color in ToString
• Previous by thread: Re: Eigenvalues, eigenvectors, matrix ranks, determinants, and all that stuff
• Next by thread: yg = \frac{{d(yv)}}{{dt}}, how to solve this differential equation.