Excel VBAにNumerical RecipesのLU分解ライブラリを移植して連立方程式を計算
連立一次方程式を解くプログラムがちょっと必要になって、ニューメリカルレシピに載っていたLU分解のライブラリを移植してみた。
ソースはこちら↓
使い方は、まずax = bを解きたいとき、
とりあえずconst のnに行列の大きさを定義しておいて、
Dim a(n,n) as double
Dim b(n) as double
で行列、ベクトルを定義。
Call ludcmp(a, indx, d)
Call lubksb(a, indx, b)
とするとbにxの値が入る。てことで、aとbは呼び出すと破壊されます(もともとそういう仕様)。
もっと簡単には
Call linsolve(a,b)
を勝手に用意しましたよ。
ついでに逆行列も
Call invmat(a)
行列式も
d = det(a)
なんかで計算できます。ご承知の通り、一切エラーチェックをしてないので、不具合が出ても責任はもてません。。。
こんな感じで使う。
Sub ボタン1_Click()
Dim a(n, n) As Double
Dim indx(n) As Integer
Dim b(n) As Double
Dim d As Double
Dim i As Integer, j As Integer
For i = 1 To n
For j = 1 To n
a(i, j) = 0#
Next j
Next i
a(1, 1) = 5#
a(1, 2) = 10#
a(1, 3) = 14#
a(2, 1) = 3#
a(2, 2) = 8#
a(2, 3) = 2#
a(3, 1) = 2#
a(3, 2) = 5#
a(3, 3) = 4#
b(1) = 15
b(2) = 1
b(3) = 6
Call linsolve(a, b)
For i = 1 To n
For j = 1 To n
Worksheets("Sheet1").Cells(i, j) = a(i, j)
Next j
Next i
For i = 1 To n
Worksheets("Sheet1").Cells(i, n + 4) = b(i)
Next i
End Sub
« 住吉神社でお参り。 | トップページ | 陰的ルンゲクッタ法(ラダウIIA)をExcel VBAに移植した。 »
「学問・資格」カテゴリの記事
- 高周波・RFニュース 2026年4月16日 AmazonがGlobalstarを買収、GSMAが日本のデジタル化をレポート、Mini-Circuitsがケーブルアセンブリを動画で解説、Kymetaが米国海軍研究局と衛星通信で契約、PerasoがドローンIFF向け60GHzモジュール出荷、SEMCOが1500V耐圧MLCC発表(2026.04.16)
- 高周波・RFニュース 2026年4月15日 Microwave Journalはアンプと発振器特集、Signal Integrity Journalは100GHz越えのインターコネクトのAIを使うHFSSモデル化、ローデ・シュワルツが潜水艦通信をUDT2026で発表、Xiaomi Poco X8 Pro分解動画、atisの5Gポリシーレポート(2026.04.15)
- 高周波・RFニュース 2026年4月14日 IEEE Microwave Magazineは高周波エンジニア向け量子コンピュータ入門、Antenna and Propagation Magazineはニューラルネット電磁界シミュレーションなど、第106回ARFTG論文公開、QorvoのSバンドスイッチトフィルターバンクなど(2026.04.14)
- RF Weekly Digest (Gemini 3.1 Pro・Google AI Studio BuildによるAIで高周波・RF情報の週刊まとめアプリ)2026/4/5-4/12(2026.04.12)
- GLM-5.1(Ollamaから利用)でPythonのscikit-rfを使ってTouchstoneフォーマットのSパラメータファイルを読んでdB, 位相, スミスチャート, TDRを表示するGUIアプリを作ってもらった。5分など長く考えた後、Gemma 4:31bよりさらに出来が良く、思った通りのものができた。(2026.04.09)


コメント