« 伊佐具神社(尼崎)でお参り。 | トップページ | 高周波・RFニュース 2025年4月16日 Microwave Journalで中国のオンウェハーSパラメータ測定事情、IEEE Journal of Microwavesでマイクロ波の医療応用など、TDKが超小型光電融合素子を発表、ヒロセ電機が0.44㎜高さのFPCコネクタ開発、YoleがApple C1チップ解析 »

2025年4月16日 (水)

関数型プログラミング言語 F# (fsharp)の数値計算ライブラリ Math.NET Numericsを使う(1) 複素行列を定義して一次方程式や逆行列、行列式などを計算する。Polyglot Notebooksで扱うのが便利。

関数型プログラミング言語をやってみようと思ってF#を容易にJupyter Notebook形式で使えるPolyglot Notebooksを導入した。

さっそく使ってみる。実はC#より簡単に数値計算ライブラリMath.NET Numericsが使えるのだった。

https://numerics.mathdotnet.com/

C#のときにやった例題をF#でもやっていく。

まずはこれ。

Visual C# (C_sharp)の数学ライブラリ Math.NET Numericsを使う(1) 複素行列を定義して一次方程式や逆行列、行列式などを計算する。 

Polyglot NotebooksにNuGetで入れるにはこうする。

#r "nuget: MathNet.Numerics.FSharp, 5.0.0"
そしてopenしてから、
open MathNet.Numerics.LinearAlgebra
行列とベクトルを定義する。
let A = matrix [[ 2.0; 1.0; 1.0]
                      [ -1.0; 1.0; -1.0]
                      [ 1.0; 2.0; 3.0]] : Matrix<Complex>
let b = vector  [2.0; 3.0; -10.0] : Vector<Complex>
最後のMatrix<Complex>などが無ければDouble型になる。
連立方程式の計算、逆行列、行列式は以下で計算できる。
let x = A.Solve(b)
A.Inverse()
A.Determinant()
まとめてこちらに結果を。
Fsharplinearalgebra
黄色い波線が数字にあるのはDoubleで書いているのにComplexと定義しているからで、複素数を入れれば消えます。
C#より完結に書けるのはいいな。

« 伊佐具神社(尼崎)でお参り。 | トップページ | 高周波・RFニュース 2025年4月16日 Microwave Journalで中国のオンウェハーSパラメータ測定事情、IEEE Journal of Microwavesでマイクロ波の医療応用など、TDKが超小型光電融合素子を発表、ヒロセ電機が0.44㎜高さのFPCコネクタ開発、YoleがApple C1チップ解析 »

パソコン・インターネット」カテゴリの記事

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

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

コメント

コメントを書く

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

« 伊佐具神社(尼崎)でお参り。 | トップページ | 高周波・RFニュース 2025年4月16日 Microwave Journalで中国のオンウェハーSパラメータ測定事情、IEEE Journal of Microwavesでマイクロ波の医療応用など、TDKが超小型光電融合素子を発表、ヒロセ電機が0.44㎜高さのFPCコネクタ開発、YoleがApple C1チップ解析 »

最近の記事

2025年4月
    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      

最近のコメント

無料ブログはココログ
フォト