これが私が書いたものです。これは、補間に関する古典的な演習であり、すでに完成して送信しています。別の(より長い)方法があるかどうか疑問に思っていました...
q
float のリスト (補間点)
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] の最大値を見つけることができました。Python には、l を簡単に再定義できる多項式モジュールがあります。
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(...)
?の導関数を混合します。