Clojure(JVMで動くLISP系)でJavaの数値計算ライブラリApache Commons Mathを使う(1) 複素行列を定義してLU分解で一次方程式や逆行列、行列式などを計算する。Javaの配列とClojureの配列が全然違うのでちょっと面倒。
今回はこの例をClojureに移植する。
Javaの数値計算ライブラリApache Commons Mathを使う(1) 複素行列を定義してLU分解で一次方程式や逆行列、行列式などを計算する。Swingを使ってウィンドウに表示する。
ClojureはJavaのコードに変換しているのではなく、あくまでJVM上で動くものなので配列も違う。なのでそのまま渡すことができずに、Javaの配列に変換するinto-arrayを多用しないといけない。全然LISPぽくないJavaぽいコードになってしまうがこんな感じでLU分解で一次方程式や逆行列、行列式などを計算できる。
(ns mini.LinearAlgebra (:import [org.apache.commons.math3.complex Complex]
[org.apache.commons.math3.linear MatrixUtils FieldLUDecomposition]))
(defn matrixPrint [mat n]
(dotimes [i n]
(dotimes [j n]
(print (str (.getEntry mat i j) " ")))
(println "")))
(defn vectorPrint [vec n]
(dotimes [i n]
(println (str (.getEntry vec i) " "))))
(def m
(MatrixUtils/createFieldMatrix
(into-array
[(into-array [(Complex. 2.0 0.0) (Complex. 1.0 0.0) (Complex. 1.0 0.0)])
(into-array [(Complex. -1.0 0.0) (Complex. 1.0 0.0) (Complex. -1.0 0.0)])
(into-array [(Complex. 1.0 0.0) (Complex. 2.0 0.0) (Complex. 3.0 0.0)])])))
(def v
(MatrixUtils/createFieldVector
(into-array [(Complex. 2.0 0.0) (Complex. 3.0 0.0) (Complex. -10.0 0.0)])))
(def decomp (FieldLUDecomposition. m))
(def solver (.getSolver decomp))
(def solution (.solve solver v))
(vectorPrint solution 3)
(println "")
(println (str (.getDeterminant decomp)))
(println "")
(def inv (.getInverse solver))
(matrixPrint inv 3)
|
実行すると
« 東京油組総本店ドーチカ組で辛味噌油そばW盛り スペシャルトッピングAをいただく。底に辛味噌があるのでよく混ぜて食べるとかなりいい辛さに。卓上の辛味を入れるとさらに辛くできる。 | トップページ | RF Weekly Digest (Google AI Studio BuildによるAIで高周波・RF情報の週刊まとめアプリ) 2025/10/27-2025/11/3 »
「パソコン・インターネット」カテゴリの記事
- 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)
- Google AI StudioのBuild(アプリを作る機能)で高周波・RFニュースを1週間分まとめるアプリを作った(最終版) 私がいつも調査しているサイト67個を全部入れて調べてもらうようにした。これでとりあえず完成かな。QorvoとSkyworksの合併も拾ってくれた。(2025.10.30)
「学問・資格」カテゴリの記事
- 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)
- トランジスタ技術2025年12月号 電波と回路のススメMHz~GHzを操る!を買った。GHzはアナデバのICを使った信号発生器(信号検出付きなのが面白い)のみだったが、マルチパス、高調波で周波数拡大、6.78MHzのワイヤレス給電、オシロでSDRなど話題も豊富で面白かった。(2025.11.11)
- 高周波・RFニュース 2025年11月10日 Qorvoらが参加する5G, 6Gオンラインパネル開催、SkyworksがBAWを使った高性能クロック発表、Nokiaベル研とKDDIが6Gで協業、次世代FWAのアンテナ設計解説(2025.11.10)
「日記・コラム・つぶやき」カテゴリの記事
- 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)
- トランジスタ技術2025年12月号 電波と回路のススメMHz~GHzを操る!を買った。GHzはアナデバのICを使った信号発生器(信号検出付きなのが面白い)のみだったが、マルチパス、高調波で周波数拡大、6.78MHzのワイヤレス給電、オシロでSDRなど話題も豊富で面白かった。(2025.11.11)
- 高周波・RFニュース 2025年11月10日 Qorvoらが参加する5G, 6Gオンラインパネル開催、SkyworksがBAWを使った高性能クロック発表、Nokiaベル研とKDDIが6Gで協業、次世代FWAのアンテナ設計解説(2025.11.10)
« 東京油組総本店ドーチカ組で辛味噌油そばW盛り スペシャルトッピングAをいただく。底に辛味噌があるのでよく混ぜて食べるとかなりいい辛さに。卓上の辛味を入れるとさらに辛くできる。 | トップページ | RF Weekly Digest (Google AI Studio BuildによるAIで高周波・RF情報の週刊まとめアプリ) 2025/10/27-2025/11/3 »



コメント