Основная цель этого сценария - получить среднюю линию развала аэродинамического профиля из ряда точек. Первый шаг - организовать точки и найти среднюю точку между ними. Их из этих точек получают среднюю функцию, используя polyval. Проблема возникает сзади, где средняя линия развала не проходит между двумя конечными точками.
xcordcb = back.iloc[:, 0]
ycordcb = back.iloc[:, 1]
xcordcb = xcordcb.values
xcordcb = xcordcb.astype(float)
ycordcb = ycordcb.values
ycordcb = ycordcb.astype(float)
elemxb = np.count_nonzero(xcordcb) - 1
i = 0
a = 0
avgxcordcb = np.array([])
avgycordcb = np.array([])
for i in range(elemxb):
if ((abs(ycordcb[0+a]))-(abs(ycordcb[1+a])) > 0.000001):
x = (xcordcb[0+a] + xcordcb[1+a])/2
y = (ycordcb[0+a] + ycordcb[1+a])/2
a = a + 1
i = i + 1
avgxcordcb = np.append(avgxcordcb, x)
avgycordcb = np.append(avgycordcb, y)
else:
a = a + 1
i = i + 1
x = np.linspace(-2, 2, 100)
mcamberlcoefb = poly.polyfit(avgxcordcb, avgycordcb, 3)
y = poly.polyval(x, mcamberlcoefb)
x = sy.Symbol('x')
meanclineTE = mcamberlcoefb[0] + mcamberlcoefb[1]*x + mcamberlcoefb[2]*x**2
Любая помощь или идеи будут очень признательны.