In this challenge, you will be given a square matrix A
, a vector v
, and a scalar λ
. You will be required to determine if (λ, v)
is an eigenpair corresponding to A
; that is, whether or not Av = λv
.
Dot Product
The dot product of two vectors is the sum of element-wise multiplication. For example, the dot product of the following two vectors is:
(1, 2, 3) * (4, 5, 6) = 1*4 + 2*5 + 3*6 = 32
Note that the dot product is only defined between two vectors of the same length.
Matrix-Vector Multiplication
A matrix is a 2D grid of values. An m
x n
matrix has m
rows and n
columns. We can imagine an m
x n
matrix as m
vectors of length n
(if we take the rows).
Matrix-Vector multiplication is defined between an m
x n
matrix and a size-n
vector. If we multiply an m
x n
matrix and a size-n
vector, we obtain a size-m
vector. The i
-th value in the result vector is the dot product of the i
-th row of the matrix and the original vector.
Example
1 2 3 4 5
Let A = 3 4 5 6 7
5 6 7 8 9
1
3
Let v = 5
7
9
If we multiply the matrix and the vector Av = x
, we get the following:
x1 = AT1 * v /* AT1 means the first row of A; A1 would be the first column */
= (1,2,3,4,5) * (1,3,5,7,9) = 11 + 23 + 35 + 47 + 5*9 = 1+6+15+28+45 = 95
x2 = AT2 * v = (3,4,5,6,7) * (1,3,5,7,9) = 31 + 43 + 55 + 67 + 7*9 = 3+12+25+42+63 = 145
x3 = AT3 * v = (5,6,7,8,9) * (1,3,5,7,9) = 51 + 63 + 75 + 87 + 9*9 = 5+18+35+56+81 = 195
So, we get Av = x = (95, 145, 195)
.
Scalar Multiplication
Multiplication of a scalar (a single number) and a vector is simply element-wise multiplication. For example, 3 * (1, 2, 3) = (3, 6, 9)
. It's fairly straightforward.
Eigenvalues and Eigenvectors
Given the matrix A
, we say that λ
is an eigenvalue corresponding to v
and v
is an eigenvector corresponding to λ
if and only if Av = λv
. (Where Av
is matrix-vector multiplication and λv
is scalar multiplication).
(λ, v)
is an eigenpair.
Challenge Specifications
Input
Input will consist of a matrix, a vector, and a scalar. These can be taken in any order in any reasonable format.
Output
Output will be a truthy/falsy value; truthy if and only if the scalar and the vector are an eigenpair with the matrix specified.
Rules
- Standard loopholes apply
- If a built-in for verifying an eigenpair exists in your language, you may not use it.
- You may assume that all numbers are integers
Test Cases
MATRIX VECTOR EIGENVALUE
2 -3 -1 3
1 -2 -1 1 1 -> TRUE
1 -3 0 0
2 -3 -1 1
1 -2 -1 1 -2 -> TRUE
1 -3 0 1
1 6 3 1
0 -2 0 0 4 -> TRUE
3 6 1 1
1 0 -1 2
-1 1 1 1 7 -> FALSE
1 0 0 0
-4 3 1
2 1 2 2 -> TRUE
I will add a 4x4 later.