前書き
二つの最も一般的な三角関数、sine
及びcosine
(又はsin
およびcos
短いため)は、行列値の関数であるように拡張することができます。マトリックス値のアナログを計算する1つの方法は次のとおりです。
次の2つの重要な三角関数を検討してください。
これらのIDを使用して、我々はのために以下の式を導くことができるsin
とcos
:
行列の指数はすべての正方行列に存在し、次式で与えられます。
ここで、A 0は恒等行列であり、Iと同じ寸法とA。行列指数を使用すると、これらの2つの三角関数(および他のすべての三角関数)は、行列の関数として評価できます。
チャレンジ
正方行列Aが与えられ、sin(A)
との値を出力しますcos(A)
。
ルール
- 入力および出力は、便利で合理的な形式(2D配列、言語のマトリックス形式など)になります。
- 1つのプログラム、2つの独立したプログラム、1つの関数、または2つの関数を作成できます。2つの関数を記述する場合、それらの間でコードを共有できます(インポート関数やヘルパー関数など)。
- 入力行列の値は常に整数です。
- 浮動小数点の不正確さの結果として、ソリューションに精度の問題がある場合があります。言語に魔法のような無限精度の値がある場合、ソリューションは完全に機能するはずです(無限の時間やメモリを必要とするという事実を無視して)。ただし、それらの魔法の無限精度の値は存在しないため、精度の制限に起因する不正確さは許容されます。この規則は、出力に特定の精度を要求することに起因する複雑さを回避するために設けられています。
- マトリックス引数の三角関数(双曲線三角関数を含む)を計算する組み込み関数は使用できません。他の行列組み込み関数(乗算、べき乗、対角化、分解、行列指数など)が許可されています。
テストケース
フォーマット: 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]]
参考文献
Math.SEでのこの優れた質問には、三角関数のマトリックス値の類似物のいくつかの代替派生が含まれます。
(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}}
Mathematica を入手しましたが、確認できますか?