例:,计算x=7时p(x)的值。
平时计算我们都会想到直接将x=代入方程中直接求解。但是这样子的话计算量很大,效率不高。而使用霍纳法则,则可以提高计算的效率。
一、霍纳法则的步骤
1.首先建立一个二维表格,将方程的系数填入第一行(即使对应的系数为0也要填写)。
2.对于第二行,除了第一个单元格直接填写系数外,其他单元格的值的计算方式如下:
x的值*前一个单元格的值+本单元格对应于公式的系数
系数 | 2 | -1 | -3 | 1 | -5 |
x=7 | 2 | 7*2+(-1)=13 | 7*13+(-3)=88 | 7*88+1=617 | 7*617+(-5)=4314 |
最后得到的计算结果就是最后一个单元格的值:4314。
二、霍纳法则的原理
其实霍纳法则是从上面的多项式中通过提取x得到的。
其中上面表格的第二行的计算过程就是:第一个单元格的值是最里面的那个x的值,第二个的单元格是由(2x-1)计算出来的,第三个单元格是由x(2x-1)-3计算出来的。依此类推。
三、利用霍纳法则计算多项式的值的MATLAB实现
function Y=horner(P,X)
%输入 P代表多项式的系数(幂从高到低)
% X代表多项式中x的值
%输出 Y代表利用霍纳方法计算出来的多项式的值
Q=P(1);
n=length(P);
for i=2:n
Q=X*Q+P(i);
end
Y=Q;
接着,在命令行窗口中输入:
>> P=[2 -1 -3 1 -5];
>> X=7;
>> Y=horner(P,X)
最后运算得到的结果如下:
Y =
4314
四、利用霍纳法则计算多项式的值的Python实现
import numpy as np
#多项式的系数(幂从高到低)
P=np.array([2,-1,-3,1,-5])
#代入多项式中的x的值
X=7
n=np.shape(P)[0]
#利用霍纳法则计算多项式的值
Y=P[0]
for i in range(1,n):
Y=X*Y+P[i]
print('Y={}'.format(Y))
最后得到的结果是:
Y=4314