Javaの数値計算ライブラリApache Commons Mathを使う(1) 複素行列を定義してLU分解で一次方程式や逆行列、行列式などを計算する。Swingを使ってウィンドウに表示する。
今回はこちらの例題をJavaに移植。
Visual C# (C_sharp)の数学ライブラリ Math.NET Numericsを使う(1) 複素行列を定義して一次方程式や逆行列、行列式などを計算する。
複素行列のためにはApache Commons Mathのバージョンは3.6.1にしないとだめなのは前回の通り(4.0-beta1から複素数はNumbersライブラリに移ったのでそこの整合がとれてない?)。複素行列のためには
CreateFieldMatrix
を使わないとだめで、実数だけなら
CreateRealMatrix
などでOK。
System.out.printlnは便利だがなんかアプリっぽくないのでSwingを使ってみる。
コードはこんな感じで、
import org.apache.commons.math3.complex.*;
import org.apache.commons.math3.linear.FieldLUDecomposition;
import org.apache.commons.math3.linear.FieldMatrix;
import org.apache.commons.math3.linear.MatrixUtils;
import javax.swing.*;
import java.awt.*;
public class MatrxCalc {
public static void main(String[] args) {
Complex[][] m =
{
{new Complex(2.0, 0.0), new Complex(1.0, 0.0), new Complex(1.0, 0.0)},
{new Complex(-1.0, 0.0), new Complex(1.0, 0.0), new Complex(-1.0, 0.0)},
{new Complex(1.0, 0.0), new Complex(2.0, 0.0), new Complex(3.0, 0.0)}
};
Complex[] v = {
new Complex(2.0, 0.0),new Complex(3.0, 0.0),new Complex(-10.0, 0.0)
};
var A = MatrixUtils.createFieldMatrix(m);
var b = MatrixUtils.createFieldVector(v);
var decomp = new FieldLUDecomposition<Complex>(A);
var solver = decomp.getSolver();
var det = decomp.getDeterminant();
var sol = solver.solve(b);
var inv = solver.getInverse();
JFrame frame = new JFrame("Linear Algebra");
frame.setBounds(100, 100, 640, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel p = new JPanel();
p.setLayout(new BoxLayout(p, BoxLayout.PAGE_AXIS));
JTextArea solArea = new JTextArea();
JTextArea detArea = new JTextArea();
JTextArea invArea = new JTextArea();
JLabel solLabel = new JLabel("Solution");
JLabel detLabel = new JLabel("Detarminant");
JLabel invLabel = new JLabel("Inverse Matrix");
solArea.setFont(new Font("Arial", Font.PLAIN, 15));
detArea.setFont(new Font("Arial", Font.PLAIN, 15));
invArea.setFont(new Font("Arial", Font.PLAIN, 15));
p.add(solLabel);
p.add(solArea);
p.add(detLabel);
p.add(detArea);
p.add(invLabel);
p.add(invArea);
String s = "";
for (int i = 0; i < 3; i++) {
s += sol.getEntry(i) + "\n";
}
solArea.append(s);
detArea.append(det.toString());
invArea.append(MatrixString(inv));
frame.getContentPane().add(p, BorderLayout.CENTER);
frame.setVisible(true);
}
private static String MatrixString(FieldMatrix<Complex> m) {
String s = "";
for (int i = 0; i < m.getRowDimension(); i++) {
s += "[";
for (int j = 0; j < m.getColumnDimension(); j++) {
s += m.getEntry(i, j).toString();
if (j < m.getColumnDimension() - 1) {
s += ", ";
}
}
s +="]\n";
}
return s;
}
}
|
実行結果。
なるほど計算できてそうだ。次行ってみよう。
« 高周波・RFニュース 2025年9月1日 Google Pixel 10 Pro XL分解、5Gミリ波AiPは1つで基板間のRFはフレキで基板内は同軸、Ericssonのモバイルイノベーションレポート、Qorvoの5G,SATCOMアレイアンテナ設計ツール、3GPPのRel.19フリーズに向けた動き | トップページ | 高周波・RFニュース 2025年9月2日 Microwave JournalがAI in RFサミット開催、Qualcommが6Gウェビナー開催、GSAが5Gスタンドアロンレポート発行、Samsung Galaxy A17 5G分解動画 »
「パソコン・インターネット」カテゴリの記事
- 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)
« 高周波・RFニュース 2025年9月1日 Google Pixel 10 Pro XL分解、5Gミリ波AiPは1つで基板間のRFはフレキで基板内は同軸、Ericssonのモバイルイノベーションレポート、Qorvoの5G,SATCOMアレイアンテナ設計ツール、3GPPのRel.19フリーズに向けた動き | トップページ | 高周波・RFニュース 2025年9月2日 Microwave JournalがAI in RFサミット開催、Qualcommが6Gウェビナー開催、GSAが5Gスタンドアロンレポート発行、Samsung Galaxy A17 5G分解動画 »



コメント