我正在使用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。
答案 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()
修改强>
根据您的修改,听起来好像您在询问如何使用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()