2012-10-26 18 views
1

我正在使用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 

我需要用b乘以deriv_a。

+0

你是如何绘制多项式?是600值列表的拟合多项式? – Bitwise

+0

这是一个合适的,但不同的600个值列表。 – nathancahill

+0

那么为什么不只是增加你适合的点呢?我假设你正在使用numpy吗? – Bitwise

回答

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来评估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

+0

我明白这是如何运作的,但我并不十分清楚这个问题。更新了一些代码。谢谢。 – nathancahill

+0

谢谢,编辑使事情变得更清晰。我已经更新了我的答案。我想你只是想'numpy.polyval'?希望有所帮助! –

+0

是的,那正是我所需要的。谢谢! – nathancahill