多项式求值的MATLAB实现

本文介绍了公茂果老师课件中的四种多项式求值算法,并通过MATLAB代码实现对比了这些方法的时间效率。直接代入法、两种递归法及另一种特殊递归法被应用于不同规模的数据集上,实验结果显示了各种算法的性能差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

公茂果老师的课件中,给出了四种多项式求值的算法,下面给出代码示例:

课件地址:http://see.xidian.edu.cn/faculty/mggong/chn.htm

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%E-mail: jtailong@163.com
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

num=[10 50 100 150 200 300 400 500 10000 20000 50000 100000]; 

x=input('please enter x:') %求解相应x的多项式的值

for m=1:1:12 %从1至12,步长为1 

    a=rand(1,num(m)+1); %生成相应的序列a
   %方法一:直接代入法
    tic; %开始计时
    p1(m)=polyval(a,x); 
    t1(m)=toc;  
    
    %方法二:递归法一
    tic;
    p2(m)=0;
    for j=1:1:(num(m)+1)
    p2(m)=p2(m)+a(j)*x^(j-1);
    end
    t2(m)=toc;
    
    %方法三:递归法二
    tic;
    p3(m)=0;
    q=1;
    for j=1:1:(num(m)+1)
        q=q*x;
        p3(m)=p3(m)+a(j)*q;
    end
    t3(m)=toc;
    
    %方法四:递归法四
    
    tic;
    p4(m)=0;
    for j=1:num(m)
        p4(m)=x*p4(m)+a(num(m)+2-j); %百度文库中出现的算法,会漏掉一个点值
    end
    t4(m)=toc;
end
%画图
g=semilogx(num,t1,'r+',num,t2,'b*',num,t3,'g:',num,t4,'k-.');
legend('一','二','三','四');
set(g,'linestyle',':','linewidth',2.0,'markersize',8);
xlabel('num=10 ,50 ,100 ,150 ,200, 300 ,400, 500 ,10000, 20000, 50000 ,100000');
ylabel('time');
title('温酒待君归四线比较图')
grid on;
    

 

 下面是结果的显示:

参考链接   https://wenku.baidu.com/view/c3f6f2b8c5da50e2534d7f42.html

             https://wenku.baidu.com/view/be4e3335b0717fd5370cdc40.html

转载于:https://www.cnblogs.com/jtailong/p/7735884.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值