日本語プログラミング言語なでしこで数値計算(4)LU分解で連立方程式(NxN行列aとNベクトルbでax=bのxを求める)を解く。奥村晴彦さんのC言語による最新(標準)アルゴリズム事典を参考に。そのうち行列演算まとめてプラグインにします。
さて、(1)~(3)で以下のようなものをやった。
日本語プログラミング言語なでしこで数値計算(1) まずは何はともあれ4段4次のルンゲクッタ法でローレンツ方程式を計算してみる。
日本語プログラミング言語なでしこで数値計算(2) カオス(ローレンツ方程式)の次はフラクタルだということでマンデルブロ集合を描いてみる。
日本語プログラミング言語なでしこで数値計算(3) コロナウイルスのような感染症流行を表す微分方程式、SIRモデルをルンゲクッタ法で計算する。西浦博さんの「感染症疫学のためのデータ分析入門」を参考に。
今回は、本来は数値計算というならば最初にやった方がよかった連立方程式を。。。
まあLU分解でピボット選択があるやつがいいだろう。一から書くより何かを移植したい。
手元にあるのは奥村晴彦さんのC言語による最新アルゴリズム事典か(改訂版では標準アルゴリズム事典になっていた)
Numerical Recipes in Cか
Rosetta codeか。
https://rosettacode.org/wiki/LU_decomposition
まあ奥村先生のにしよう。
リンクはこちら。
https://n3s.nadesi.com/id.php?1890
こんな感じで計算できます。
ソースコード:
テキストでもコード書いておきます。そのうち行列の演算(四則演算、逆行列、行列式)とかまとめてプラグインにします。
#LU分解で連立方程式を計算する。
#参考文献:C言語による最新アルゴリズム事典/標準アルゴリズム事典(奥村晴彦さん)
# ax=bを計算する。a: NxN行列, b: N成分ベクトル
a = [[2, 5, 7],
[4, 13, 20],
[8, 29, 50]]
b = [23,
58,
132]
xにaとbの連立方程式答えを代入する。
xをベクトル表示する。
●(aとbの)連立方程式答えとは
n=aの表行数
weightにnのベクトル作成を代入する。
ipにnのベクトル作成を代入する。
xにnのベクトル作成を代入する。
det = 0
kを0からn-1まで繰り返す。
ip[k]=k
u=0
jを0からn-1まで繰り返す。
t = ABS(a[k][j])
もし 、(t>u)ならば
u=t
ここまで
ここまで
weight[k] = 1/u
ここまで
det=1
kを0からn-1まで繰り返す。
u=-1
iをkからn-1まで繰り返す。
ii = ip[i]
t = ABS(a[ii][k])*weight[ii]
もし、 (t>u) ならば
u = t
j = i
ここまで
ここまで。
ik = ip[j]
もし、(j<>k) ならば
ip[j] = ip[k]
ip[k] = ik
det = -det
ここまで
u=a[ik][k]
det = det * u
iをk+1からn-1まで繰り返す。
もし、i<=n-1 かつ i<>kならば
ii = ip[i]
a[ii][k] = a[ii][k]/u
t = a[ii][k]
ここまで
jをk+1からn-1まで繰り返す。
もし、j<=n-1 かつ j<>kならば
a[ii][j] = a[ii][j] - t*a[ik][j]
ここまで
ここまで。
ここまで
ここまで
iを0からn-1まで繰り返す。
ii = ip[i]
t=b[ii]
jを0からi-1まで繰り返す。
もし、i<>j かつ j >=0ならば
t = t-a[ii][j]*x[j]
ここまで
ここまで。
x[i] = t
ここまで。
iをn-1から0まで1ずつ減らし繰り返す
t=x[i]
ii = ip[i]
jをi+1からn-1まで繰り返す。
もし、j<=n-1 かつ j<>iならば
t = t-a[ii][j]*x[j]
ここまで
ここまで
x[i] = t/a[ii][i]
ここまで
xを戻す
ここまで
●(NとMの)行列作成とは
A=[]
iを0からN-1まで繰り返す
A[i] = []
jを0からM-1まで繰り返す
A[i][j]=0
ここまで。
ここまで。
Aを戻す。
ここまで
●(Nの)ベクトル作成とは
A=[]
iを0からN-1まで繰り返す
A[i] = 0
ここまで。
Aを戻す。
ここまで
●(Aを)行列表示とは
iを0からAの表行数-1まで繰り返す
jを0からAの表列数-1まで繰り返す
「{A[i][j]}」と「 」を連続無改行表示
ここまで
「」を表示
ここまで
ここまで。
●(xを)ベクトル表示とは
iを0からxの配列要素数-1まで繰り返す。
「{x[i]}」を表示
ここまで
ここまで。
« 松屋で「チーズボロネーゼコンボ牛めし」(ご飯大盛)をいただく。なんか懐かしい、、、と思ったら子供のころ実家でミートソースが余ったときにご飯にかけて食べた味そのものだ。 | トップページ | 「赤ずきん、旅の途中で死体と出会う。」を読んだ。赤ずきんちゃんが探偵役となっていろいろな童話の世界で起きる殺人事件を解決するお話。しかし旅の目的は…? »
「パソコン・インターネット」カテゴリの記事
- Qwen3.6-35B-A3Bが発表され、Ollamaでも使える。そこで電子レンジの動作原理(2.45GHzは水分子の共振周波数でない)と隕石が大気圏突入で燃える原理(摩擦熱ではない)を聞くと、誘電緩和と断熱圧縮について正しく答えられた。今までのローカルLLMで一番賢い回答と思う。(2026.04.17)
- ExcelのOfficeスクリプト(TypeScript)で数値計算ライブラリmath.jsを使う(1) Officeスクリプトは外部API呼び出せるし、math.jsは RESTful APIで呼び出せることがわかった。まずは選択したセルのデータを読み、行列演算。LU分解で一次方程式を解き、逆行列と行列式を求める。(2026.04.17)
- 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)
「学問・資格」カテゴリの記事
- Qwen3.6-35B-A3Bが発表され、Ollamaでも使える。そこで電子レンジの動作原理(2.45GHzは水分子の共振周波数でない)と隕石が大気圏突入で燃える原理(摩擦熱ではない)を聞くと、誘電緩和と断熱圧縮について正しく答えられた。今までのローカルLLMで一番賢い回答と思う。(2026.04.17)
- 高周波・RFニュース 2026年4月17日 atisの3GPP Rel.20ウェビナー動画公開、MWCバルセロナ2026でのGSMA Device Enablement Summit資料公開、ハリファ大学が無線周波数AI言語モデルRF-GPT発表、レドームの解説など(2026.04.17)
- ExcelのOfficeスクリプト(TypeScript)で数値計算ライブラリmath.jsを使う(1) Officeスクリプトは外部API呼び出せるし、math.jsは RESTful APIで呼び出せることがわかった。まずは選択したセルのデータを読み、行列演算。LU分解で一次方程式を解き、逆行列と行列式を求める。(2026.04.17)
- 高周波・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)
「日記・コラム・つぶやき」カテゴリの記事
- Qwen3.6-35B-A3Bが発表され、Ollamaでも使える。そこで電子レンジの動作原理(2.45GHzは水分子の共振周波数でない)と隕石が大気圏突入で燃える原理(摩擦熱ではない)を聞くと、誘電緩和と断熱圧縮について正しく答えられた。今までのローカルLLMで一番賢い回答と思う。(2026.04.17)
- 高周波・RFニュース 2026年4月17日 atisの3GPP Rel.20ウェビナー動画公開、MWCバルセロナ2026でのGSMA Device Enablement Summit資料公開、ハリファ大学が無線周波数AI言語モデルRF-GPT発表、レドームの解説など(2026.04.17)
- ExcelのOfficeスクリプト(TypeScript)で数値計算ライブラリmath.jsを使う(1) Officeスクリプトは外部API呼び出せるし、math.jsは RESTful APIで呼び出せることがわかった。まずは選択したセルのデータを読み、行列演算。LU分解で一次方程式を解き、逆行列と行列式を求める。(2026.04.17)
- 高周波・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)
« 松屋で「チーズボロネーゼコンボ牛めし」(ご飯大盛)をいただく。なんか懐かしい、、、と思ったら子供のころ実家でミートソースが余ったときにご飯にかけて食べた味そのものだ。 | トップページ | 「赤ずきん、旅の途中で死体と出会う。」を読んだ。赤ずきんちゃんが探偵役となっていろいろな童話の世界で起きる殺人事件を解決するお話。しかし旅の目的は…? »




コメント