gpt4 book ai didi

python - Python : as a result matematical formula 中的拉格朗日插值

转载 作者:太空宇宙 更新时间:2023-11-03 11:28:48 31 4
gpt4 key购买 nike

我正在尝试对几个点使用拉格朗日插值法。因此我需要数学公式,例如:

Lx=[1,2,3],
Ly=[1,4,9],
result = x^2

取而代之的是 "-4.0*X*(-0.5*X - 1.0)*(-0.2*X + 0.2)*(-0.142857142857143*X +..."

例如,当我用 5 代替 X(第 12 行)时,我得到“25”,正确答案。有谁能够帮助我?

import sympy 
def Lagrange (Lx, Ly):
X=sympy.symbols('X')
if len(Lx)!= len(Ly):
print "ERROR"
return 1
y=float(0.0)
for k in range ( len(Lx) ):
t=float(1.0)
for j in range ( len(Lx) ):
if j != k:
t=t* ( (X-Lx[j]) / float(Lx[k]-Lx[j]) ) # when I put number, OK
y+= t*Ly[k]
return y

Lx=[-4,-2,0,1,3]
Ly=[16,4,0,1,9]
print Lagrange(Lx,Ly)

最佳答案

这可能是由于 float 舍入。化简给出:

In [10]: sympy.simplify(Lagrange(Lx,Ly))
Out[10]: X*(1.85037170770859e-17*X**2 + 1.0*X - 1.11022302462516e-16)

这基本上是 X**2。尝试摆脱那些 float 转换:

def Lagrange (Lx, Ly):
X=sympy.symbols('X')
if len(Lx)!= len(Ly):
print "ERROR"
return 1
y=0
for k in range ( len(Lx) ):
t=1
for j in range ( len(Lx) ):
if j != k:
t=t* ( (X-Lx[j]) /(Lx[k]-Lx[j]) )
y+= t*Ly[k]
return y

给我:

In [30]: Lx=[-4,-2,0,1,3]
In [31]: Ly=[16,4,0,1,9.]
In [32]: print Lagrange(Lx,Ly)
Out[32]: 1.0*X**2

关于python - Python : as a result matematical formula 中的拉格朗日插值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27744475/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com