例:,计算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:nQ=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=7n=np.shape(P)[0]#利用霍纳法则计算多项式的值
Y=P[0]
for i in range(1,n):Y=X*Y+P[i]
print('Y={}'.format(Y))

最后得到的结果是:

Y=4314

霍纳法则——计算多项式的值相关推荐

  1. 霍纳法则--计算多项式的值

    先来个实例: 计算x=7时p(x)的值. 解法1:我们想到的就是直接将x=7代入方程,然后算出结果:4314.(效率不高) 解法2: 使用霍纳法则: 步骤: 1.建立二维表格,将公式的系数填入第一行( ...

  2. 算法学习三:使用霍纳规则计算多项式

    霍纳规则中的算法思想 在<算法导论>第二章的思考题中,描述了利用霍纳规则计算多项式的方法.以前自己在写程序的时候都是傻傻的简单粗暴地直接上了,看到这个算法的时候眼前一亮,就多看了一些,果然 ...

  3. java规则计算_java实现的霍纳规则的多项式计算

    java实现的霍纳规则的多项式计算 霍纳规则多项式计算如果使用朴素的多项式求值,时间复杂度为O(n*n),而是用了霍纳规则可以使用递归或者迭代来实现,时间复杂度是O(n),下面是源代码: /* * 实 ...

  4. java实现的霍纳规则的多项式计算

    霍纳规则多项式计算如果使用朴素的多项式求值,时间复杂度为O(n*n),而是用了霍纳规则可以使用递归或者迭代来实现,时间复杂度是O(n),下面是源代码: /* * 实现霍纳规则的多项式计算时间复杂度为O ...

  5. 利用从左到右二进制幂算法计算二进制的幂(霍纳法则升级版,变治法)

    文章目录 题目描述 一.二进制幂的计算 二.题解 1.源代码 2.源程序测试 写在最后 题目描述 7.a.应用从左到右二进制幂算法来计算 a 17 a^{17} a17 本题目来源:<算法设计与 ...

  6. 霍纳法则(Horner‘s rule)

    文章目录 霍纳法则(Horner's rule) 程序设计 程序分析 霍纳法则(Horner's rule) [问题描述] 用霍纳法则求一个多项式在一个给定点的值 [输入形式]输入三行,第一行是一个整 ...

  7. 霍纳法则及C语言实现

    1.霍纳法则介绍 a. 求多项式值的一个快速算法 b. 假设有n+2个数,a0,a1,- an和x的组成的一个多项式,形式如下: ,通常都是一项一项的求和然后累加,这样的话要进行次乘法运算和n次加法运 ...

  8. 1.5 编程基础之循环控制 36 计算多项式的值 python

    http://noi.openjudge.cn/ch0105/36/ """ 1.5 编程基础之循环控制 36 计算多项式的值 http://noi.openjudge. ...

  9. 信息学奥赛一本通 1012:计算多项式的值 | OpenJudge NOI 1.3 07

    [题目链接] ybt 1012:计算多项式的值 OpenJudge NOI 1.3 07:计算多项式的值 [题目考点] 1. 计算表达式书写 了解*的运算优先级比+高. 了解()可以改变运算优先级 2 ...

最新文章

  1. c语言中#39;xd#39;代表什么,关于C语言宏定义的技巧:#39;##39;和#39;###39;
  2. python网络爬虫教程-教你从零开始学会写 Python 爬虫
  3. MySQL无法修改字段
  4. docker-compose安装部署ELK
  5. python-greenlet模块(协程)
  6. springmvc的ModelAttribute注解
  7. ajax jinja,在Flask中根据ajax response呈现Jinja模板
  8. linux服务器安装caffe(无root权限)
  9. bzoj 2528: [Poi2011]Periodicity【kmp+构造】
  10. 如何将Tomcat注册为系统服务
  11. [转载红鱼儿]delphi 实现微信开发(2)接入微信公众号平台
  12. tps协议和onvif协议_ONVIF协议解读
  13. 华铸CAE70(灰铁).
  14. 媒体在计算机科学中的两种含义,多媒体技术应用_思考与练习题.doc
  15. c 语言easyx图形库飞机大战的源码
  16. 分布式操作系统,批处理,分时,实时操作系统
  17. 强! 看了这几个公众号让我拿到蚂蚁金服、美团的 Offer
  18. Python:枚举法
  19. java连接Zookeeper,获取节点数据报错
  20. html文件中如何写时间戳,复制文件时间戳

热门文章

  1. 脚本模拟测试SnmpTrap 事件发送
  2. NetSuite:安防公司的实施案例
  3. IDEA配置maven下载maven仓库
  4. 【安全建设】【转载】关于ISO 27001及其实施难点
  5. CANoe-是如何模拟网络节点通信的
  6. SQL Server 2008的外围应用配置器到哪里去了
  7. wow 卡正在连接服务器,魔兽世界怀旧服卡蓝条
  8. tmux终端复用软件
  9. JDK8新特性应用实践
  10. 中国首家云存储联合创新实验室落户武汉光谷