« 高周波・RFニュース 2025年8月25日 everythingRFが記事やホワイトペーパーを学習させた生成AI The RF AI Expertを発表、2xThru法について聞いてみた。Oakley x Meta HSTNsスマートグラスをiFixitが分解、Qorvoの電源管理eBook、QuectelのISM向けアンテナ | トップページ | 高周波・RFニュース 2025年8月26日 everythingRFマガジン最新刊発行、Samsung Galaxy Z Flip7分解動画、5Gミリ波AiPはやっぱり1個、SONY Xperia 1VII分解動画、RFは同軸じゃなくてフレキ、0Ω抵抗解説、PlayerDataのスポーツトラッカーにNordicのSoC,PMICが採用 »

2025年8月25日 (月)

Javaの数値計算ライブラリApache Commons Mathを使う(準備編) eclipseをインストールしてライブラリも入れるが最新バージョンの4.0beta1だと複素行列がうまくいかない。3.6.1ならOK。とりあえず複素行列の加減乗、トレースを計算。グラフのためにJFreeChartも入れる。

これまでVisual C#(Basic, F#)、JavaScript、PHPなどの数値計算ライブラリを試してきたが今度はJavaでやってみる。

本当はClojureを使いたいがあまりにJavaのことを知らないでやるのもどうかと思ったので。

今回は準備編。

IDEはeclipseで日本語化も含めてこちらから。

https://willbrains.jp/

数値計算ライブラリはApache Commons Mathを使う。

https://commons.apache.org/proper/commons-math/

ただ問題は最新バージョンの4.0beta1だと複素行列がうまくいかない。3.6.1ならOK。
こちらのアーカイブからダウンロードできる。

https://archive.apache.org/dist/commons/math/

プロジェクト管理はMavenを使うのが推奨のようだが、まあ数値計算のお試しなので普通のJavaプロジェクトでやってみる。

プロジェクトを作成して、その名前を右クリックしてビルド・パス→外部アーカイブの追加でダウンロードしたjarファイルを指定する。

Java_math01

javadocもダウンロードされるのでライブラリのオプション→Javadocロケーションのここに入れるとよさそう。

Java_math02

ではまずは準備として複素行列の定義、加減乗、トレースのような簡単なものをやってみる。ちなみにFieldMatrixのところを全部RealMatrixすればもっと簡単に実行列の計算ができる。

Java_math03


import org.apache.commons.math3.complex.*;
import org.apache.commons.math3.linear.FieldMatrix;
import org.apache.commons.math3.linear.MatrixUtils;

public class MatrixCalc {
    public static void main(String[] args) {
        Complex[][] a_array =
            {
                {new Complex(1.0, 2.0), new Complex(3.0, 4.0)},
                {new Complex(5.0, 6.0), new Complex(7.0, 8.0)}
            };
        Complex[][] b_array =
            {
                {new Complex(9.0, 10.0), new Complex(11.0, 12.0)},
                {new Complex(13.0, 14.0), new Complex(15.0, 16.0)}
            };
        var a = MatrixUtils.createFieldMatrix(a_array);
        var b = MatrixUtils.createFieldMatrix(b_array);
       
        DisplayMatrix(a.add(b));
        DisplayMatrix(a.subtract(b));
        DisplayMatrix(a.multiply(b));
        System.out.println(a.getTrace());
    }
    static void DisplayMatrix(FieldMatrix<Complex> m)  {
        for (int i = 0; i < m.getRowDimension(); i++) {
            System.out.print("[");
            for (int j = 0; j < m.getColumnDimension(); j++) {
                System.out.print(m.getEntry(i, j));
                if (j < m.getColumnDimension() - 1) {
                    System.out.print(", ");
                }
            }
            System.out.println("]");
        }
       
    }
}

ちゃんと結果が
[(10.0, 12.0), (14.0, 16.0)]
[(18.0, 20.0), (22.0, 24.0)]
[(-8.0, -8.0), (-8.0, -8.0)]
[(-8.0, -8.0), (-8.0, -8.0)]
[(-28.0, 122.0), (-32.0, 142.0)]
[(-36.0, 306.0), (-40.0, 358.0)]
(8.0, 10.0)
と出力された。ということで

高周波&数値計算関係記事リンク集

の例をやっていく。

グラフのプロットはJFreeChartを使うことにした。これも上と同じくビルド・バスの追加でOK。
https://www.jfree.org/jfreechart/

こちらなどを全面的に参考にしている。

http://javadrive.s25.xrea.com/jfreechart/index.html

 

« 高周波・RFニュース 2025年8月25日 everythingRFが記事やホワイトペーパーを学習させた生成AI The RF AI Expertを発表、2xThru法について聞いてみた。Oakley x Meta HSTNsスマートグラスをiFixitが分解、Qorvoの電源管理eBook、QuectelのISM向けアンテナ | トップページ | 高周波・RFニュース 2025年8月26日 everythingRFマガジン最新刊発行、Samsung Galaxy Z Flip7分解動画、5Gミリ波AiPはやっぱり1個、SONY Xperia 1VII分解動画、RFは同軸じゃなくてフレキ、0Ω抵抗解説、PlayerDataのスポーツトラッカーにNordicのSoC,PMICが採用 »

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

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

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

コメント

コメントを書く

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

« 高周波・RFニュース 2025年8月25日 everythingRFが記事やホワイトペーパーを学習させた生成AI The RF AI Expertを発表、2xThru法について聞いてみた。Oakley x Meta HSTNsスマートグラスをiFixitが分解、Qorvoの電源管理eBook、QuectelのISM向けアンテナ | トップページ | 高周波・RFニュース 2025年8月26日 everythingRFマガジン最新刊発行、Samsung Galaxy Z Flip7分解動画、5Gミリ波AiPはやっぱり1個、SONY Xperia 1VII分解動画、RFは同軸じゃなくてフレキ、0Ω抵抗解説、PlayerDataのスポーツトラッカーにNordicのSoC,PMICが採用 »

最近の記事

2026年2月
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

最近のコメント

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