matlab曲线旁边,利用MATLAB实现曲线逼近方法的比较

matlab曲线旁边,利⽤MATLAB实现曲线逼近⽅法的⽐较问题提出
曲线的拟合和插值,是逼近函数的基本⽅法,每种⽅法具有各⾃的特点和特定的适⽤范围,实际⼯作中合理选择⽅法是重要的。
实验内容
中的著名问题。下⾯MATLAB程序给出了该函数的⼆次和三次拟合多项式。
x=-1:0.2:1;
y=1/(1+25*x.*x);
xx=-1:0.02:1;
p2=polyfit(x,y,2);
yy=polyval(p2,xx);
plot(x,y,’o’,xx,yy);
xlabel(‘x’);
ylabel(‘y’);
hold on;
p3=polyfit(x,y,3);
yy=polyval(p3,xx);
plot(x,y,’o’,xx,yy);
hold off;
适当修改上述MATLAB程序,也可以拟合其他你有兴趣的函数。
实验要求:
(1)将拟合的结果与拉格朗⽇插值及样条插值的结果⽐较。
(2)归纳总结数值实验结果,试定性地说明函数逼近各种⽅法的适⽤范围,及实际应⽤中选择⽅法应注意的问题。
实验步骤
1.对上述程序适当修改,做出函数y=1/(1+25x2)的(n)次拟合函数并画图,然后分别按相同次的拉格朗⽇插值做出插值函数并画图,⽐较两种结果。
2.归纳总结数值实验结果,试定性地说明函数逼近各种⽅法的适⽤范围,及实际应⽤中选择⽅法应注意的问题。
实验结果及讨论
1.按上⾯程序中的多项式插值函数Polyfit,对函数y=1/(1+25x2)做出(n)次拟合,结果为:
如下图所⽰:次数n=3,6,9,12.
Elapsed time is 0.263684 seconds.程序源码为:
tic
x=-1:0.02:1;
y=1./(1+25.*(x.*x));
xx=-1:0.2:1;
yy=1./(1+25.*(xx.^2));
p1=polyfit(xx,yy,3);  %3次拟合
y1=polyval(p1,x);
吡啶酮p2=polyfit(xx,yy,6);  %6次拟合
y2=polyval(p2,x);
p3=polyfit(xx,yy,9);  %9次拟合
y3=polyval(p3,x);
p4=polyfit(xx,yy,12); %12次拟合
y4=polyval(p4,x);
subplot(2,2,1);
plot(x,y,'bo');hold on;
plot(x,y1,'r-');hold off;
title('原函数与3次拟合图像');
xlabel('x');ylabel('y');
legend('原函数','插值函数');
grid on
subplot(2,2,2);
plot(x,y,'bo');hold on;
plot(x,y2,'r-');hold off;
title('原函数与6次拟合图像');
xlabel('x');ylabel('y');注塑机螺杆磨损
legend('原函数','插值函数');
grid on
subplot(2,2,3);
plot(x,y,'bo');hold on;
plot(x,y3,'r-');hold off;
title('原函数与9次拟合图像');
xlabel('x');ylabel('y');
八角楼上legend('原函数','插值函数');
科学管理研究
grid on
subplot(2,2,4);
plot(x,y,'bo');hold on;
plot(x,y4,'r-');hold off;
title('原函数与12次拟合图像');
xlabel('x');ylabel('y');
legend('原函数','插值函数');
grid on
toc
下⾯是⽤等距节点的拉格朗⽇型插值作出的结果:
Elapsed time is 2.057597 seconds.
程序源码为:
tic
for n=3:3:12              %n为插值阶数
subplot(2,2,n/3)          %将各阶原函数与插值函数的图像分别⼀张图⽚上⾯。syms x;
f=1/(1+25*x^2);            %原函数
x1=sym(zeros(n+1));
W=sym(ones(n+1));
for i=0:n
x1(i+1)=-1+2*i/n;      %划分等距节点
end
for j=0:n
京华时报 农夫山泉
for i=0:n
if i~=j              %求插值基函数
w=(x-x1(i+1))/(x1(j+1)-x1(i+1));
W(j+1)=W(j+1)*w;
end
end
L=L+W(j+1)*(1/(1+25*x1(j+1)^2));    %插值函数end
LL(n)=simplify(L);        %插值函数化简
x=-1:0.01:1;
y1=subs(f,x);            %将x带⼊原函数f中
y2=subs(L,x);            %将x带⼊插值函数L中
plot(x,y1,'b'); hold on;
plot(x,y2,'r'); hold off;
title(['原函数与',num2str(n),'次插值函数']);
xlabel('x'); ylabel('y');
legend('原函数','插值函数');
grid on
end
toc
hgt下⾯是⽤切⽐雪夫节点的拉格朗⽇型插值作出的结果:
Elapsed time is 2.215264 seconds.
tic
for n=3:3:12              %n为插值阶数
subplot(2,2,n/3)          %将各阶原函数与插值函数的图像分别⼀张图⽚上⾯。syms x;
f=1/(1+25*x^2);            %原函数
x1=sym(zeros(n+1));
W=sym(ones(n+1));
L=sym(0);
for i=0:n
x1(i+1)=cos((2*i+1)*pi/(2*(n+1)));    %切⽐雪夫零点
end
for j=0:n
for i=0:n
if i~=j              %求插值基函数
w=(x-x1(i+1))/(x1(j+1)-x1(i+1));
W(j+1)=W(j+1)*w;
end
end
L=L+W(j+1)*(1/(1+25*x1(j+1)^2));      %插值函数
end
LL(n)=simplify(L);        %插值函数化简
x=-1:0.01:1;
y1=subs(f,x);            %将x带⼊原函数f中
y2=subs(L,x);            %将x带⼊插值函数L中
plot(x,y1,'b');hold on;
plot(x,y2,'r');hold off;
title(['原函数与',num2str(n),'次插值函数图像']);
xlabel('x');ylabel('y');
legend('原函数','插值函数');
grid on
end
toc
下⾯是⽤样条插值作出的结果:

本文发布于:2024-09-22 06:41:01,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/536756.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:插值   函数   结果   实验   实际   选择   拟合   逼近
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议