matlab多项式的求值,多项式求值的MATLAB实现

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

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%E-mail: [email protected]

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

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;

下面是结果的显示:

03517b80ef3ec9f0e3602d81ababc3a7.png

原文:http://www.cnblogs.com/jtailong/p/7735884.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值