Python
 Computer >> コンピューター >  >> プログラミング >> Python

Python – scipy.linalg.cosm関数で行列の余弦を計算する方法


scipy.linalgパッケージのcosm()関数は、入力行列の余弦(コサイン)を計算するために使用されます。このルーチンは内部でexpmを利用して行列指数関数を求め、その結果から行列の余弦を算出します。

なお、行列の余弦はオイラーの公式 cos(A) = (exp(iA) + exp(−iA)) / 2 に基づいて定義される、スカラーの三角関数を行列へ拡張した概念です。機械学習や物理シミュレーションなど、線形代数の高度な計算が必要な場面で活用されます。

構文

scipy.linalg.cosm(x)

ここで、x は入力となる配列(行列)です。

例1:2×2行列の場合

まず、2×2の正方行列を入力として与える例を見てみましょう。

# 必要なライブラリをインポート
from scipy import linalg
import numpy as np

# 入力配列を定義
q = np.array([[121 , 10] , [77 , 36]])
print("Array Input :\n", q)

# 余弦を計算
r = linalg.cosm(q)

# 行列の余弦を表示
print("Cosine of Q: \n", r)

出力結果

上記のプログラムを実行すると、次の出力が得られます。

Array Input :
 [[121 10]
 [ 77 36]]
Cosine of Q:
 [[-0.89675008 -0.00369979]
 [-0.02848841 -0.86530184]]

例2:すべての要素が1の3×3行列の場合

続いて、np.ones()で生成した全要素が1の3×3行列を入力とする例です。

# 必要なライブラリをインポート
from scipy import linalg
import numpy as np

# 入力配列を定義
x = np.ones((3, 3))
print("Array Input :\n", x)

# 余弦を計算
a = linalg.cosm(x)

# 行列の余弦を表示
print("Cosine of X: \n", a)

出力結果

上記のプログラムを実行すると、次の出力が得られます。

Array Input :
 [[1. 1. 1.]
 [1. 1. 1.]
 [1. 1. 1.]]
Cosine of X:
 [[ 0.33666917 -0.66333083 -0.66333083]
 [-0.66333083 0.33666917 -0.66333083]
 [-0.66333083 -0.66333083 0.33666917]]

このように、cosm()を使えば任意の正方行列に対して簡単に余弦を求めることができます。対角成分と非対角成分の値が異なることに注目すると、行列の余弦が単なる要素ごとの計算ではなく、行列全体の性質に基づいた演算であることがわかります。


  1. Pythonで角度の三角関数の余弦(コサイン)を取得する方法

    numpy.cos()で余弦(コサイン)を求める PythonのNumPyで角度の三角関数における余弦(コサイン)を求めるには、numpy.cos()メソッドを使用します。このメソッドは、第1引数xの各要素に対する余弦を返し、xがスカラーであれば結果もスカラー値として返ります。 第1引数xはラジアン単位の角度です(2π=360度)。度数法の値をそのまま渡すことはできないため、np.piを使って変換するか、np.radians()やnp.deg2rad()でラジアンに変換してから渡します。 第2引数と第3引数は省略可能です。第2引数はndarrayで、計算結果を格納する配列(out)を指定します

  2. Python – scipy.interpolate.interp1dで1次元補間を行う方法

    scipy.interpolateパッケージに含まれるinterp1d()関数は、1次元関数の補間(インターポレーション)を行うための機能です。xとyといった値の配列を受け取り、何らかの関数y = f(x)を近似したうえで、補間によって新しい点における値を求めることができます。データ points 間の値を滑らかに推定したい場合に非常に便利なツールです。構文scipy.interpolate.interp1d(x, y)ここで、xは実数値からなる1次元配列、yは実数値からなるN次元配列です。補間軸に沿ったyの長さは、xの長さと一致している必要があります。例1まず、次の例を見てみましょう。# 必