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[9]:= u@Reals
>>
>> Out[9]= 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[10]:= Reduce[{Element[x, Reals]&& x != 0}, x]
>>
>> Out[10]= 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[9]:= MatrixRank[A1-val IdentityMatrix[8]]
Out[9]= 7
and
In[10]:= Solve[(A1-val IdentityMatrix[8]).Array[v,8]==0,Array[v,8]]
Solve::vars: During evaluation of In[10]:= Solve::svars: Equations may
not give solutions for all "solve" variables. >>
Out[10]= {{v[1]->0,v[2]->0,v[4]->-((Abs[By]
v[3])/Abs[Bz]),v[5]->0,v[6]->0,v[7]->-2 Sqrt[\[Pi]] Sqrt[rho]
v[3],v[8]->(2 Sqrt[\[Pi]] Sqrt[rho] Abs[By] v[3])/Abs[Bz]}}
to get the same vector as via Eigensystem, add v[8]==1 to the equations:
In[11]:= Solve[(A1-val IdentityMatrix[8]).Array[v,8]==0&&v[8]==1,Array[v,8]]
Out[11]= {{v[1]->0,v[2]->0,v[3]->Abs[Bz]/(2 Sqrt[\[Pi]] Sqrt[rho]
Abs[By]),v[4]->-(1/(2 Sqrt[\[Pi]]
Sqrt[rho])),v[5]->0,v[6]->0,v[7]->-(Abs[Bz]/Abs[By]),v[8]->1}}
hth,
Peter