File tree Expand file tree Collapse file tree 3 files changed +31
-0
lines changed
Expand file tree Collapse file tree 3 files changed +31
-0
lines changed Original file line number Diff line number Diff line change @@ -163,6 +163,22 @@ PMMatrixTest >> testDimension [
163163
164164]
165165
166+ { #category : ' linear algebra' }
167+ PMMatrixTest >> testEigenForSingleValueMatrix [
168+
169+ | matrix expectedEigenvalues eigenvalues expectedEigenvectors eigenvectors |
170+ matrix := PMMatrix rows: #( #( 3 ) ).
171+
172+ expectedEigenvalues := #( 3 ) .
173+ expectedEigenvectors := PMVector with: (PMVector ones: 1 ).
174+
175+ eigenvalues := matrix eigen values.
176+ eigenvectors := matrix eigen vectors.
177+
178+ eigenvalues with: expectedEigenvalues do: [ :actual :expected | self assert: actual closeTo: expected ].
179+ eigenvectors with: expectedEigenvectors do: [ :actual :expected | self assert: actual closeTo: expected ]
180+ ]
181+
166182{ #category : ' linear algebra' }
167183PMMatrixTest >> testEigenvalues [
168184 " Code Example 8.15"
Original file line number Diff line number Diff line change @@ -498,6 +498,8 @@ PMMatrix >> eigen [
498498 matrix eigen values.
499499 matrix eigen vectors."
500500
501+ self numberOfColumns == 1 & self numberOfRows == 1 ifTrue: [ ^ PMSingleValueMatrixHelper matrix: self ].
502+
501503 self isSymmetric
502504 ifTrue: [ ^ self asSymmetricMatrix eigen ]
503505 ifFalse: [ self error: ' Eigenvalues and eigenvectors of non-symmetric matrix are currently not supported' ]
Original file line number Diff line number Diff line change 1+ Class {
2+ #name : ' PMSingleValueMatrixHelper' ,
3+ #superclass : ' PMJacobiTransformationHelper' ,
4+ #category : ' Math-Matrix' ,
5+ #package : ' Math-Matrix'
6+ }
7+
8+ { #category : ' initialization' }
9+ PMSingleValueMatrixHelper >> initialize: aSingleValueMatrix [
10+
11+ eigenvalues := Array with: (aSingleValueMatrix at: 1 at: 1 ).
12+ eigenvectors := PMVector with: (PMVector ones: 1 )
13+ ]
You can’t perform that action at this time.
0 commit comments