Python曲线拟合

时间:2019-06-06 13:13:07

标签: python jupyter-notebook

我想根据第4天给定的P1点将绿色曲线沿Y轴上下(或向下)移动。我想知道如何才能基于此预测P2点原始曲线(如果已移动)。

我知道绿色曲线具有以下公式:

0.000371 x^3 - 0.01274 x^2 + 0.1428 x - 0.02804

我需要解决两点:

1-如何根据P1移动绿色曲线。

2-计算P2作为移动的绿色曲线的投影。

enter image description here

import numpy as np
import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5,6,7,8,9,10,11,12,13,14,15,16,17]
y = [0.1,0.2,0.3,0.38,0.41,0.46,0.475,0.478,0.486,0.489,0.493,0.49,0.495,0.498,0.511,0.5124,0.53]
plt.plot(x, y, 'x-')

# calculate polynomial
z = np.polyfit(x, y, 3)
f = np.poly1d(z)

# calculate new x's and y's
x_new = np.linspace(x[0], x[-1], 50)
y_new = f(x_new)

plt.plot(x,y,'o', label='original data')
plt.plot(x_new, y_new, label='fitted line')
plt.legend()
plt.show()

print(f)


# function to be defined :
p1 = 0.38 
p2 = findP2(f,p1) # to build
print(p2) 

我希望有人能帮助我!

:)

谢谢!

2 个答案:

答案 0 :(得分:1)

  1. 要移动绿色曲线,首先需要移动数据。从您的代码中,我猜想变量p1是点P1的y坐标。
import numpy as np
y = np.array(y) - y[3] + p1
  1. p2似乎只是polyfit在P2的x坐标处的值。

如果此答案不正确,请给我更多信息。

答案 1 :(得分:1)

您可以在'y'数据中添加一个常数,以向上/向下移动数据。但实际上,您只是向拟合函数添加一个常量。因此,由于“ z”是拟合多项式,因此您可以将偏移量添加到该多项式的常数项(我不知道这是z [0]还是z [3],假设z [3])。所以 z[3] += (y[3] - p1)。移位在整个函数上是相同的,因此通过从y值p2 = y[15] - (y[3] - p1)中减去移位即可轻松完成p2的计算。