Đối với những người có một nền tảng đại số tuyến tính nhỏ, thách thức cũng đơn giản như sau: xác định các giá trị riêng và hàm riêng của một ma trận 2x2 phức tạp nhất định. Bạn có thể bỏ qua trước chi tiết Thử thách cho I / O, v.v ... Đối với những người cần làm mới một chút về hệ thống eigensystem, hãy đọc tiếp.
Lý lịch
Các phương trình đặc trưng của một ma trận A được xác định bởi
det| A - λI | = 0
Trong đó λ là một tham số (vô hướng) phức tạp, I là ma trận danh tính và det | ... | là yếu tố quyết định . Phía bên trái ước lượng cho một đa thức trong λ , đa thức đặc trưng , là bậc hai trong trường hợp ma trận 2x2. Các giải pháp của phương trình đặc trưng này là giá trị riêng của A , mà chúng ta sẽ biểu thị là λ 1 và λ 2 .
Bây giờ các eigenvector v i của A thỏa mãn
A vi = λi vi
Với mỗi λ i , điều này cung cấp cho bạn một hệ thống gồm hai phương trình trong hai ẩn số (các thành phần của v i ), có thể được giải quyết khá dễ dàng. Bạn sẽ nhận thấy rằng hệ thống thực sự chưa được xác định rõ và độ lớn của các hàm riêng không được xác định bởi các phương trình. Chúng ta thường sẽ muốn các hàm riêng được chuẩn hóa, đó là (| x | 2 + | y | 2 ) = 1 , trong đó x và y là các thành phần vectơ, | x | 2 là x nhân với liên hợp phức tạp của nó.
Lưu ý rằng các giá trị riêng có thể bị suy biến, tức là λ 1 = 2 . Trong trường hợp này, bạn có thể hoặc không thể thỏa mãn hệ phương trình đơn với hai hàm riêng độc lập tuyến tính.
Các thách thức
Cho một ma trận 2x2 với các phần tử phức tạp, xác định hai giá trị riêng (có thể giống hệt nhau) của nó và một hàm riêng được chuẩn hóa cho mỗi giá trị riêng. Các số kết quả phải chính xác đến ít nhất 3 chữ số có nghĩa (thập phân). Bạn có thể giả định rằng phần thực và phần ảo của bất kỳ phần tử ma trận nào nằm trong phạm vi [-1,1] .
Bạn có thể viết một hàm hoặc một chương trình, lấy đầu vào qua STDIN, đối số dòng lệnh, dấu nhắc hoặc đối số hàm. Bạn có thể xuất kết quả sang STDOUT, hộp thoại hoặc làm giá trị trả về của hàm.
Bạn có thể sử dụng bất kỳ định dạng danh sách hoặc chuỗi thuận tiện (nhưng không rõ ràng) cho đầu vào và đầu ra. Bạn cũng có thể chọn giữa các cặp số float hoặc loại phức tạp để thể hiện các số riêng lẻ.
Bạn không được sử dụng các hàm dựng sẵn để giải các hệ thống eigensystem (như Mathicala's Eigenvectors
hoặc Eigensystem
) hoặc các bộ giải phương trình.
Đây là mã golf, vì vậy câu trả lời ngắn nhất (tính bằng byte) sẽ thắng.
Ví dụ
Mỗi ví dụ là ba dòng: đầu vào, giá trị riêng và các hàm riêng tương ứng theo cùng một thứ tự. Lưu ý rằng các hàm riêng chỉ được xác định theo pha của chúng và trong trường hợp các giá trị riêng bị suy biến, các hàm riêng có thể thực sự là tùy ý (như trong ví dụ đầu tiên).
[[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]]