用秦九昭公式计算多项式

这篇博客详细介绍了如何利用秦九韶公式(中国剩余定理的一种算法)进行多项式计算,通过源代码的形式展示了具体实现过程,帮助读者理解算法的原理和应用。
摘要由CSDN通过智能技术生成

这里写图片描述

源代码:

n=int(input("请输入n的值(n为多项式的最高次幂)"))
a=[]
print("依次输入",n+1,"个数,这些数是多项式各项的系数,且最前面输入的数是最小次项前的系数")

i=0
while i<=n:
    a.append(int(input()))
    i=i+1


x=int(input("请输入x的值")
要完成这个任务,我们可以使用 MATLAB 来实现两种计算多项式值的方法:直接计算法和秦九昭算法(也称为霍纳法则)。首先,我们定义两种方法的函数,然后创建一个函数来比较它们的执行时间,并生成结果图表。 以下是直接计算法的 MATLAB 函数: ```matlab function P = directPolynomial(a, x) n = length(a) - 1; P = 0; for k = 0:n P = P + a(k+1) * x^k; end end ``` 接下来是秦九昭算法的 MATLAB 函数: ```matlab function P = qinjiuzhaoPolynomial(a, x) n = length(a) - 1; P = a(n+1); for k = n:-1:1 P = P * x + a(k); end end ``` 现在,我们将创建一个脚本来比较两种方法的效率,并生成图表: ```matlab % 参数设置 x = linspace(-10, 10, 50); % 生成一个从-10到10的线性间隔向量 n_values = [5, 10, 15, 20]; % 不同的n值 time_direct = zeros(1, length(n_values)); % 存储直接计算法的时间 time_qinjiuzhao = zeros(1, length(n_values)); % 存储秦九昭算法的时间 % 计算每个n值的时间 for i = 1:length(n_values) n = n_values(i); a = (0:n).'; % 生成系数a = [0, 1, 2, ..., n] % 直接计算法时间 tic; P = directPolynomial(a, x); time_direct(i) = toc; % 秦九昭算法时间 tic; P = qinjiuzhaoPolynomial(a, x); time_qinjiuzhao(i) = toc; end % 绘制图表 figure; bar(n_values, time_direct, 'b', n_values, time_qinjiuzhao, 'r'); legend('Direct Method', 'Qin Jiuzhao Method'); title('Computational Efficiency Comparison'); xlabel('Polynomial Degree n'); ylabel('Time (seconds)'); grid on; ``` 这段脚本首先定义了一系列的 `n` 值,并为每种方法记录了执行时间。然后,它使用 `bar` 函数创建了一个条形图,比较了直接计算法和秦九昭算法在不同 `n` 值下的性能。图表中的蓝色条形表示直接计算法的时间,红色条形表示秦九昭算法的时间。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值