Nesse desafio, você receberá uma matriz quadrada A
, um vetor v
e um escalar λ
. Você será solicitado a determinar se (λ, v)
um par próprio corresponde a A
; isto é, seja ou não Av = λv
.
Produto Dot
O produto escalar de dois vetores é a soma da multiplicação por elementos. Por exemplo, o produto escalar dos dois vetores a seguir é:
(1, 2, 3) * (4, 5, 6) = 1*4 + 2*5 + 3*6 = 32
Observe que o produto escalar é definido apenas entre dois vetores do mesmo comprimento.
Multiplicação matriz-vetor
Uma matriz é uma grade de valores 2D. Uma matriz m
x n
tem m
linhas e n
colunas. Podemos imaginar uma matriz m
x n
como m
vetores de comprimento n
(se pegarmos as linhas).
A multiplicação de vetor de matriz é definida entre uma matriz m
x n
e um n
vetor de tamanho . Se multiplicarmos uma matriz m
x n
e um n
vetor de tamanho , obteremos um m
vetor de tamanho . O i
-ésimo valor no vetor de resultado é o produto escalar da i
-a linha da matriz e o vetor original.
Exemplo
1 2 3 4 5
Let A = 3 4 5 6 7
5 6 7 8 9
1
3
Let v = 5
7
9
Se multiplicarmos a matriz e o vetor Av = x
, obtemos o seguinte:
x 1 = A T 1 * v /* AT1 means the first row of A; A1 would be the first column */
= (1,2,3,4,5) * (1,3,5,7,9) = 1 * 1 + 2 * 3 + 3 * 5 + 4 * 7 + 5 * 9 = 1 + 6 + 15 + 28 + 45 = 95
x 2 = A T 2 * v = (3,4,5,6,7) * (1,3,5,7,9) = 3 * 1 + 4 * 3 + 5 * 5 + 6 * 7 + 7 * 9 = 3 + 12 + 25 + 42 + 63 = 145
x 3 = A T 3 * v = (5,6,7,8,9) * (1,3,5,7,9) = 5 * 1 + 6 * 3 + 7 * 5 + 8 * 7 + 9 * 9 = 5 + 18 + 35 + 56 + 81 = 195
Então, nós chegamos Av = x = (95, 145, 195)
.
Multiplicação escalar
A multiplicação de um escalar (um único número) e um vetor é simplesmente multiplicação por elementos. Por exemplo 3 * (1, 2, 3) = (3, 6, 9)
,. É bastante direto.
Autovalores e autovetores
Dada a matriz A
, dizemos que λ
é um valor próprio correspondente ao v
e v
é um autovetor correspondente a λ
se e somente se Av = λv
. (Onde Av
é a multiplicação de vetores matriciais e multiplicação λv
escalar).
(λ, v)
é um par próprio.
Especificações do Desafio
Entrada
A entrada consistirá em uma matriz, um vetor e um escalar. Elas podem ser obtidas em qualquer ordem, em qualquer formato razoável.
Saída
A saída será um valor verdadeiro / falso; na verdade, se e somente se o escalar e o vetor forem um par próprio com a matriz especificada.
Regras
- Aplicam-se brechas padrão
- Se houver um built-in para verificar um par próprio no seu idioma, você não poderá usá-lo.
- Você pode assumir que todos os números são inteiros
Casos de teste
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
2 1 2 -> TRUE
Vou adicionar um 4x4 mais tarde.