[英]Approximation of n points to the curve with the best fit
我有n個點(2D)的列表:P1(x0,y0),P2(x1,y1),P3(x2,y2)…點滿足每個點具有唯一坐標以及每個點xi的坐標的條件,yi> 0並且xi,yi是整數。
任務是編寫一個算法來近似這些點
y = | Acos (Bx) |
y = | Acos (Bx) |
最合適(接近或等於100%) 我想用C#編寫程序,但是對我來說最大的問題是找到合適的算法。 有人能幫助我嗎?
將B
作為獨立參數,可以使用最小二乘法求解A
的擬合,並計算擬合殘差。
殘差函數很復雜,具有多個不同值的最小值,並且行為不規則。 無論如何,如果Xi
是整數,則該函數是周期性的,並且周期與Xi
的LCM
有關。
下圖顯示了在給定采樣點下B
的擬合殘差在0
到2
和0
到10
。
基於近似搜索的工作原理,我將在C ++中嘗試以下方法:
// (global) input data
#define _n 100
double px[_n]; // x input points
double py[_n]; // y input points
// approximation
int ix;
double e;
approx aa,ab;
// min max step recursions ErrorOfSolutionVariable
for (aa.init(-100,+100.0,10.00,3,&e);!aa.done;aa.step())
for (ab.init(-0.1,+ 0.1, 0.01,3,&e);!ab.done;ab.step())
{
for (e=0.0,ix=0;ix<_n;ix++) // test all measured points (e is cumulative error)
{
e+=fabs(fabs(aa.a*cos(ab.a*px[ix]))-py[ix]);
}
}
// here aa.a,ab.a holds the result A,B coefficients
它使用我上面鏈接的問題中的approx
類
min,max
和step
范圍以匹配數據集 您還應該添加輸入點和輸出曲線的圖,以查看是否接近解。 如果沒有有關輸入點的更多信息,則很難更具體。 您可以更改差值計算e
來匹配任何所需的方法,這只是絕對差值的總和(可以使用最小二乘或其他形式...)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.