Clojure(JVMで動くLISP系)でJavaの数値計算ライブラリApache Commons Mathを使う(4) 多項式フィッティング(今回は3次)をしてJFreeChartでプロットする。
今回はこの例題。
Javaの数値計算ライブラリApache Commons Mathを使う(4) 多項式フィッティング(今回は3次)をしてJFreeChartでプロットする。
コードはこんな感じで。
(ns mini.polynomialFit
(:import [javax.swing JFrame]
[java.awt BorderLayout]
[org.jfree.chart ChartFactory ChartPanel]
[org.jfree.chart.plot PlotOrientation]
[org.jfree.chart.renderer.xy XYLineAndShapeRenderer]
[org.jfree.chart.axis NumberAxis]
[org.jfree.data.xy XYSeries XYSeriesCollection]
[org.apache.commons.math3.analysis.polynomials PolynomialFunction]
[org.apache.commons.math3.fitting PolynomialCurveFitter WeightedObservedPoints]))
(defn create-data []
(let [x (double-array [0.0 1.0 2.0 3.0 4.0 5.0])
y (double-array [0.0 0.8 0.9 0.1 -0.8 -1.0])
obs (WeightedObservedPoints.)]
;; add original points
(dotimes [i (alength x)]
(.add obs (aget x i) (aget y i)))
;; fit cubic polynomial
(let [fitter (PolynomialCurveFitter/create 3)
coeff (.fit fitter (.toList obs))
poly (PolynomialFunction. coeff)
n 600
xval (double-array n)
yval (double-array n)]
(dotimes [i n]
(let [xi (+ -2.0 (* (/ (- 6.0 -2.0) (dec n)) i))]
(aset xval i xi)
(aset yval i (.value poly xi))))
;; build dataset
(let [data (XYSeriesCollection.)
s1 (XYSeries. "Original Points")
s2 (XYSeries. "Cubic Fitting")]
(dotimes [i (alength x)]
(.add s1 (aget x i) (aget y i)))
(dotimes [i n]
(.add s2 (aget xval i) (aget yval i)))
(.addSeries data s1)
(.addSeries data s2)
data))))
(defn create-chart []
(let [chart (ChartFactory/createXYLineChart
"Polynomial Fitting"
"x"
"y"
(create-data)
PlotOrientation/VERTICAL
true
false
false)
plot (.getXYPlot chart)
renderer (XYLineAndShapeRenderer.)]
;; set styles
(let [y-axis ^NumberAxis (.getRangeAxis plot)]
(.setRange y-axis -2.0 2.0))
(.setSeriesLinesVisible renderer 0 false)
(.setSeriesShapesVisible renderer 1 false)
(.setRenderer plot renderer)
chart))
(defn -main [& _]
(let [frame (JFrame. "Cubic Polynomial Fitting")
chart (create-chart)
panel (ChartPanel. chart)]
(.setDefaultCloseOperation frame JFrame/EXIT_ON_CLOSE)
(.setBounds frame 10 10 640 480)
(.add (.getContentPane frame) panel BorderLayout/CENTER)
(.setVisible frame true)))
(-main)
|
結果はこちら。
« 「成瀬は都を駆け抜ける」を読んだ。大学も学部も私と一緒になった成瀬。とにかくキャラが強くてぶれなくて面白い。よく知っている場所がたくさん出るのも森見登美彦作品が出るのもいい。第一作の最初のセリフが驚く場所で出て来たり。最後はやっぱり島崎と滋賀でグッとくる。 | トップページ | 高周波・RFニュース 2025年12月13日 5G Americasが米国の5G普及率99%と発表、ZTEが800G Metro Transport Network (MTN) 標準化主導、NordicのnRF9151モジュールがSkylo認証取得、不完全なViaの電気特性解説、QualcommがRISC-VのVentana Micro Systems買収など »
「パソコン・インターネット」カテゴリの記事
- RF Weekly Digest (Codex(GPT-5.5)で作ったOllama経由のgemma4-26B-A4B QAT、DuckDuckGo Searchを使った高周波・RF情報の週刊まとめアプリ)2026/7/5-7/12(2026.07.12)
- RF Weekly Digest (Codex(GPT-5.5)で作ったOllama経由のgemma4-26B-A4B QAT、DuckDuckGo Searchを使った高周波・RF情報の週刊まとめアプリ)2026/6/28-7/5(2026.07.05)
- Ornith-1.0-35B(llama.cppで4ビット量子化使用)に、電子レンジの動作原理(2.45GHzは水分子の共振周波数でない)と隕石が大気圏突入で燃える原理(摩擦熱ではない)を聞くと、誘電緩和と断熱圧縮について正しく答えられた。(2026.07.03)
- Ornith-1.0-35B(llama.cppで4ビット量子化使用、DuckDuckGo Searchも)でPythonのscikit-rfを使ってTouchstoneフォーマットのSパラメータファイルを読んでdB, 位相, スミスチャート, TDRを表示するGUIアプリを作成。足りない情報は検索してプランも立ててまずまずの出来。(2026.07.02)
「学問・資格」カテゴリの記事
- RF Weekly Digest (Codex(GPT-5.5)で作ったOllama経由のgemma4-26B-A4B QAT、DuckDuckGo Searchを使った高周波・RF情報の週刊まとめアプリ)2026/7/5-7/12(2026.07.12)
- 高周波・RFニュース 2026年7月9日 KeysightとIEMNが6Gに向けてSubTHzのRIS評価、ローデ・シュワルツとチャイナモバイルが生成AIユーザーエクスペリエンステスト、6G MRSS解説記事、Sパラメータと分布インピーダンス解説記事(2026.07.09)
- 高周波・RFニュース 2026年7月8日 Mini-Circuitsがアディティブフェイズノイズについて解説、ローデシュワルツが品質検査用ミリ波スキャナ発表、UMSが27.5-31GHz 25Wパワーアンプ発表、HuaweiがAI-centricネットワークのマネタイズに向けたロードマップ発表など(2026.07.08)
- RF Weekly Digest (Codex(GPT-5.5)で作ったOllama経由のgemma4-26B-A4B QAT、DuckDuckGo Searchを使った高周波・RF情報の週刊まとめアプリ)2026/6/28-7/5(2026.07.05)
「日記・コラム・つぶやき」カテゴリの記事
- RF Weekly Digest (Codex(GPT-5.5)で作ったOllama経由のgemma4-26B-A4B QAT、DuckDuckGo Searchを使った高周波・RF情報の週刊まとめアプリ)2026/7/5-7/12(2026.07.12)
- 高周波・RFニュース 2026年7月9日 KeysightとIEMNが6Gに向けてSubTHzのRIS評価、ローデ・シュワルツとチャイナモバイルが生成AIユーザーエクスペリエンステスト、6G MRSS解説記事、Sパラメータと分布インピーダンス解説記事(2026.07.09)
- 高周波・RFニュース 2026年7月8日 Mini-Circuitsがアディティブフェイズノイズについて解説、ローデシュワルツが品質検査用ミリ波スキャナ発表、UMSが27.5-31GHz 25Wパワーアンプ発表、HuaweiがAI-centricネットワークのマネタイズに向けたロードマップ発表など(2026.07.08)
- RF Weekly Digest (Codex(GPT-5.5)で作ったOllama経由のgemma4-26B-A4B QAT、DuckDuckGo Searchを使った高周波・RF情報の週刊まとめアプリ)2026/6/28-7/5(2026.07.05)
« 「成瀬は都を駆け抜ける」を読んだ。大学も学部も私と一緒になった成瀬。とにかくキャラが強くてぶれなくて面白い。よく知っている場所がたくさん出るのも森見登美彦作品が出るのもいい。第一作の最初のセリフが驚く場所で出て来たり。最後はやっぱり島崎と滋賀でグッとくる。 | トップページ | 高周波・RFニュース 2025年12月13日 5G Americasが米国の5G普及率99%と発表、ZTEが800G Metro Transport Network (MTN) 標準化主導、NordicのnRF9151モジュールがSkylo認証取得、不完全なViaの電気特性解説、QualcommがRISC-VのVentana Micro Systems買収など »



コメント