用Python在for循环中实现Lagrange算法计算坐标

2024-10-06 15:16:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经编写了下面的代码来使用拉格朗日算法计算给定X和Y坐标集的多项式方程。该公式是使用def实现的,似乎工作正常。然而,我试图使用得到的多项式方程来获得给定范围X值的y坐标,这样我就可以绘制机器人的路径。例如,如果范围是1到15(包括1到15),程序应该计算Y的相应值,并在图形上绘制每对坐标。我不知道如何将X的值传递到def中并获得正确的Y值-我确信这相对简单,但是我的头脑完全空白!任何帮助都将不胜感激!你知道吗

import sympy

from functools import *
from sympy import *
X = Symbol('X')

def Lagrange(points):

    P=[reduce((lambda x,y: x*y),[(X-points[j][0])/(points[i][0] - points[j][0]) for j in range(len(points)) if i != j])*points[i][1] for i in range(len(points))]

    return sum(P)

points=[[0, 1], [1, 0], [3, 16], [-1, 16]]
print(points)
P=Lagrange(points)
print("\nLagrange equation :\n")
print(P)

Tags: 代码infromimport算法forlendef
1条回答
网友
1楼 · 发布于 2024-10-06 15:16:59

您可以使用subs来计算一系列x值的函数。一种方法如下所示。然后可以使用matplotlib可视化

import matplotlib.pyplot as plt

# Your code

output = [P.subs({X: i}) for i in range(1, 16)]
plt.plot(range(1, 16), output)
plt.show()

另一种方法是使用evalf以给定的X值评估函数

output = [P.evalf(subs={X:i}) for i in range(1, 16)]

enter image description here

相关问题 更多 >