行列の平方根(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を使ってこんな感じで計算できる。
« Python+SymPy(ブロック行列)で2*NポートのSパラメータをTパラメータに変換(2) 4ポートの場合 | トップページ | Excel VBAで複素N×N行列(動的配列でNを決める)のさらに動的配列を作る方法(NポートSパラメータの周波数特性みたいな) »
「学問・資格」カテゴリの記事
- Visual Basic (VB.NET)でC#用の数値計算ライブラリMath.NET Numericsを使う(4) 多項式フィッティングをして、Array.ConvertAllで一括でフィッティングデータを得る。(2023.03.31)
- Visual Basic (VB.NET)でC#用の数値計算ライブラリMath.NET Numericsを使う(3) 高速フーリエ変換(FFT)を実行する。FourierOptionsにMatlabとNumerical Recipesがあるのが意外。(2023.03.30)
- Visual Basic (VB.NET)でC#用の数値計算ライブラリMath.NET Numericsを使う(2) 補間を行う(Interpolate) リニア、3次スプライン、有理関数などいろいろ使える。(2023.03.27)
- Visual Basic (VB.NET)でC#用の数値計算ライブラリMath.NET Numericsを使う(1)複素行列を定義して一次方程式や逆行列、行列式などを計算する。(2023.03.24)
- 高周波(RF・マイクロ波・ミリ波・5G)関連ニュース(3/16) IEEE Microwave Magazineは女性マイクロ波研究者特集、Microwave Journalで285GHz帯で30GHz帯域のOTA測定!QorvoがUWB室内ナビのデモ、STMとonsemiのBluetooth新商品、IDTechExの6Gレポート、など。(2023.03.16)
「日記・コラム・つぶやき」カテゴリの記事
- Visual Basic (VB.NET)でC#用の数値計算ライブラリMath.NET Numericsを使う(4) 多項式フィッティングをして、Array.ConvertAllで一括でフィッティングデータを得る。(2023.03.31)
- Visual Basic (VB.NET)でC#用の数値計算ライブラリMath.NET Numericsを使う(3) 高速フーリエ変換(FFT)を実行する。FourierOptionsにMatlabとNumerical Recipesがあるのが意外。(2023.03.30)
- Visual Basic (VB.NET)でC#用の数値計算ライブラリMath.NET Numericsを使う(2) 補間を行う(Interpolate) リニア、3次スプライン、有理関数などいろいろ使える。(2023.03.27)
- Visual Basic (VB.NET)でC#用の数値計算ライブラリMath.NET Numericsを使う(1)複素行列を定義して一次方程式や逆行列、行列式などを計算する。(2023.03.24)
- BingのAIチャットに最大の素数はいくつ?と聞くと、存在しないが今知られている最大の素数は2^89589933-1だと答えた。が、これは引用している記事が誤植していて、実際は2^82589933-1だ...間違った記事を引用すると間違った答えになる。英語で聞くと1つ前のメルセンヌ素数に…(2023.03.17)
« Python+SymPy(ブロック行列)で2*NポートのSパラメータをTパラメータに変換(2) 4ポートの場合 | トップページ | Excel VBAで複素N×N行列(動的配列でNを決める)のさらに動的配列を作る方法(NポートSパラメータの周波数特性みたいな) »
コメント