如何访问 numpy legendre 多项式基函数
how to access numpy legendre polynomial basis functions
我不知道如何使用 numpy.polynomial.legendre
访问勒让德基函数 L_i(x)。我只能访问它们的加权和,总和 c_i L_i 其中 c 是常数系数。我怎样才能访问底层的基函数?我肯定错过了什么。我在下面包含了一个简单的问题示例。我手动编码 correct polynomials 并将它们与我使用 Numpy 访问的内容进行比较。显然,加权和不是所需的单个基函数。如何使用 numpy 的多项式模块使顶部绘图与底部绘图匹配?
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')
当然,所需的解决方案取决于您希望如何使用多项式。为了'plotting'你可以看看勒让德级数class。它可以通过 Legendre.basis 方法在所需域中生成基函数。
绘图可以正常工作
import numpy as np
import matplotlib.pyplot as plt
for order in range(5):
# Attempt to generate legendre polynomials with numpy
x, y = np.polynomial.legendre.Legendre.basis(order, [-1, 1]).linspace(100)
plt.plot(x, y, label=order)
plt.legend()
plt.plot()
我不知道如何使用 numpy.polynomial.legendre
访问勒让德基函数 L_i(x)。我只能访问它们的加权和,总和 c_i L_i 其中 c 是常数系数。我怎样才能访问底层的基函数?我肯定错过了什么。我在下面包含了一个简单的问题示例。我手动编码 correct polynomials 并将它们与我使用 Numpy 访问的内容进行比较。显然,加权和不是所需的单个基函数。如何使用 numpy 的多项式模块使顶部绘图与底部绘图匹配?
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')
当然,所需的解决方案取决于您希望如何使用多项式。为了'plotting'你可以看看勒让德级数class。它可以通过 Legendre.basis 方法在所需域中生成基函数。
绘图可以正常工作
import numpy as np
import matplotlib.pyplot as plt
for order in range(5):
# Attempt to generate legendre polynomials with numpy
x, y = np.polynomial.legendre.Legendre.basis(order, [-1, 1]).linspace(100)
plt.plot(x, y, label=order)
plt.legend()
plt.plot()