Dalam tantangan ini, Anda akan diberikan matriks kuadrat A
, vektor v
, dan skalar λ
. Anda akan diminta untuk menentukan apakah (λ, v)
ada eigenpair yang sesuai dengan A
; Yaitu, apakah atau tidak Av = λv
.
Produk titik
Produk titik dari dua vektor adalah jumlah dari perkalian elemen-bijaksana. Misalnya, produk titik dari dua vektor berikut adalah:
(1, 2, 3) * (4, 5, 6) = 1*4 + 2*5 + 3*6 = 32
Perhatikan bahwa produk titik hanya didefinisikan antara dua vektor dengan panjang yang sama.
Perkalian Matriks-Vektor
Matriks adalah kotak nilai 2D. Sebuah m
x n
matriks memiliki m
baris dan n
kolom. Kita dapat membayangkan sebuah matriks m
x n
sebagai m
vektor panjang n
(jika kita mengambil baris).
Multiplikasi Matriks-Vektor didefinisikan antara m
x n
matriks dan n
vektor ukuran . Jika kita mengalikan m
x n
matriks dan n
vektor ukuran , kita memperoleh m
vektor ukuran . Nilai i
-th dalam vektor hasil adalah produk titik dari i
baris-ke-matriks dan vektor asli.
Contoh
1 2 3 4 5
Let A = 3 4 5 6 7
5 6 7 8 9
1
3
Let v = 5
7
9
Jika kita mengalikan matriks dan vektor Av = x
, kita mendapatkan yang berikut:
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
Jadi, kita dapatkan Av = x = (95, 145, 195)
.
Penggandaan Skalar
Perkalian skalar (angka tunggal) dan vektor hanyalah perkalian elemen-bijaksana. Sebagai contoh 3 * (1, 2, 3) = (3, 6, 9)
,. Ini cukup mudah.
Nilai eigen dan vektor Eigen
Mengingat matriks A
, kita mengatakan bahwa itu λ
adalah nilai eigen yang sesuai dengan v
dan v
merupakan vektor eigen yang sesuai dengan λ
jika dan hanya jika Av = λv
. (Dimana Av
multiplikasi matriks-vektor dan λv
multiplikasi skalar).
(λ, v)
adalah eigenpair.
Spesifikasi Tantangan
Memasukkan
Input akan terdiri dari matriks, vektor, dan skalar. Ini dapat diambil dalam urutan apa pun dalam format apa pun yang wajar.
Keluaran
Output akan menjadi nilai true / falsy; benar jika dan hanya jika skalar dan vektor adalah eigenpair dengan matriks yang ditentukan.
Aturan
- Celah standar berlaku
- Jika built-in untuk memverifikasi eigenpair ada dalam bahasa Anda, Anda mungkin tidak menggunakannya.
- Anda dapat mengasumsikan bahwa semua angka adalah bilangan bulat
Uji Kasus
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
Saya akan menambahkan 4x4 nanti.
Kasus Uji yang Tidak Dapat Dibaca yang lebih mudah untuk pengujian
sumber
Jawaban:
Jelly , 5 byte
Ini adalah triadic, program lengkap.
Cobalah online!
Bagaimana itu bekerja
sumber
v
satu bisa berharap hanya empat byte.Mathematica, 10 byte
Mengambil input like
{vector, matrix, scalar}
dan mengembalikan boolean.sumber
MATL, 7 byte
Masukan dalam rangka:
l
,v
,A
.Penjelasan:
Jawaban yang sangat panjang, jika Anda bertanya kepada saya, sebagian besar karena saya membutuhkan cara untuk mendapatkan semua input dengan benar. Saya tidak berpikir bahwa kurang dari 5 byte adalah mungkin, tetapi akan lebih keren jika seseorang menemukan solusi 5 atau 6 byte.
Pada dasarnya, ini menghitung
l*v==A*v
.sumber
@(A,v,l)A*v==v*l
, ini tampaknya sangat bertele-tele, dan saya punya perasaan 6 harus banyak jika saya mendapatkan input yang agak lebih pintar.CJam , 15 byte
Mengambil input dalam formulir
vector scalar matrix
.Cobalah online!
Penjelasan
sumber
MATLAB, 16 byte
Jawaban yang agak sepele. Menentukan fungsi anonim yang mengambil input, dan menghitung persamaan elemen-bijaksana dari vektor yang dihasilkan. Satu nol dalam array logis membuat array falsey di MATLAB.
sumber
[true,false]
, terima kasih telah mengajari saya =)[]
implisit yang hampir-tetapi-tidak-cukup (matriks kosong berbeda)all()
dipanggil pada inputif
,while
dll.MATLAB, 38 byte
Mengembalikan 1 atau 0.
MATLAB, 30 byte
Kembali
sebagai nilai kebenaran. Nilai falsy adalah vektor yang sama dengan setiap atau semua nilai 0 bukan 1.
sumber
isequal
fungsinya disingkat==
?isequal
akan dibutuhkan jika output diperlukantrue
ataufalse
bukan nilai truey atau falsey. Sebagai tantangan berdiri,==
memang sudah cukup.C ++,
225203 byteTerima kasih kepada @Cort Ammon dan @Julian Wolf yang telah menghemat 22 byte!
Cobalah online!
sumber
using std::vector;
bisa bermain golf dua byte dari ini. Harganya 18 byte, tetapi dapat menghapus 4std::
detik, menghemat 20.using V=std::vector<float>;
atau serupaJulia, 17 byte
Cobalah online!
sumber
Python 2.7, 33 byte
input: m = matriks, s = skalar, e = nilai eigen. M dan s adalah array numpy
sumber
import np
agar validprint(m,s,e)
pernyataan tidak akan bekerja karena variabelm
,s
dane
yang belum ditugaskan / didefinisikan. Anda juga dapat menghapus ruang setelah titik dua. Anda juga dapat menghapus bagian `sebagai n` dan hanya menggunakannumpy
nanti; karena Anda hanya menggunakannya sekali, menggunakan nama lengkap sebenarnya menghemat satu byte.all
bukanany
? Dan saya pikir itus
adalah vektor, bukan skalar, kecuali jika saya melewatkan sesuatuPython 3 ,
9670 byteTidak ada bawaan untuk perkalian matriks-vektor atau skalar-vektor!
Cobalah online!
-26 byte dengan menggunakan
zip
terima kasih kepada @LeakyNun!sumber
f=lambda A,L,v:all(L*y==sum(i*j for i,j in zip(x,v))for x,y in zip(A,v))
05AB1E , 11 byte
Cobalah online!
sumber
R,
3025 byteFungsi anonim, cukup mudah. Pengembalian
TRUE
atauFALSE
.sumber
OK, 12 byte
Ini adalah fungsi yang dibutuhkan
[matrix;vector;scalar]
.Ini tidak berfungsi dalam k karena alasan yang sama yang
3.0~3
memberi0
sebagai hasilnya.Berikut ini berfungsi dalam k , dengan 14 byte :
sumber
Aksioma, 27 byte
latihan
sumber
@Boolean
dilakukan?Python, 26 byte
a
danb
array numpy,c
adalah bilangan bulat.Cobalah online!
sumber
c*b
benar - benar diperlukan?c*b
memiliki lebih dari 1000 elemen, NumPy akan mengganti sebagian besar elemen dengan...
. Demo.Clojure, 60 byte
Ini memeriksa bahwa semua delta adalah nol, sehingga runtuh ke dalam set nol. Contoh panggilan:
sumber