我试图做一个拉格朗日函数,但当我打印它不显示它会如何,如果乘法发生。我的代码如下:
import numpy as np
from matplotlib.pyplot import plot, show, grid
import numpy.polynomial.polynomial as poly
import matplotlib.pyplot as plt
from scipy.interpolate import lagrange
from sympy import symbols, Eq
x1 = [120, 180, 270, 300] # x
y1 = [246, 351, 514, 572] # y
def Lagrange(Lx, Ly):
x = symbols('x')
y = 0
for k in range(len(Lx)):
p = 1
for j in range(len(Lx)):
if j != k:
p = p * ((x - Lx[j]) / (Lx[k] - Lx[j]))
y += p * Ly[k]
return y
print(Lagrange(x1, y1))
poly=lagrange(x1,y1)
print(poly)
在输出中,我得到以下内容:
246*(5/3 - x/180)*(9/5 - x/150)*(3 - x/60) + 351*(5/2 - x/120)*(3 - x/90)*(x/60 - 2) + 514*(10 - x/30)*(x/150 - 4/5)*(x/90 - 2) + 572*(x/180 - 2/3)*(x/120 - 3/2)*(x/30 - 9)
我更喜欢这样的东西
3 2
3.395e-06 x - 0.001528 x + 1.976 x + 25
2条答案
按热度按时间bpzcxfmw1#
使用
simplify
函数siv3szwd2#
看起来你想要的是得到扁平化的表达式(没有括号),可能是浮点数的低精度表示。这是通过扩展和求值来完成的: