Visual C# (C_sharp)の数学ライブラリ Math.NET Numericsを使う(4) 多項式フィッティングをして、Array.ConvertAllで一括でフィッティングデータを得る。
その(1)~(3)でははMath.NET numericsを使って
Visual C# (C_sharp)の数学ライブラリ Math.NET Numericsを使う(1) 複素行列を定義して一次方程式や逆行列、行列式などを計算する。
Visual C# (C_sharp)の数学ライブラリ Math.NET Numericsを使う(2) 補間を行う(Interpolate) リニア、3次スプライン、有理関数などいろいろ使える。
というのをやってみた。今回はその(4)、多項式フィッティング。
これは簡単で、Fit.Polynomial(xの配列, yの配列 , 次数);とするだけ。ただ、これで多項式の係数は得られるがそれをまたデータに直すのを効率的にはどうやるんだ?と悩む(というか普通にfor使うのがなんかもったいないというか)。もっといい方法があるかもしれないが、Polynomial.Evaluate(x, p) と Array.ConvertAllを使うことにした。
例題はいつのものようにNumpyから。
https://numpy.org/doc/stable/reference/generated/numpy.polyfit.html
計算部分はこんな感じで、
結果はこんな感じ。
なるほどこれは簡単。
全ソースコードはこちら:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
// 初期化
chart1.Series.Clear();
chart1.Titles.Clear();
chart1.Legends.Clear();
chart1.ChartAreas.Clear();
}
private void button1_Click(object sender, EventArgs e)
{
Title title = new Title("多項式フィッティング", Docking.Top);
chart1.Titles.Add(title);
Legend legend = new Legend();
chart1.Legends.Add(legend);
Series series1 = new Series();
series1.ChartType = SeriesChartType.Point;
series1.BorderWidth = 1;
series1.LegendText = "元データ";
chart1.Series.Add(series1);
Series series2 = new Series();
series2.ChartType = SeriesChartType.Line;
series2.BorderWidth = 1;
series2.LegendText = "3次フィッティング";
chart1.Series.Add(series2);
chart1.ChartAreas.Add("");
Axis axisX = new Axis();
axisX.Title = "X軸";
axisX.Minimum = -2;
axisX.Maximum = 6;
axisX.Interval = 1;
chart1.ChartAreas[0].AxisX = axisX;
Axis axisY = new Axis();
axisY.Title = "Y軸";
axisY.Minimum = -2;
axisY.Maximum = 2;
axisY.Interval = 0.5;
chart1.ChartAreas[0].AxisY = axisY;
double[] x = { 0.0, 1.0, 2.0, 3.0, 4.0, 5.0 };
double[] y = { 0.0, 0.8, 0.9, 0.1, -0.8, -1.0 };
double[] p = Fit.Polynomial(x, y , 3);
double[] xfit = Generate.LinearSpaced(100, -2, 6);
double[] yfit = Array.ConvertAll(xfit , xtemp => Polynomial.Evaluate(xtemp, p));
for (int i = 0; i < x.Length; i++)
{
series1.Points.AddXY(x[i], y[i]);
}
for (int i = 0; i < xfit.Length; i++)
{
series2.Points.AddXY(xfit[i], yfit[i]);
}
}
Visual C#でMath.NET Numericsを使うシリーズ全編はこちらから
« 瓢箪山稲荷神社でお参り。 | トップページ | 展覧会 岡本太郎@大阪中之島美術館を観てきた。面白かった!幻の作品A,B,Cや巨大な明日の神話など絵画も多いが造形物がやはり気になる(ノンとか)。近鉄バファローズのデザインもされてた!そして午後の日のぬいぐるみを買ってきた。 »
「パソコン・インターネット」カテゴリの記事
- 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)
« 瓢箪山稲荷神社でお参り。 | トップページ | 展覧会 岡本太郎@大阪中之島美術館を観てきた。面白かった!幻の作品A,B,Cや巨大な明日の神話など絵画も多いが造形物がやはり気になる(ノンとか)。近鉄バファローズのデザインもされてた!そして午後の日のぬいぐるみを買ってきた。 »




コメント