Contact
CoCalc Logo Icon
StoreFeaturesDocsShareSupport News AboutSign UpSign In
| Download
Project: LS 30B-2 S19
Views: 240

Eigenvalues and Eigenvectors

What is Eigenvalues and Eigenvectors?

eigen-: Characteristic

How to Find it?

#Build the matrix first matA = matrix(RDF,[[3,1],[6,5]]) matA.right_eigenvectors()
[(1.3542486889354093, [(-0.5192793014075969, 0.8546045911002574)], 1), (6.645751311064591, [(-0.2645215466442612, -0.9643797754831485)], 1)]

Wait, what is RDF?

It means the matrix is in "Real Double Field", which is necessary for sage to calculate eigenvalues and eigenvectors!

eig = matA.right_eigenvectors() eig[0] eig[0][1] # can this be a vector?
(1.3542486889354093, [(-0.5192793014075969, 0.8546045911002574)], 1) [(-0.5192793014075969, 0.8546045911002574)]

Some Tricks About Programming

firstEvec = eig[0][1][0] # it was a tuple inside a list!!!! plot(vector(firstEvec))

Why Eigenvalues and Eigenvectors are Important

matA =matrix(RDF,[[8,1],[6,-5]]) matA eig = matA.right_eigenvectors() eig evec1 = vector(eig[0][1][0]) evec2 = vector(eig[1][1][0])
[ 8.0 1.0] [ 6.0 -5.0] [(8.446221994724901, [(0.9132080913100002, 0.40749353610326905)], 1), (-5.446221994724902, [(-0.07416551254019531, 0.9972459459680194)], 1)]
evec1_2 = matA*evec1 evec2_2 = matA*evec2 fig1 = plot(evec1,color='red')+plot(evec1_2,color='red',linestyle='--',legend_label='evec1_2',legend_color='red') fig2 = plot(evec2,color='blue')+plot(evec2_2,color='blue',linestyle='--',legend_label='evec2_2',legend_color='blue') fig1+fig2
evec1_2.norm() eig[0][0]
8.446221994724901 8.446221994724901
evec2_2.norm() eig[1][0]
5.446221994724902 -5.446221994724902

Dominate Eigenvalues

matA =matrix(RDF,[[.8,-.1],[-.2,0.8]]) matA.right_eigenvectors()
[(0.9414213562373095, [(0.5773502691896258, -0.8164965809277261)], 1), (0.6585786437626905, [(0.577350269189626, 0.8164965809277259)], 1)]
curState = vector([10,8]) state1 = [curState[0]] state2 = [curState[1]] timeSteps = srange(0,100,1) for i in srange(100): nextState = matA*vector([state1[i],state2[i]]) curState = nextState state1.append(nextState[0]) state2.append(nextState[1])
list_plot(zip(timeSteps,state1))
list_plot(zip(timeSteps,state2))
matA =matrix(RDF,[[.97,-.1],[-.2,0.8]]) eig = matA.right_eigenvectors() eig
[(1.05, [(0.7808688094430303, -0.6246950475544243)], 1), (0.72, [(0.37139067635410383, 0.9284766908852592)], 1)]
curState = vector([10,8]) result = [[curState[0],curState[1]]] state1 = [curState[0]] state2 = [curState[1]] timeSteps = srange(0,100,1) for i in srange(100): nextState = matA*vector([state1[i],state2[i]]) resultVec = matA*vector(result[-1]) result.append([resultVec[0],resultVec[1]]) curState = nextState state1.append(nextState[0]) state2.append(nextState[1]) list_plot(zip(timeSteps,state1)) list_plot(zip(timeSteps,state2)) list_plot(zip(timeSteps,result[:][0]))
Error in lines 1-1 Traceback (most recent call last): File "/cocalc/lib/python2.7/site-packages/smc_sagews/sage_server.py", line 1188, in execute flags=compile_flags) in namespace, locals File "", line 1, in <module> TypeError: list indices must be integers, not tuple
list_plot(zip(timeSteps,result[:,0]))
Error in lines 1-1 Traceback (most recent call last): File "/cocalc/lib/python2.7/site-packages/smc_sagews/sage_server.py", line 1188, in execute flags=compile_flags) in namespace, locals File "", line 1, in <module> TypeError: list indices must be integers, not tuple

Can we predict more about the result?

evec = vector(eig[0][1][0]) evec
(0.7808688094430303, -0.6246950475544243)
state1[-1]/(abs(state1[-1]+abs(state2[-1])))
0.5555555555555556
evec[0]/(abs(evec[0])+abs(evec[1]))
0.5555555555555555