def create_polynomial(y_values):
"""根据输入的y值列表生成拉格朗日插值多项式函数"""
n = len(y_values)
x_points = list(range(1, n + 1))
def interpolated_function(x):
total = 0.0
for i in range(n):
term = y_values[i]
for j in range(n):
if j != i:
term *= (x - x_points[j]) / (x_points[i] - x_points[j])
total += term
return total
return interpolated_function
input_str = input("请输入以空格分隔的数值列表(例如:1 3 5 7 9):")
y_values = list(map(float, input_str.split()))
f = create_polynomial(y_values)
print("\n生成的多项式函数验证:")
for x in range(1, len(y_values) + 1):
print(f"f({x}) = {f(x)}")
def get_polynomial_coefficients(y_values):
n = len(y_values)
x_points = list(range(1, n + 1))
coefficients = [0.0] * n
for i in range(n):
term_coefficients = [y_values[i]]
for j in range(n):
if j != i:
new_term = [0.0] * (len(term_coefficients) + 1)
for k in range(len(term_coefficients)):
new_term[k] += term_coefficients[k] * (-x_points[j])
new_term[k + 1] += term_coefficients[k]
term_coefficients = new_term
for k in range(len(term_coefficients)):
if k < len(coefficients):
coefficients[k] += term_coefficients[k]
else:
coefficients.append(term_coefficients[k])
coefficients = coefficients[::-1]
return coefficients
def polynomial_expression(coefficients):
expression = ""
for i, coeff in enumerate(coefficients):
if coeff == 0:
continue
power = len(coefficients) - 1 - i
if power == 0:
term = f"{coeff:.2f}"
elif power == 1:
term = f"{coeff:.2f}x"
else:
term = f"{coeff:.2f}x^{power}"
if expression:
if coeff >= 0:
expression += f" + {term}"
else:
expression += f" - {abs(coeff):.2f}x^{power}"
else:
expression = term
return expression
coefficients = get_polynomial_coefficients(y_values)
expression = polynomial_expression(coefficients)
print("\n多项式表达式:")
print(expression)