Bagi mereka dengan latar belakang aljabar linier kecil, tantangannya sesederhana ini: menentukan nilai eigen dan vektor eigen dari matriks 2x2 kompleks yang diberikan. Anda dapat langsung beralih ke Tantangan untuk perincian I / O, dll. Bagi mereka yang membutuhkan sedikit penyegaran pada sistem eigens, baca terus.
Latar Belakang
The persamaan karakteristik dari matriks A didefinisikan oleh
det| A - λI | = 0
di mana λ adalah parameter kompleks (skalar), I adalah matriks identitas dan det | ... | adalah penentu . Sisi kiri mengevaluasi ke polinomial dalam λ , polinom karakteristik , yang kuadratik dalam kasus matriks 2x2. Solusi dari persamaan karakteristik ini adalah nilai eigen dari A , yang akan kami nyatakan sebagai λ 1 dan λ 2 .
Sekarang vektor eigen v i dari A memuaskan
A vi = λi vi
Untuk setiap λ i , ini memberi Anda sistem dua persamaan dalam dua tidak diketahui (komponen v i ), yang dapat diselesaikan dengan mudah. Anda akan melihat bahwa sistem sebenarnya kurang ditentukan, dan besarnya vektor eigen tidak ditentukan oleh persamaan. Kami biasanya ingin vektor eigen dinormalisasi, yaitu √ (| x | 2 + | y | 2 ) = 1 , di mana x dan y adalah komponen vektor, | x | 2 adalah x dikalikan dengan konjugat kompleks.
Perhatikan bahwa nilai eigen mungkin menurun, yaitu λ 1 = λ 2 . Dalam hal ini, Anda mungkin atau mungkin tidak dapat memenuhi sistem persamaan tunggal dengan dua vektor eigen yang bebas linear.
Tantangan
Dengan matriks 2x2 dengan elemen kompleks, tentukan dua nilai eigennya (mungkin identik) dan vektor eigen yang dinormalisasi untuk setiap nilai eigen. Angka-angka yang dihasilkan harus akurat setidaknya 3 (desimal) digit signifikan. Anda dapat mengasumsikan bahwa bagian nyata dan imajiner dari setiap elemen matriks berada dalam kisaran [-1,1] .
Anda dapat menulis fungsi atau program, mengambil input melalui STDIN, argumen baris perintah, prompt atau argumen fungsi. Anda dapat menampilkan hasilnya ke STDOUT, kotak dialog atau sebagai nilai pengembalian fungsi.
Anda dapat menggunakan string atau format daftar yang mudah digunakan (tetapi tidak ambigu) untuk input dan output. Anda juga dapat memilih antara pasangan pelampung atau tipe kompleks untuk mewakili angka individual.
Anda tidak boleh menggunakan fungsi bawaan untuk menyelesaikan sistem eigens (seperti Mathematica Eigenvectors
atau Eigensystem
) atau pemecah persamaan.
Ini kode golf, jadi jawaban tersingkat (dalam byte) menang.
Contohnya
Setiap contoh adalah tiga baris: input, nilai eigen dan vektor eigen yang sesuai dalam urutan yang sama. Perhatikan bahwa vektor eigen hanya ditentukan hingga fase mereka, dan bahwa dalam kasus penurunan nilai eigen, vektor eigen sebenarnya dapat berubah-ubah (seperti dalam contoh pertama).
[[1.0, 0.0], [0.0, 1.0]]
[1.0, 1.0]
[[1.0, 0.0], [0.0, 1.0]]
[[0.0, 0.4], [-0.1, -0.4]]
[-0.2, -0.2]
[[0.894427, -0.447214], [0.894427, -0.447214]]
[[0.3, 0.1], [0.4, -0.9]]
[-0.932456, 0.332456]
[[-0.0808731, 0.996724], [0.951158, 0.308703]]
[[0.5, -1.0], [0.8, -0.5]]
[0.74162i, - 0.74162i]
[[0.745356, 0.372678 - 0.552771i], [0.745356, 0.372678 + 0.552771i]]
[[-0.0539222 + 0.654836i, -0.016102 + 0.221334i], [0.739514 - 0.17735i, -0.0849216 + 0.77977i]]
[0.238781 + 0.984333i, -0.377625 + 0.450273i]
[[0.313668 + 0.322289i, 0.893164], [-0.236405 - 0.442194i, 0.865204]]
[[-0.703107 - 0.331792i, 0.286719 - 0.587305i], [-0.418476 + 0.396347i, -0.885934 + 0.50534i]]
[-1.13654 - 0.32678i, -0.4525 + 0.500329i]
[[0.833367, -0.248208 - 0.493855i], [-0.441133 - 0.408236i, 0.799215]]
[[-0.156312 + 0.788441i, 0.045056 - 0.579167i], [0.130741 - 0.97017i, 0.049183 - 0.590768i]]
[-0.181759 + 1.11738i, 0.0746298 - 0.919707i]
[[0.86955, -0.493846 + 0.000213145i], [0.318856 - 0.0181135i, 0.94763]]
sumber