- 1、本文档共16页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验二 插值法
实验2.1
实验程序:
function charpt2_1
%输入插值结点
result=inputdlg({请输入插值结点数N:},charpt_2,1,{2})
N1=str2num(char(result));
result=inputdlg({请输入区间下界:},charpt_2,1,{-1})
N2=str2num(char(result));
result=inputdlg({请输入区间上界:},charpt_2,1,{1})
N3=str2num(char(result));
if(N11) errordlg(结点输入错误!);return;end
%插值结点小于1时错误
f=inline(1./(1+25*x.^2));a=N2;b=N3;
%标准函数f
x1=linspace(a,b,N1+1);
y1=feval(f,x1);
x=a:0.001:b;inter1=Lagrange(x1,y1,x);
fplot(f,[a,b],r-);
%画标准函数f的图形
hold on;
plot(x,inter1,b-);
%画插值逼近函数
legend(原函数,插值多项式函数)
xlabel(x);ylabel(y=f(x) o and y=Ln(x)--);
function y=Lagrange(x0,y0,x)
n=length(x0);m=length(x);
for i=1:m
z=x(i);
s=0.0;
for k=1:n
p=1.0;
for j=1:n
if(j~=k)
p=p*(z-x0(j))/(x0(k)-x0(j));
end
end
s=s+p*y0(k);
end
y(i)=s;
end
实验结果:
n=2 n=3
n=5 n=10
n=15 n=20
实验分析:
多项式插值逼近结果如图所示,当结点数由3个结点增加为5个结点时,函数图形越接近,当插值结点增加到10时,曲线光滑,函数逼近效果在曲线的中间部分(-0.6,0.6)比较好,但是由上图在两个端点处x=-1和x=1附近时会出现在与原函数f(x)偏差会很大(龙格现象)。可以看出,适当提高插值多项式次数,可以提高逼近的精度,但是太高反而会产生不良的现象。
实验程序:
function charpt2_2
%输入插值结点
result=inputdlg({请输入插值结点数N:},charpt_2,1,{2})
N1=str2num(char(result));
result=inputdlg({请输入区间下界:},charpt_2,1,{-5})
N2=str2num(char(result));
result=inputdlg({请输入区间上界:},charpt_2,1,{5})
N3=str2num(char(result));
if(N11) errordlg(结点输入错误!);return;end
%插值结点小于1时错误
f=inline(x./(1+x.^4));a=N2;b=N3;
%标准函数f
x1=linspace(a,b,N1+1);
y1=feval(f,x1);
x=a:0.001:b;inter1=Lagrange(x1,y1,x);
fplot(f,[a,b],r-);
%画标准函数f的图形
hold on;
plot(x,inter1,b-);
%画插值逼近函数
legend(原函数,插值多项式函数)
xlabel(x);ylabel(y=f(x) o and y=Ln(x)--);
function y=Lagrange(x0,y0,x)
n=length(x0);m=length(x);
for i=1:m
z=x(i);
s=0.0;
for k=1:n
p=1.0;
for j=1:n
if(j~=k)
p=p*(z-x0(j))/(x0(k)-x0(j));
end
end
s=s+p*y0(k);
end
y(i)=s
文档评论(0)