在Python-NumPy中,可以通过numpy.poly1d
类创建多项式对象,而多项式的导函数也可以通过该类的deriv()
方法快速求出。下面是完整的攻略:
- 导入NumPy库:
python
import numpy as np
- 使用
numpy.poly1d
函数创建多项式对象,例如,创建一个三次多项式$f(x)=3x^3+2x^2-3x+1$:
python
f = np.poly1d([3, 2, -3, 1])
注意,np.poly1d()
函数的参数是多项式系数,从高次到低次。
- 使用
deriv()
方法求出多项式导数,例如,求上述多项式的一阶和二阶导函数:
python
f1 = f.deriv() # 一阶导函数
f2 = f1.deriv() # 二阶导函数
print(f1) # 打印一阶导函数
print(f2) # 打印二阶导函数
注意,deriv()
方法的参数是可选的,用于指定求导次数,默认为一次。
- 针对0到10的整数范围内的$x$值,使用
numpy.vectorize
函数将多项式函数和导函数向量化,并使用Matplotlib库绘制多项式函数和导函数的图像,例如:
```python
import matplotlib.pyplot as plt
x = np.arange(0, 11)
fx = np.vectorize(f) # 向量化多项式函数f(x)
f1x = np.vectorize(f1) # 向量化一阶导函数f'(x)
f2x = np.vectorize(f2) # 向量化二阶导函数f''(x)
plt.plot(x, fx(x), 'r', label='$f(x)$')
plt.plot(x, f1x(x), 'g--', label="$f'(x)$")
plt.plot(x, f2x(x), 'b-.', label="$f''(x)$")
plt.legend()
plt.show()
```
注意,Matplotlib库的绘图代码需要在Jupyter Notebook、IPython等支持Matplotlib库的Python环境中运行,否则会报错。
示例一:
创建一个二次多项式$f(x)=2x^2-5x-3$,求它的一阶和二阶导函数,绘制$f(x)$、$f'(x)$、$f''(x)$的图像。
```python
import numpy as np
import matplotlib.pyplot as plt
f = np.poly1d([2, -5, -3])
f1 = f.deriv()
f2 = f1.deriv()
print(f1) # -1*x + 2
print(f2) # -1
x = np.arange(0, 11)
fx = np.vectorize(f) # 向量化多项式函数f(x)
f1x = np.vectorize(f1) # 向量化一阶导函数f'(x)
f2x = np.vectorize(f2) # 向量化二阶导函数f''(x)
plt.plot(x, fx(x), 'r', label='$f(x)$')
plt.plot(x, f1x(x), 'g--', label="$f'(x)$")
plt.plot(x, f2x(x), 'b-.', label="$f''(x)$")
plt.legend()
plt.show()
```
结果如下:
示例二:
创建一个四次多项式$f(x)=x^4-10x^3+35x^2-50x+24$,求它的一阶和二阶导函数,绘制$f(x)$、$f'(x)$、$f''(x)$的图像。
```python
import numpy as np
import matplotlib.pyplot as plt
f = np.poly1d([1, -10, 35, -50, 24])
f1 = f.deriv()
f2 = f1.deriv()
print(f1) # 4x3 - 30x2 + 70x - 50
print(f2) # 12x2 - 60*x + 70
x = np.arange(0, 11)
fx = np.vectorize(f) # 向量化多项式函数f(x)
f1x = np.vectorize(f1) # 向量化一阶导函数f'(x)
f2x = np.vectorize(f2) # 向量化二阶导函数f''(x)
plt.plot(x, fx(x), 'r', label='$f(x)$')
plt.plot(x, f1x(x), 'g--', label="$f'(x)$")
plt.plot(x, f2x(x), 'b-.', label="$f''(x)$")
plt.legend()
plt.show()
```
结果如下:
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:在Python-NumPy中对多项式进行微分并设置导数 - Python技术站