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分解動画 »
「パソコン・インターネット」カテゴリの記事
- RF Weekly Digest (Google AI Studio BuildによるAIで高周波・RF情報の週刊まとめアプリ) 2025/11/9-2025/11/16(2025.11.16)
- Visual Studio 2026がリリースされたので早速新しいPCにインストール。全面的にGitHub Copilotを使うようになっている。とりあえずC#でMath.NET numericsを使って連立方程式を計算するコードを書いてもらったら一発で動く。他の例として固有値や非線形計算もコードを出してくれた。(2025.11.14)
- 家で使うPCをゲーミングノートPC、ASUS TUF Gaming A16に買い替えた。CPUはAMD Ryzen 9 8940HX、メモリ32GB、GPUはNVIDIA GeForce RTX 5060 Laptop GPU、SSD 1TB。ゲームをしたいわけでなくてNVIDIAの最新GPUで機械学習・数値計算やろうかと。(2025.11.13)
- RF Weekly Digest (Google AI Studio BuildによるAIで高周波・RF情報の週刊まとめアプリ) 2025/11/3-2025/11/9(2025.11.09)
- RF Weekly Digest (Google AI Studio BuildによるAIで高周波・RF情報の週刊まとめアプリ) 2025/10/27-2025/11/3(2025.11.04)
「学問・資格」カテゴリの記事
- 高周波・RFニュース 2025年11月17日 Microwave Journalの特集は5G/6G/IoT, Special Focusも5G/6G、IDTechExの低損失材料レポート、6GHz帯の世界政策とWi-Fi 8についてのウェビナー開催、iFixitがPixel BUds 2aを分解、OnePlus15分解動画など(2025.11.17)
- RF Weekly Digest (Google AI Studio BuildによるAIで高周波・RF情報の週刊まとめアプリ) 2025/11/9-2025/11/16(2025.11.16)
- Visual Studio 2026がリリースされたので早速新しいPCにインストール。全面的にGitHub Copilotを使うようになっている。とりあえずC#でMath.NET numericsを使って連立方程式を計算するコードを書いてもらったら一発で動く。他の例として固有値や非線形計算もコードを出してくれた。(2025.11.14)
- 高周波・RFニュース 2025年11月13日 QorvoがTWTA置き換えの広帯域SSPA発表、iFixitがiPad Pro M5分解、KYOCERA AVXが0.9Vで動く超小型クロック発表、Mini-Circuitsが様々なBALUNやトランス解説、軍用5G解説、imecの110GHz可能な300mm GeSiウェハー(2025.11.13)
- 高周波・RFニュース 2025年11月12日 Qualcommが語る技術の標準化、STMicroelectronicsが語るシリコンフォトニクス、HuaweiがイノベーションとIPフォーラム開催、6G SummitでFCCのコミッショナーが米国が6Gをリードすべしと語る(2025.11.12)
「日記・コラム・つぶやき」カテゴリの記事
- 高周波・RFニュース 2025年11月17日 Microwave Journalの特集は5G/6G/IoT, Special Focusも5G/6G、IDTechExの低損失材料レポート、6GHz帯の世界政策とWi-Fi 8についてのウェビナー開催、iFixitがPixel BUds 2aを分解、OnePlus15分解動画など(2025.11.17)
- RF Weekly Digest (Google AI Studio BuildによるAIで高周波・RF情報の週刊まとめアプリ) 2025/11/9-2025/11/16(2025.11.16)
- Visual Studio 2026がリリースされたので早速新しいPCにインストール。全面的にGitHub Copilotを使うようになっている。とりあえずC#でMath.NET numericsを使って連立方程式を計算するコードを書いてもらったら一発で動く。他の例として固有値や非線形計算もコードを出してくれた。(2025.11.14)
- 高周波・RFニュース 2025年11月13日 QorvoがTWTA置き換えの広帯域SSPA発表、iFixitがiPad Pro M5分解、KYOCERA AVXが0.9Vで動く超小型クロック発表、Mini-Circuitsが様々なBALUNやトランス解説、軍用5G解説、imecの110GHz可能な300mm GeSiウェハー(2025.11.13)
- 高周波・RFニュース 2025年11月12日 Qualcommが語る技術の標準化、STMicroelectronicsが語るシリコンフォトニクス、HuaweiがイノベーションとIPフォーラム開催、6G SummitでFCCのコミッショナーが米国が6Gをリードすべしと語る(2025.11.12)
« 高周波・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分解動画 »



コメント