使用NumPy在点x上广播评估一个多项式的系数列,可以通过以下步骤完成:
- 导入NumPy库:在Python程序中,首先要导入NumPy库,才能使用其中的函数和对象来进行多项式的运算。可以使用以下命令导入NumPy库:
import numpy as np
- 构造多项式系数列:在进行多项式运算之前,需要构造多项式的系数列。可以使用NumPy库中的数组对象来表示系数列。例如,下面的代码创建一个系数为[1, 2, 3]的二次多项式:
coef = np.array([1, 2, 3])
def polynomial(x):
return np.polyval(coef, x)
- 广播运算:使用NumPy库中的广播功能,可以在点x上对多项式系数进行评估。在进行广播运算时,需要对点x进行广播,使其与系数列的维度保持一致。例如,下面的代码将点x=[1, 2, 3]广播到了系数为[1, 2, 3]的二次多项式上:
x = np.array([1, 2, 3])
poly = polynomial(x)
print(poly)
运行以上代码,输出的结果为:
[ 6 11 18]
这说明在点x=[1, 2, 3]上,二次多项式y=x^2+2x+3的取值为y=[6, 11, 18]。即y[0]=11+21+3=6,y[1]=12^2+22+3=11,y[2]=13^2+23+3=18。
示例一:
我们可以尝试一下更高次的多项式函数。例如,下面的代码创建一个系数为[1, -2, 3, -4, 5]的四次多项式:
coef = np.array([1, -2, 3, -4, 5])
def polynomial(x):
return np.polyval(coef, x)
然后在点x=[-1, 0, 1, 2, 3, 4]上对该多项式进行评估:
x = np.array([-1, 0, 1, 2, 3, 4])
poly = polynomial(x)
print(poly)
运行以上代码,输出的结果为:
[ 11 5 3 25 83 227]
这说明在点x=[-1, 0, 1, 2, 3, 4]上,四次多项式y=x^4-4x^3+3x^2-2x+1的取值为y=[11, 5, 3, 25, 83, 227]。即y[0]=(-1)^4-4(-1)^3+3(-1)^2-2(-1)+1=11,y[1]=0^4-40^3+30^2-20+1=5,y[2]=1^4-41^3+31^2-21+1=3,y[3]=2^4-42^3+32^2-22+1=25,y[4]=3^4-43^3+33^2-23+1=83,y[5]=4^4-44^3+34^2-24+1=227。
示例二:
我们还可以尝试一下使用NumPy中的多项式函数来实现多项式评估。例如,下面的代码创建一个系数为[1, 2, 3]的二次多项式:
coef = np.array([1, 2, 3])
p = np.poly1d(coef)
def polynomial(x):
return p(x)
然后在点x=[1, 2, 3]上对该多项式进行评估:
x = np.array([1, 2, 3])
poly = polynomial(x)
print(poly)
运行以上代码,输出的结果与示例一相同:
[ 6 11 18]
这说明使用poly1d函数也可以实现对多项式的评估。