我想根据第4天给定的P1点将绿色曲线沿Y轴上下(或向下)移动。我想知道如何才能基于此预测P2点原始曲线(如果已移动)。
我知道绿色曲线具有以下公式:
0.000371 x^3 - 0.01274 x^2 + 0.1428 x - 0.02804
我需要解决两点:
1-如何根据P1移动绿色曲线。
2-计算P2作为移动的绿色曲线的投影。
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)
我希望有人能帮助我!
:)
谢谢!
答案 0 :(得分:1)
p1
是点P1的y坐标。import numpy as np
y = np.array(y) - y[3] + p1
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的计算。