Python – scipy.linalg.sinm()関数で行列の正弦を計算する方法
sinm()関数とは
scipy.linalgパッケージに含まれるsinm()関数は、入力された行列の正弦(マトリックスサイン)を計算するための関数です。内部では行列指数関数を求めるexpm()を利用しており、通常の要素ごとの三角関数ではなく、行列としての正弦を厳密に計算します。
なお、行列の正弦はオイラーの公式に基づき sin(A) = (eiA − e-iA) / 2i として定義され、制御工学や量子力学などの分野で活用されます。
構文
scipy.linalg.sinm(x)
ここで、x には正弦を求めたい入力配列(正方行列)を指定します。
例1:基本的な使い方
まずはシンプルな例から見てみましょう。
# 必要なライブラリをインポート
from scipy import linalg
import numpy as np
# 入力配列を定義
X = np.array([[110, 12], [79, 23]])
print("入力行列 X:\n", X)
# 行列の正弦を計算
n = linalg.sinm(X)
# 計算結果を表示
print("X の正弦:\n", n)
出力
上記のコードを実行すると、次のような出力が得られます。
入力行列 X: [[110 12] [ 79 23]] X の正弦: [[ 0.41972171 -0.02196579] [-0.14460811 0.57897368]]
例2:逆行列に対して適用する
次に、行列の逆行列を求めてから sinm() を適用する例を紹介します。
# 必要なライブラリをインポート
from scipy import linalg
import numpy as np
# 入力配列を定義
p = np.array([[87, 15], [48, 12]])
# 逆行列を計算
q = linalg.inv(p)
print("逆行列 Q:\n", q)
# 逆行列の正弦を計算
n = linalg.sinm(q)
# 計算結果を表示
print("Q の正弦:\n", n)
出力
このコードを実行すると、以下の出力が生成されます。
逆行列 Q: [[ 0.03703704 -0.0462963 ] [-0.14814815 0.26851852]] Q の正弦: [[ 0.03663868 -0.04560274] [-0.14592875 0.26465236]]
まとめ
このように、scipy.linalg.sinm() を使えば、NumPy配列で表現した任意の正方行列に対して正弦を簡単に計算できます。同様の関数として余弦を求める cosm() や双曲線正弦を求める sinhm() も用意されているため、用途に応じて使い分けるとよいでしょう。
-
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まず、次の例を見てみましょう。# 必
-
Matplotlibを使ってPythonで正弦波(サイン波)のグラフを描く方法
Matplotlibは、Pythonで最も広く使われているデータ可視化ライブラリの一つです。データを可視化することは、数値を一つひとつ確認したり複雑な計算を行ったりしなくても、データ全体の傾向や特徴を直感的に把握できるようになるため、データ分析において非常に重要なステップとなります。また、定量的な洞察を視覚的に伝えることで、聴衆への説明も格段に分かりやすくなります。 Matplotlibは主に2次元のプロット(グラフ)を作成するために使用されます。オブジェクト指向のAPIを備えており、作成したグラフをPythonアプリケーション内に簡単に組み込むことができます。IPythonシェル、Jupyt