Вот что я написал: это классическое упражнение по интерполяции, которое я уже закончил и отправил. Мне было интересно, если там был другой (больше) способ ...Сумма абсолютных значений многочленов с python numpy
q
является список поплавков (точки интерполяции)
i
является индексом Лагранжа многочлен
x
является точкой где оценивается:
def l(q,i,x):
poly=1.0
for j,p in enumerate(q):
if j==i:
continue
poly *=(x-p)/(q[i]-p)
return poly
Тогда есть функция, на которой я работаю:
def Lambda(q,x):
value=0.0
for j in range(0,len(q)):
value+=abs(l(q,j,x))
return value
Теперь я могу использовать некоторые подпрограммы python, чтобы найти его максимальное значение в интервале [0,1], и я это сделал. В питоне есть полиномиальный модуль, с помощью которого можно легко повторно определить л:
import numpy.polynomial.polynomial as P
def l_poly(q,i):
poly = []
for j,p in enumerate(q):
if j==i:
continue
poly.append(p/(q[i]-p))
return P.polyfromroots(poly)
Я хотел бы сделать то же самое с Lambda
, так что я могу найти свой максимум с помощью встроенного в функции от (найти нули и т. д. и т. д.). Проблема в том, что это сумма abs(polynomials)
. Есть ли способ сделать это? Или для смешивания производной полинома и производной от abs(...)
?
Вам нужен 'abs (Poly1) + abs (Poly2) + abs (Poly3) ...' или 'abs (Poly1 + Poly2 + Poly3 ...)'? – MackM
Я не знаю, возможно ли это, но, как вы видите, функция abs (poly1) + abs (poly2) и т. Д. Но, возможно, библиотека полиномов просто не поддерживает ее ... – GivAlz