Я пытаюсь найти или написать какой-нибудь код, который может дать мне область между двумя строками, и если нижняя пересекает верхнюю, учитывается отрицательная область.Для этого (не могу опубликовать изображение :(). Я написал код, но не уверен на 100% в ответах. Я также пытался просто использовать numpy-функцию np.trapz.
def TrapzCn(n):
Uy = Upper(n)
Ly = Lower(n)
xc = Open(L[0])
Top = np.trapz(Uy,x=xc[:10])
Bottom = np.trapz(Ly,x=xc[:10])
return(Top + Bottom)
ивот мой
def Cn(n):
Uy = Upper(n)
xc = Open(L[0])
Ly = Lower(n)
for i in range(len(Ly)):
Ly[i] = float(Ly[i])
Uy[i] = float(Uy[i])
A = 0
i = 0
while i+1 < len(Uy):
A1 = (xc[i+1] - xc[i]) * ((Uy[i] + Uy[i+1])/2)
A2 = (xc[i+1] - xc[i]) * ((Ly[i] + Ly[i+1])/2)
if A1 > A2 and Uy[i] < 0.0 :
A += abs(A1) + abs(A2)
elif A1 > A2 and ((Uy[i] + Uy[i+1] )/2)> 0:
A += abs(A1) - abs(A2)
elif A1 < A2 and A1 < 0.0 :
A -= (abs(A2) - abs(A1))
i += 1
return(A)
где функции Upper и Lower просто распаковывают мои данные, поэтому мой главный вопрос: учитывает ли функция np.trapz кривую, удваивающуюся назад, а также отрицательную областьони пересекаются. А если нет, то мой?