变换多项式图 - 乘以值列表

时间:2012-10-26 01:59:51

标签: python matplotlib

我正在使用matplotlib。我有600个值的列表。我还有一个多项式函数,我用0到600之间的值绘图。我试图将每个点乘以列表中的相应值。

我可以在循环中评估多项式,并在那里进行乘法运算,但我最终会得到一个点而不是一条线。

我想我可能需要使用Transformations框架,但不确定如何将其应用于图表。

修改

a = [5, 2, 3 ... 0, 2, 8] # 600 values
poly_a = polyfit(a)

deriv_a = polyder(poly_a)

b = [232, 342 ... 346, 183] # 600 values

我需要将deriv_a乘以b。

1 个答案:

答案 0 :(得分:1)

我觉得你有点误解了。这就是numpy的用途(如果您正在使用matplotlib,无论如何,它都会在您绘制时将内容转换为numpy数组。)

只需将“600个值的列表”转换为numpy数组,然后计算多项式。

举个例子:

import numpy as np
import matplotlib.pyplot as plt

# Your "list of 600 values"...
x = np.linspace(0, 10, 600)

# Evaluate a polynomial at each location in `x`
y = -1.3 * x**3 + 10 * x**2 - 3 * x + 10

plt.plot(x, y)
plt.show()

enter image description here

修改 根据您的修改,听起来好像您在询问如何使用numpy.polyder

基本上,您只想使用numpy.polyval来评估{point}位置polyder返回的多项式。

以上面的例子为基础:

import numpy as np
import matplotlib.pyplot as plt

# Your "list of 600 values"...
x = np.linspace(0, 10, 600)

coeffs = [-1.3, 10, 3, 10]

# Evaluate a polynomial at each location in `x`
y = np.polyval(coeffs, x)

# Calculate the derivative
der_coeffs = np.polyder(coeffs)

# Evaluate the derivative on the same points...
y_prime = np.polyval(der_coeffs, x)

# Plot the two...
fig, (ax1, ax2) = plt.subplots(nrows=2)

ax1.plot(x, y)
ax1.set_title('Original Function')

ax2.plot(x, y_prime)
ax2.set_title('Deriviative')

plt.show()

enter image description here