我不知道如何用numpy.polynomial.legendre
访问勒让德基函数L_i(x)。我只能得到它们的加权和,和c_i,L_i,其中c是常系数。如何访问底层的基函数?我一定是漏掉了什么。我在下面举一个简单的例子。我手工编写了正确的多项式,并将它们与我使用Numpy访问的内容进行比较。显然,加权和不是期望的单个基函数。如何使用numpy的polynomial模块使顶部图与底部图匹配?
import numpy as np
import matplotlib.pyplot as plt
f, ax = plt.subplots(2)
x = np.linspace(-1, 1, 1000)
def correct_legs(x, c):
if c == 0: return(np.ones(len(x)))
if c == 1: return(x)
if c == 2: return(0.5 * (3 * x ** 2 - 1))
if c == 3: return(0.5 * (5 * x ** 3 - 3 * x))
if c == 4: return((1. / 8.) * (35 * x ** 4 - 30 * x ** 2 + 3))
if c > 4 or c < 0 or type(c)!=int: return(np.nan)
for order in range(5):
# Attempt to generate legendre polynomials with numpy
ax[0].plot(x, np.polynomial.legendre.legval(x, np.ones(order + 1)), label=order)
# plot propper legendre polynomials
ax[1].plot(x, correct_legs(x, order))
ax[0].legend()
plt.savefig('simpleExample')
2条答案
按热度按时间fiei3ece1#
当然,所需的解决方案取决于您希望如何使用多项式。为了“绘图”的目的,你可以看看Legendre系列类。它可以通过Legendre.basis方法生成所需域中的基函数。
对于绘图,它工作正常
vshtjzan2#
这是一种方法。
这是输出Output