Items tagged with eigenvalues eigenvalues Tagged Items Feed

Hello! 

In an assigment I have been asked to use the Eigenvectors command to find the eigenvalues and eigenvectors of a particular matrix. 

As highlighted in the following image, my questions are:

1. What is the meaning of the suffix "+0.I"? Does it mean that there are further decimal digits which are not displayed?

2. How do the first and third eigenvalues, which are equal, result in different eigenvectors? As per my understanding, equal eigenvalues should have equal corresponding eigenvectors. Please help.

hi.how i can determind  eignvalue of matrix in the form parametric?

thanks1.mw

T := Matrix(5, 5, {(1, 1) = -b*beta*k/(c*u)-d, (1, 2) = 0, (1, 3) = -beta*lambda*c*u/(b*beta*k+c*d*u), (1, 4) = 0, (1, 5) = 0, (2, 1) = b*beta*k/(c*u), (2, 2) = -s*(lambda*c*k*beta/(b*beta*k+c*d*u)-a)/P-a, (2, 3) = beta*lambda*c*u/(b*beta*k+c*d*u), (2, 4) = -s*b/c, (2, 5) = r*(s-p)/s, (3, 1) = 0, (3, 2) = k, (3, 3) = -u, (3, 4) = 0, (3, 5) = 0, (4, 1) = 0, (4, 2) = -s*(lambda*c*k*beta/(b*beta*k+c*d*u)-a)/P, (4, 3) = 0, (4, 4) = -s*b/c-b, (4, 5) = r*(s+c)/s, (5, 1) = 0, (5, 2) = s*(lambda*c*k*beta/(b*beta*k+c*d*u)-a)/P, (5, 3) = 0, (5, 4) = s*b/c, (5, 5) = -r})

Matrix(5, 5, {(1, 1) = -b*beta*k/(c*u)-d, (1, 2) = 0, (1, 3) = -beta*lambda*c*u/(b*beta*k+c*d*u), (1, 4) = 0, (1, 5) = 0, (2, 1) = b*beta*k/(c*u), (2, 2) = -s*(lambda*c*k*beta/(b*beta*k+c*d*u)-a)/P-a, (2, 3) = beta*lambda*c*u/(b*beta*k+c*d*u), (2, 4) = -s*b/c, (2, 5) = r*(s-p)/s, (3, 1) = 0, (3, 2) = k, (3, 3) = -u, (3, 4) = 0, (3, 5) = 0, (4, 1) = 0, (4, 2) = -s*(lambda*c*k*beta/(b*beta*k+c*d*u)-a)/P, (4, 3) = 0, (4, 4) = -s*b/c-b, (4, 5) = r*(s+c)/s, (5, 1) = 0, (5, 2) = s*(lambda*c*k*beta/(b*beta*k+c*d*u)-a)/P, (5, 3) = 0, (5, 4) = s*b/c, (5, 5) = -r})

(1)

``

 

Download 1.mw

 

I'm trying to implement the QR algorithm to find the Eigenvalues of the input matrix which will be forwarded to another implementation (of the SVD alg.) to find the singular values. My implementation goes as follows:

1. feeding input: A::Matrix(datatype=float) # a bidiagonal matrix
2. construct input matrix for the QR alg. of matrix A and Z (zeros of size A): C := Matrix([[Z,Transpose(A)],[A,Z]], datatype=float); # therefore C should be symmetric
3. find the eigenvalues of matrix C with an implementation of the QR alg.:

for k from 1 to 400 do
Q, R := QRDecomposition(C);
C:=R.Q;
end do:

At this point, the eigenvalues of C should be placed in the diagonal of the matrix, but they're randomly placed around the diagonal, with only ~0 elements (like 2,xxx * 10^(-13)) in the diagonal.

If anyone knows how to resolve this, let the knowledge flow through. Any help will be appriciated, thanks in advance.

I am using maple 13 to found Eingenvalues of an hermitian matrix :

M1:=Matrix([
> [lambda3+lambda4,0,0,0,0,0,lambda4/sqrt(2),0,0,I*lambda4/sqrt(2)],
> [0,lambda3/4,0,0,0,0,0,0,0,0],
> [0,0,lambda3/4,0,0,0,0,0,0,0],
> [0,0,0,lambda3/4,0,0,0,0,0,0],
> [0,0,0,0,lambda3/4,0,0,0,0,0],
> [0,0,0,0,0,lambda3,0,0,0,0],
> [lambda4/sqrt(2),0,0,0,0,0,lambda3/2,0,0,0],
> [0,0,0,0,0,0,0,lambda2,0,0],
> [0,0,0,0,0,0,0,0,lambda2,0],
> [-I*lambda4/sqrt(2),0,0,0,0,0,0,0,0,lambda4/2]
> ]);

>Eigenvalues(M1);

my surprise is that maple gives me 8 correct solutions an 2 complex eigenvalues which are not acceptable (we now that the eigenvalues for an hermitian matrix are all real) .

To understand the output of maple, first,  I suspect that the complex part of the roots was null but without success I haven't found how to do it zero...

is it a bug? Thanks a lot to cooperation

I am having difficulty helping someone series expand an eigenvector solution.  I can expand the eigenvalues easily but get a numeric exception divide by zero when I attempt to expand a component of an eigenvector.  Mathematica seems to have no problem solving this problem.  Any help would be appreciated.

 

 

 

 

 

assume(varepsilon > 0)

H := Matrix(3, 3, {(1, 1) = 0, (1, 2) = -epsilon, (1, 3) = epsilon, (2, 1) = -epsilon, (2, 2) = 2-2*epsilon, (2, 3) = 0, (3, 1) = epsilon, (3, 2) = 0, (3, 3) = 2+2*epsilon})

Matrix(%id = 18446744078100429630)

(1)

with(LinearAlgebra):

evals, evecs := Eigenvectors(H):

e1 := convert(simplify(series(evals[1], varepsilon = 0, 4)), polynom)

2+2*varepsilon+(1/2)*varepsilon^2-(7/16)*varepsilon^3

(2)

e2 := convert(simplify(series(evals[2], varepsilon = 0, 4)), polynom)

-varepsilon^2

(3)

e3 := convert(simplify(series(evals[3], varepsilon = 0, 4)), polynom)

2-2*varepsilon+(1/2)*varepsilon^2+(7/16)*varepsilon^3

(4)

simplify(series(evecs[1][1], epsilon = 0, 4))

Error, (in simplify/sqrt/local) numeric exception: division by zero

 

``

 

Download CourseraOpticsEigenvalues.mwCourseraOpticsEigenvalues.mw

I faced a very large eigenproblem during my research. The square matrix under consideration is of size more than 2^30 times 2^30. I have tried to deal with this problem by the QR algorithm with double implicit shift (more precisely, the Francis double step QR algorithm). I'm a very beginner of programming, but I tried as follows:

--------------------------------------------------------------------------------------------------

A := Matrix([[7, 3, 4, -11, -9, -2], [-6, 4, -5, 7, 1, 12], [-1, -9, 2, 2, 9, 1], [-8, 0, -1, 5, 0, 8], [-4, 3, -5, 7, 2, 10], [6, 1, 4, -11, -7, -1]]):
H := HessenbergForm(A):
p:=6:  
for p while p>2 do: 
q:=p-1: 
s:=H(q,q)+H(p,p):  
t:=H(q,q)*H(p,p)-H(q,p)*H(p,q): 
x:=(H(1,1))^(2)+H(1,2)*H(2,1)-s*H(1,1)+t: 
y:=H(2,1)*(H(1,1)+H(2,2)-s): 
z:=H(2,1)*H(3,2): 
for k from 0 to p-3 do:  
V:=Vector([x,y,z]):   
P:=Transpose(HouseholderMatrix(1/(Norm(V+exp(argument(V(1))*I)*Norm(V,2)*Vector(3,shape=unit[1]),2))*(V+exp(argument(V(1))*I)*Norm(V,2)*Vector(3,shape=unit[1])))):   
r:=max(1,k):
H[k+1..k+3,r..6]:=MatrixMatrixMultiply(Transpose(P),SubMatrix(H,[k+1..k+3],[r..6])):  
r:=min(k+4,6):
H[1..r,k+1..k+3]:=MatrixMatrixMultiply(SubMatrix(H,[1..r],[k+1..k+3]),P):   
x:=H(k+2,k+1):
y:=H(k+3,k+1):   
if k<3 then z:=H(k+4,k+1):   
end if: 
od: 
P:=GivensRotationMatrix(Vector([x,y]),1,2): 
H[q..p,p-2..6]:=MatrixMatrixMultiply(Transpose(P),SubMatrix(H,[q..p],[p-2..6])): 
H[1..p,p-1,p]:=MatrixMatrixMultiply(SubMatrix(H,[1..p],[p-1,p]),P): 
if abs(H(p,q))<10^(-20)*(abs(H(q,q))+abs(H(p,p))) then    H(p,q):=0: p:=p-1:q=p-1:  
elif abs(H(p-1,q-1))<10^(-20)*(abs(H(q-1,q-1))+abs(H(q,q))) then    H(p-1,q-1):=0: p:=p-2:q:=p-1:  
end if:  od:
--------------------------------------------------------------------------------------------------

It seemed that replacing 0 in a Hessenberg matrix by a non-zero element is not allowed. How can I remedy this?

Plus, can anyone tell me the problem of the above thing(it's not really a programming...;( ), please?

I would also appreciate it if someone let me know a better idea for a huge eigenproblem.

Thanks in advance.

Sorry for the uninformative title. I've never used Maple, but I'm willing to buy a student license and learn it. But before spending too much effort and money I need to know if it suits my needs.

Basically what I need to do is:

1) I have a positive definite symmetric matrix of size nxn, where n can range from 2 to inf. I don't know the elements, except the fact that the diagonal has ones everywhere. All I know is that the elements out of the diagonal are in the range [0,1)

2) I have to compute the lower triangular cholesky decomposition of this matrix, lets call it L.

3) I need to subtract from each element of L the mean of the elements in the respective column. Lets call this matrix L*

4) Then I need to evaluate another nxn matrix computed from the elements of L* following a simple pattern.

5) Finally I need to find the eigenvalues of this last matrix.

What I would ideally want is to get a symbolic representation of the n eigenvalues as symbolic functions of the (unknown) elements of the matrix at point 1.

I can drop the assumption of n being unknown, i.e. fix n=3 and get the 3 functions that, after replacing the right values, give me the eigenvalues, then fix n=4 and get 4 functions, etc.

Is this possible to do in maple?

Thank you

There has been a spate of Questions posted in the past week about computing eigenvalues. Invariably, the Questioners have computed some eigenvalues by applying fsolve to a characteristic polynomial obtained from a floating-point matrix via LinearAlgebra:-Determinant. They are then surprised when various tests show that these eigenvalues are not correct. In the following worksheet, I show that the eigenvalues computed by the fsolve@Determinant method (when applied to a floating-point matrix) are 100% garbage for dense matrices larger than about Digits x Digits. The reason for this is that computing the determinant introduces too much round-off error into the coefficients of the characteristic polynomial. The best way to compute the eigenvalues is to use LinearAlgebra:-Eigenvalues or LinearAlgebra:-Eigenvectors. Furthermore, very accurate results can be obtained without increasing Digits.

 

The correct and incorrect ways to compute floating-point eigenvalues

Carl Love 2016-Jan-18

restart:

Digits:= 15:

macro(LA= LinearAlgebra):

n:= 2^5:  #Try also 2^3 and 2^4.

A:= LA:-RandomMatrix(n):

A is an exact matrix of integers; Af is its floating-point counterpart.

Af:= Matrix(A, datatype= float[8]):

P:= LA:-CharacteristicPolynomial(A, x):

P is the exact characteristic polynomial with integer coefficients; Pf is the floating-point characteristic polynomial computed by the determinant method.

Pf:= LA:-Determinant(Af - LA:-DiagonalMatrix([x$n])):

RP:= [fsolve(P, complex)]:

RP is the list of floating-point eigenvalues computed from the exact polynomial; RPf is the list of eigenvalues computed from Pf.

RPf:= [fsolve(Pf, complex)]:

RootPlot:= (R::list(complexcons))->
     plot(
          [Re,Im]~(R), style= point, symbol= cross, symbolsize= 24,
          axes= box, color= red, labels= [Re,Im], args[2..]
     )
:

RootPlot(RP);

RootPlot(RPf);

We see that the eigenvalues computed from the determinant are completely garbage. The characteristic polynomial might as well have been x^n - a^n for some positive real number a > 1.

 

Ef is the eigenvalues computed from the floating-point matrix Af using the Eigenvalues command.

Ef:= convert(LA:-Eigenvalues(Af), list):

RootPlot(Ef, color= blue);

We see that this eigenvalue plot is visually indistinguishable from that produced from the exact polynomial. This is even more obvious if I plot them together:

plots:-display([RootPlot(Ef, color= blue), RootPlot(RP)]);

Indeed, we can compare the two lists of  eigenvalues and show that the maximum difference is exceedingly small.

 

The following procedure is a novel way of sorting a list of complex numbers so that it can be compared to another list of almost-equal complex numbers.

RootSort:= (R::list(complexcons))-> sort(R, key= abs*map2(`@`, signum+2, Re+Im)):


max(abs~(RootSort(RP) -~ RootSort(Ef)));

HFloat(1.3258049636636544e-12)

 

 

``

 

Download Eigenvalues.mw

Hi Mr Preben Alsholm .

i before asked you about a problem.now i have another question...

for determine unknown parameter oemega(or eigenvalue) according to line ''newsys2 := subs(omega^2 = omega2*10^5,newsys)'' and also line ''approxsoln = [omega2 = 1, f(x) = x^2*(1-x)^2]''

power (5) in term'' 10^5''  in  (omega2*10^5,newsys) and initial guess (1)  (omega2 = 1) are very effective on final result eigenvalues .sometimes gain different eigenvalues ,which it is not impossible recognize that

which one is correct and convege.however i need Positive

 eigenvalue that is minimum between them,If and only if , it converge after
some iteration in two section of maple file which is attached as
Eigenvalue.mw

  According to my code converge occuerd until  eigenvalue gained in first section (before line `11` := ((1+6*alpha2)*(1/12))*(int(fy11^2, x = 0 .. 1))...........) are equal with those obtain in second section .(please see below file for example for_example.mw)

it is necessary mention that between section 1 and 2 is relations.for example amont of first obtained eigenvalue which obtain from first section must be repleaced in line ''approxsoln = [omega2 = 0.661514014001420, h(theta) = theta^2*(1-theta)^2]...........''in second section,

and this procedure should be continued between section 1 and 2 until convergence with desired accuracy occurred.Another relate is that,the first ODE system  can be solved using the first set of boundary data to obtain first estimate for  second section (fy11). At the next step by repeating in the same manner, 

this time by obtained function (g) at the end of maple code (Solution of the second ODE system  with second set of boundary conditions leads to the first estimate of function g),that at this stage, the first iteration is completed.

Now by replacing omega2 which is determined in this section in to the first section ,fy11 is updated and gained Further.

Next, the updated function , by continuing the iterative procedure.

in matlab bvp4c rule is used for this purpose.is this impossible in maple software ?if not please help me for solve and gain correct omega..

thanks alot

Hi EveryOne!

In the the answer of the question "How to find roót of polynomial in finite field and extension finite field (at URL: http://www.mapleprimes.com/questions/203977-How-To-Find-Roots-Of-Polynomial-In-Finite#answer215097). Carl Love helped compute eigenvalues (x1,x2,...,xn)and eigenvectors of the given matrix M over GF(28)/(y^8+y^4+y^3+y+1).

I need to do:

1. Get matrix D from these eigenvalues (x1,x2,...,xn), with D[i,i] = xi and D[i,j≠i] = 0 (D will be diagonalizable matrix. Some xi may be in extension finite field  GF((28)2))

2. Get matrix P from eigenvectors corresponding to the above eigenvalues, compute P-1

3. Compute matrix B = P x D1/4 x P-1 in  extension finite field  GF((28)2).

Please help me!!! 

I have the following characteristic equation by use of maple. How do I find a condition on x, that will return real eigenvalues and complex eigenvalues?

 

 

 

So here is the issue: I have a 50 by 50 tridiagonal matrix. The entries in the first row, first column are -i*x and the last row last column is -i*x; these are along the main diagonal, where i is complex and x is a variable. Everything in between these two entries is 0. Above and below the main diagonal the entries are -1. My issue is that I have to find a conditon on x that makes the eigenvalues real. I am completely new to maple and have no programming experience.. Can someone show me how to this?

I've got the following matrix :

A:=[<a,a-1,-b>|<a-1,a,-b>,<b,b,2a-1>] where <> are the column elements of A, a is  a real number defined on [0,1] and b^2=2a(1-a) 

a) to show A is an orthogonal matrix, I understand that I need A.Transpose(A)=Identity(3*3) but is there a way in which I can let a take a random real numbered value between 0 and 1? The rand() only returns an integer within a range. Directly multiplying A and Transpose(A) will return an expression in a, so what's the right approach?

b) from a) we can infer that A is a matrix that describes a rotation in e1,e2,e3 where these are the standard bases vectors in R3. How can I determine the rotation axis? The hint I've been given says I need to consider the Eigenvalues and eigen vectors but I don't quite understand how.


Hi there,
I have a set of differential equations whose solution, Jacobian matrix and its eigenvalues, direction field, phase portrait and nullclines, need to be computed.

Each of the equations has a varying parameter.

I know how to get the above for a single parameter value, but when I set a range of values for the parameters, Maple is not able to handle all cases as I would expect: solving the differential equation system:

eq1 := x*(1.6*(1-(1/100)*x)-phi*y)
eq2 := (x/(15+x)-0.3e-1*x-.4)*y+.6+theta
desys := [eq1, eq2];
vars := [x, y];
steadyStates := map2(eval, vars, [solve(desys)])

already yields an error:
Error, (in unknown) invalid input: Utilities:-SetEquations expects its 2nd argument, equations, to be of type set({boolean, algebraic, relation}), but received {-600*y+(Array(1..2, {(1) = 8400, (2) = 15900})), Array(1..5, {(1) = 0, (2) = 0, (3) = 0, (4) = 0, (5) = 0})}


The equations are the following:
de1 := diff(x(t), t) = x(t)*(1.6*(1-(1/100)*x(t))-phi*y(t));
de2 := diff(y(t), t) = (x(t)/(15+x(t))-0.3e-1*x(t)-.4)*y(t)+.6+theta

the parameters being:
phi:=[0 0.5 1 1.5 2]
theta:=[5. 10.]

How can I handle the situation so that Maple computes each of the above for each combination of the parameters?

I would like to avoid using two for loops and having to store all results in increasingly bigger and complicated arrays.

The worksheet at issue is this: MaplePrimes_Tumour_model_phi_theta_variation.mw


Thanks,
jon

1 2 3 4 Page 1 of 4