秦九韶算法(霍纳法则)
介绍
秦九韶算法是中国南宋时期的数学家秦九韶提出的一种多项式简化算法。在西方被称作霍纳算法。秦九韶(约公元1202年-1261年),字道古,南宋末年人,出生于鲁郡(今山东曲阜一带人)。
19世纪初,英国数学家威廉·乔治·霍纳重新发现并证明,后世称作霍纳算法(Horner's method、Horner scheme)。
算法介绍
这个算法用于多项式 $\sum_{i=1}^n A_iX^i$ 求值,即求 $f(x)=a_nxn+a_{n-1}x+{\cdots}+a_1x+a_0$ 的值。该多项式可以改写成以下形式:
$f(x)$
$=a_nxn+a_{n-1}x+{\cdots}+a_1x+a_0$
$=(a_nx{n-1}+a_{n-1}x+{\cdots}+a_2x+a_1)x+a_0$
$=((a_nx{n-2}+a_{n-1}x+{\cdots}+a_3x+a_2)x+a_1)x+a_0$
$=({\ldots}((a_nx+a_{n-1})x+a_{n-2})x+{\cdots}+a_1)x+a_0$
这样,可以先计算最内层括号内一次多项式的值,即 $v_1=a_nx+a_{n-1}$,然后由内向外逐层计算一次多项式的值,即:
$v_2=v_1x+a_{n-2}$
$v_3=v_2x+a_{n-3}$
${\cdots}$
$v_n=v_{n-1}x+a_0$
这样就会将一个 n 次多项式 $f(x)$ 的值转化为求 n 个一次多项式的值。对一个 n 次多项式,至多做 n 次乘法和 n 次加法。
算法实现
int horner_scheme(int *an, int n, int x)
{
int anx = 0;
for (int i = n; i >= 0; i--) {
anx = anx * x + an[i];
}
return anx;
}
参考:
百度百科-秦九韶算法
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端