pengantar
Dua fungsi trigonometri yang paling umum, sine
dan cosine
(atau sin
dan cos
untuk pendek), dapat diperpanjang menjadi fungsi matriks bernilai. Salah satu cara untuk menghitung analog bernilai matriks adalah sebagai berikut:
Pertimbangkan dua identitas trigonometri penting ini:
Dengan menggunakan identitas ini, kita dapat memperoleh persamaan berikut untuk sin
dan cos
:
The matriks eksponensial ada untuk semua matriks persegi dan diberikan oleh:
di mana A 0 adalah matriks identitas I dengan dimensi yang sama seperti A . Menggunakan matriks eksponensial, dua fungsi trigonometri ini (dan dengan demikian semua fungsi trigonometri lainnya) dapat dievaluasi sebagai fungsi matriks.
Tantangan
Diberikan matriks kuadrat A , menampilkan nilai-nilai sin(A)
dan cos(A)
.
Aturan
- Input dan output mungkin dalam format apa pun yang nyaman dan wajar (array 2D, format matriks bahasa Anda, dll.).
- Anda dapat menulis satu program, dua program independen, satu fungsi, atau dua fungsi. Jika Anda memilih untuk menulis dua fungsi, kode dapat dibagikan di antara mereka (seperti impor dan fungsi pembantu).
- Nilai-nilai matriks input akan selalu berupa bilangan bulat.
- Solusi Anda mungkin memiliki masalah akurasi sebagai akibat dari ketidaktepatan floating-point. Jika bahasa Anda memiliki nilai presisi tak terbatas magis, maka solusi Anda harus bekerja dengan sempurna (mengabaikan fakta bahwa itu akan membutuhkan waktu dan / atau memori tak terbatas). Namun, karena nilai presisi tak terbatas magis itu tidak ada, ketidakakuratan yang disebabkan oleh presisi terbatas dapat diterima. Aturan ini berlaku untuk menghindari komplikasi yang timbul karena membutuhkan sejumlah presisi dalam output.
- Builtin yang menghitung fungsi trigonometri untuk argumen matriks (termasuk fungsi trigonometri hiperbolik) tidak diperbolehkan. Matriks bawaan lainnya (seperti multiplikasi, eksponensial, diagonalisasi, dekomposisi, dan matriks eksponensial) diperbolehkan.
Uji Kasus
Format: A -> sin(A), cos(A)
[[0]] -> [[0]], [[1]]
[[0, 2], [3, 5]] -> [[-0.761177343863758, 0.160587281888277], [0.240880922832416, -0.359709139143065]], [[0.600283445979886, 0.119962280223493], [0.179943420335240, 0.900189146538619]]
[[1, 0, 1], [0, 0, 0], [0, 1, 0]] -> [[0.841470984807897, -0.158529015192103, 0.841470984807897], [0, 0, 0], [0, 1, 0]], [[0.540302305868140, -0.459697694131860, -0.459697694131860], [0, 1, 0], [0, 0, 1]]
[[1, 0, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1]] -> [[0.841470984807897, 0, 0, 0, 0], [0, 0.841470984807897, 0, 0, 0], [0, 0, 0.841470984807897, 0, 0], [0, 0, 0, 0.841470984807897, 0], [0, 0, 0, 0, 0.841470984807897]], [[0.540302305868140, 0, 0, 0, 0], [0, 0.540302305868140, 0, 0, 0], [0, 0, 0.540302305868140, 0, 0], [0, 0, 0, 0.540302305868140, 0], [0, 0, 0, 0, 0.540302305868140]]
[[-3, 2, -6], [3, 0, 4], [4, -2, 7]] -> [[-0.374786510963954, 0.135652884035570, -1.35191037980742], [1.14843105375406, 0.773644542790111, 1.21625749577185], [1.21625749577185, -0.135652884035570, 2.19338136461532]], [[4.13614256031450, -1.91289828483056, 5.50873853927692], [-2.63939111203107, 1.49675144828342, -3.59584025444636], [-3.59584025444636, 1.91289828483056, -4.96843623340878]]
Bacaan lebih lanjut
Pertanyaan yang luar biasa ini di Math.SE mencakup beberapa derivasi alternatif dari analog yang bernilai matriks dari fungsi trigonometri.
(ignoring the fact that it would require infinite time and/or memory)
sin([[1, 0, 1], [0, 0, 0], [0, 1, 0]]) = {{0.841, -0.158, 0.841}, {0, 0, 0}, {0, 1, 0}}
dengan Mathematica, dapatkah Anda memeriksanya?