首页 > 解决方案 > Python 最佳拟合曲线以最小化最大偏差

问题描述

如何最好地拟合两组曲线(x、y 坐标)以最小化它们之间的最大偏差?可能存在一个功能,但我找不到任何合适的东西。我确实认为 Chebycev 是正确的方法,但是从我从 scipy 中尝试过的方法来看,它并没有达到我想要做的。

#Shortened example curves
import matplotlib.pyplot as plt
    
nX = [-0.0187700, 0.0311900, 0.0811400, 0.1311000, 0.1410600, 0.2309700, 0.2809200, 0.3308600, 0.3807900, 0.4307300]
nY = [-1.9880000, -1.9859500, -1.9836300, -1.9815700, -1.9757700, -1.9766800, -1.9744000, -1.9720200, -1.9693900, -1.9670100]
oX = [-0.0187100, 0.0312500, 0.0812100, 0.1311600, 0.1811100, 0.2310600, 0.2810100, 0.3309500, 0.3808900, 0.4308300]
oY = [-1.9893900, -1.9873300, -1.9852100, -1.9830500, -1.9808300, -1.9785500, -1.9762300, -1.9738500, -1.9714100, -1.9689300]
        
maxDev = 0
        
for i in range(len(nX)):
   dev = ((nX[i]-oX[i])*(nX[i]-oX[i])) + ((nY[i]-oY[i])*(nY[i]-oY[i]))
      if dev > maxDev:
          maxDev = dev
          pointNo = i
        
            
print(pointNo, maxDev)
plt.figure()
plt.plot(nX, nY, 'ko')
plt.plot(oX, oY, 'r-')
plt.plot(oX[pointNo], oY[pointNo], 'x') #best-fit so that this error gets as small as possible?
plt.show()

我希望这个例子足以解释我想要完成的事情。甚至这里根本不合适。还有,如何检索 X、Y 平移和旋转值?

标签: pythonscipybest-fit-curve

解决方案


推荐阅读