Visual C# (C_sharp)の数学ライブラリ Math.NET Numericsを使う(2) 補間を行う(Interpolate) リニア、3次スプライン、有理関数などいろいろ使える。
さて、前回はMath.NET Numericsを使って準備と行列の計算をやってみた。
Visual C# (C_sharp)の数学ライブラリ Math.NET Numericsを使う(1) 複素行列を定義して一次方程式や逆行列、行列式などを計算する。
今回は補間。
https://numerics.mathdotnet.com/Interpolation.html
を見るとかなりいろんな方法が使える。推奨されているのはIf unsure, we recommend using RationalWithoutPoles for most cases.
だそうなのでそれでやってみる。例題は、、、Numpyのやつを使おう。
https://numpy.org/doc/stable/reference/generated/numpy.interp.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.Line;
series1.BorderWidth = 1;
series1.LegendText = "補間データ1";
chart1.Series.Add(series1);
Series series2 = new Series();
series2.ChartType = SeriesChartType.Point;
series2.MarkerSize = 10;
series2.LegendText = "元データ";
chart1.Series.Add(series2);
Series series3 = new Series();
series3.ChartType = SeriesChartType.Line;
series3.BorderWidth = 1;
series3.LegendText = "補間データ2";
chart1.Series.Add(series3);
chart1.ChartAreas.Add("");
Axis axisX = new Axis();
axisX.Title = "X軸";
axisX.Minimum = 0;
axisX.Maximum = 7;
axisX.Interval = 0.5;
chart1.ChartAreas[0].AxisX = axisX;
Axis axisY = new Axis();
axisY.Title = "Y軸";
axisY.Minimum = -1;
axisY.Maximum = 1;
axisY.Interval = 0.2;
chart1.ChartAreas[0].AxisY = axisY;
double[] x = Generate.LinearSpaced(10, 0.0, 2.0 * Math.PI);
double[] y = Generate.Map(x, Math.Sin);
var InterpFunction = Interpolate.RationalWithoutPoles(x, y);
var InterpFunction2 = Interpolate.Linear(x, y);
double[] xval = Generate.LinearSpaced(50, 0.0, 2.0 * Math.PI);
double[] yinterp = new double[xval.Length];
double[] yinterp2 = new double[xval.Length];
for (int i = 0; i < xval.Length; i++)
{
yinterp[i] = InterpFunction.Interpolate(xval[i]);
yinterp2[i] = InterpFunction2.Interpolate(xval[i]);
}
// データ設定
for (int i = 0; i < xval.Length; i++)
{
series1.Points.AddXY(xval[i], yinterp[i]);
series3.Points.AddXY(xval[i], yinterp2[i]);
}
for (int i = 0; i < x.Length; i++)
{
series2.Points.AddXY(x[i], y[i]);
}
}
}
« 新型コロナウイルス、日本の陽性者数&ワクチン接種者数総計をプロット&中国、韓国、アメリカ、ドイツ、フランス、イギリスの陽性者数もプロット(7/18更新)日本が垂直に増加してきた。どこもBA.5で増えているが日本が一番急。とうとう第7波か…もう1028万人累積でかかっている。 | トップページ | Visual C# (C_sharp)の数学ライブラリ Math.NET Numericsを使う(3) 高速フーリエ変換(FFT)を実行する。FourierOptionsにMatlabとNumerical Recipesがあるのが意外。 »
「パソコン・インターネット」カテゴリの記事
- 高周波回路シミュレータQucsStudioがuSimmicsに名称変更し、バージョンも4.8.3から5.8にアップデートされた。Qucsと区別するためだそうだ。また、Pythonの高周波用ライブラリscikit-rfもv1.5.0にバージョンアップされていた(2024.12.04)
- MATLAB Onlineで高周波基板設計用のRF PCB Toolboxを使ってみる。Coupled line バンドパスフィルタやratraceカプラが設計できる。モーメント法(MoM)や有限要素法(FEM)でちゃんと計算してくれているようだ。(2024.12.06)
- MATLAB Onlineで高周波用のRF Toolboxを使ってみる。Touchstoneファイルの読み込み、dB表示グラフ、スミスチャートなど簡単にできるし、フィルタ合成やIEEE P370 De-embedding(ZC-2xThru)も使える(MATLABで書かれたものがオリジナル)。(2024.12.05)
- MATLAB OnlineのSimulinkでローレンツ方程式をode8で計算してみる。Interface 2025年1月号でMATLAB Onlineの半年ライセンスがついてきたので。Simulinkを使うのは初めてだったが、わかりやすいSimulink入門コースを修了したのですぐできた。(2024.12.04)
- Interface2025年1月号はMATLABで1ニューロンから手作り 数学&図解でディープ・ラーニング。初歩からAlexNetの転移学習、CNNまで話題が豊富で、なんとMatlab Onlineの半年ライセンスがついてくる。Simulinkや各種toolboxも使える。早速MATLAB入門オンラインコース修了した。(2024.12.03)
「学問・資格」カテゴリの記事
- 高周波・RFニュース 2024年12月6日 NGMNが無線パフォーマンス評価フレームワーク発行、5GAAがC-V2Xのロードマップ発行、Marvellの3nm 1.6Tbps PAM4インターコネクト、Nokiaの2.4Tbps光伝送、Silicon Labsの低消費電力モジュール、Xiaomi 14T Pro分解動画(2024.12.06)
- 高周波回路シミュレータQucsStudioがuSimmicsに名称変更し、バージョンも4.8.3から5.8にアップデートされた。Qucsと区別するためだそうだ。また、Pythonの高周波用ライブラリscikit-rfもv1.5.0にバージョンアップされていた(2024.12.04)
- 日経サイエンス2025年1月号の特集 和算再発見の佐藤賢一さんの記事「算聖 関孝和の実像」に出てきた矢高に対する円弧の2乗の近似式をカシオの高精度計算サイトkeisan.casio.jpの自作式として作った。ものすごい精度であることがよくわかる。(2024.12.03)
- MATLAB Onlineで高周波基板設計用のRF PCB Toolboxを使ってみる。Coupled line バンドパスフィルタやratraceカプラが設計できる。モーメント法(MoM)や有限要素法(FEM)でちゃんと計算してくれているようだ。(2024.12.06)
- MATLAB Onlineで高周波用のRF Toolboxを使ってみる。Touchstoneファイルの読み込み、dB表示グラフ、スミスチャートなど簡単にできるし、フィルタ合成やIEEE P370 De-embedding(ZC-2xThru)も使える(MATLABで書かれたものがオリジナル)。(2024.12.05)
「日記・コラム・つぶやき」カテゴリの記事
- 高周波・RFニュース 2024年12月6日 NGMNが無線パフォーマンス評価フレームワーク発行、5GAAがC-V2Xのロードマップ発行、Marvellの3nm 1.6Tbps PAM4インターコネクト、Nokiaの2.4Tbps光伝送、Silicon Labsの低消費電力モジュール、Xiaomi 14T Pro分解動画(2024.12.06)
- 高周波回路シミュレータQucsStudioがuSimmicsに名称変更し、バージョンも4.8.3から5.8にアップデートされた。Qucsと区別するためだそうだ。また、Pythonの高周波用ライブラリscikit-rfもv1.5.0にバージョンアップされていた(2024.12.04)
- 日経サイエンス2025年1月号の特集 和算再発見の佐藤賢一さんの記事「算聖 関孝和の実像」に出てきた矢高に対する円弧の2乗の近似式をカシオの高精度計算サイトkeisan.casio.jpの自作式として作った。ものすごい精度であることがよくわかる。(2024.12.03)
- MATLAB Onlineで高周波基板設計用のRF PCB Toolboxを使ってみる。Coupled line バンドパスフィルタやratraceカプラが設計できる。モーメント法(MoM)や有限要素法(FEM)でちゃんと計算してくれているようだ。(2024.12.06)
- MATLAB Onlineで高周波用のRF Toolboxを使ってみる。Touchstoneファイルの読み込み、dB表示グラフ、スミスチャートなど簡単にできるし、フィルタ合成やIEEE P370 De-embedding(ZC-2xThru)も使える(MATLABで書かれたものがオリジナル)。(2024.12.05)
« 新型コロナウイルス、日本の陽性者数&ワクチン接種者数総計をプロット&中国、韓国、アメリカ、ドイツ、フランス、イギリスの陽性者数もプロット(7/18更新)日本が垂直に増加してきた。どこもBA.5で増えているが日本が一番急。とうとう第7波か…もう1028万人累積でかかっている。 | トップページ | Visual C# (C_sharp)の数学ライブラリ Math.NET Numericsを使う(3) 高速フーリエ変換(FFT)を実行する。FourierOptionsにMatlabとNumerical Recipesがあるのが意外。 »
コメント