« Python+SymPy(ブロック行列)で2*NポートのSパラメータをTパラメータに変換(2) 4ポートの場合 | トップページ | Excel VBAで複素N×N行列(動的配列でNを決める)のさらに動的配列を作る方法(NポートSパラメータの周波数特性みたいな) »

2018年3月28日 (水)

行列の平方根(X^2 =AとなるX)をPython+SciPy(linalg.sqrtm)で計算。

ある行列Aがあって、A=X^2となるようなX,つまり行列の平方根の計算が必要となって調べてみた。
英語版のWikipediaに結構詳しく書いてある。
単純に成分の平方根を取ったらいいとかそんな簡単じゃなくて、
無限にあったり複数あったりなかったり、半正定値なら決まるとか、かなり面倒。
こういうのは既存のライブラリを使う方が簡単、ということでまずはmatlab。
sqrtmというのを使うようだ。
さらに同じsqrtmがSciPyでも使える。
どちらも同じアルゴリズム”Blocked Schur algorithms”を使っている。
こちらに説明があります。
ということで早速Pythonで計算してみよう。説明資料とmatlabの例を計算してみた。
scipy.linalg.sqrtmを使ってこんな感じで計算できる。
Matrixsquare

« Python+SymPy(ブロック行列)で2*NポートのSパラメータをTパラメータに変換(2) 4ポートの場合 | トップページ | Excel VBAで複素N×N行列(動的配列でNを決める)のさらに動的配列を作る方法(NポートSパラメータの周波数特性みたいな) »

学問・資格」カテゴリの記事

日記・コラム・つぶやき」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/512682/66545383

この記事へのトラックバック一覧です: 行列の平方根(X^2 =AとなるX)をPython+SciPy(linalg.sqrtm)で計算。:

« Python+SymPy(ブロック行列)で2*NポートのSパラメータをTパラメータに変換(2) 4ポートの場合 | トップページ | Excel VBAで複素N×N行列(動的配列でNを決める)のさらに動的配列を作る方法(NポートSパラメータの周波数特性みたいな) »

最近のコメント

2018年9月
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30            
フォト
無料ブログはココログ