完整数值分析matlab实验报告.docx
《完整数值分析matlab实验报告.docx》由会员分享,可在线阅读,更多相关《完整数值分析matlab实验报告.docx(12页珍藏版)》请在冰豆网上搜索。
![完整数值分析matlab实验报告.docx](https://file1.bdocx.com/fileroot1/2023-1/5/1355d946-b4fa-4abc-8816-8fc0257ea49e/1355d946-b4fa-4abc-8816-8fc0257ea49e1.gif)
完整数值分析matlab实验报告
(完整)数值分析matlab实验报告
编辑整理:
尊敬的读者朋友们:
这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望((完整)数值分析matlab实验报告)的内容能够给您的工作和学习带来便利。
同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。
本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为(完整)数值分析matlab实验报告的全部内容。
实验2.1多项式差值的振荡现象
一、实验内容
设区间[—1,1]上函数
,考虑区间[—1,1]的一个等距划分,分点为
,i=0,1,2,..。
,n,则拉格朗日插值多项式为
.其中,li(x),i=0,1,2,。
。
.,n是Lagrange插值基函数.
1)选择不断增大的分点数目n=2,3,。
..,画出原函数f(x)及插值多项式函数Ln(x)在[-1,1]上的图像,比较并分析实验结果.
2)选择其他的函数,例如定义在区间[—5,5]上的函数
,
,重复上述的实验看其结果如何。
二、实验程序
1.主程序
functionchapter2
promps={’请选择试验函数,若选f(x),请输入f,若选好h(x),请输入h,若选g(x),请输入g:
'};
result=inputdlg(promps,’charpt2',1,{'f’});
Nb_f=char(result);
if(Nb_f~=’f’&&Nb_f~=’h’&&Nb_f~=’g')
errordlg(’试验函数选择错误!
');
return;
end
result=inputdlg({’请输入插值多项式的次数N:
’},'charpt_2',1,{’10’});
Nd=str2num(char(result));
if(Nd〈1)
errordlg('插值多项式的次数输入错误!
');
return;
end
switchNb_f
case'f’
f=inline(’1。
/(1+25*x。
^2)’);a=-1;b=1;
case'h’
f=inline('x。
/(1+x。
^4)');a=—5;b=5;
case'g'
f=inline(’atan(x)’);a=-5;b=5;
end
x0=linspace(a,b,Nd+1);y0=feval(f,x0);
x=a:
0。
1:
b;y=Lagrange(x0,y0,x);
clf;
fplot(f,[ab],'rx');
holdon;
plot(x,y,'b-—’);
xlabel('x’);ylabel('y=f(x)xandy=Ln(x)--');
2。
Lagrange函数
functiony=Lagrange(x0,y0,x)
n=length(x0);
m=length(x);
fori=1:
m
z=x(i);
s=0;
fork=1:
n
p=1.0;
forj=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
三、实验结果及分析
1)选择不断增大的分点数目n,原函数f(x)及插值多项式函数Ln(x)在[-1,1]上的图像。
随着提高插值多项式次数,可以提高逼近的精度,但是次数的增加,在区间两端点附近与原函数偏离很远,即出现了Runge现象。
2)选择不断增大的分点数目n,原函数h(x)及插值多项式函数Ln(x)在[-1,1]上的图像.
选择不断增大的分点数目n,原函数g(x)及插值多项式函数Ln(x)在[—1,1]上的图像.
同样,随着提高插值多项式次数,可以提高逼近的精度,但是次数的增加,在区间两端点附近与原函数偏离很远,即出现了Runge现象。
实验3。
1最小二乘拟合
一、实验内容
编制以函数
为基的多项式最小二乘拟合程序,并用于对下表中数据作3次多项式最小二乘拟合.
xi
-1.0
-0.5
0。
0
0.5
1。
0
1.5
2.0
yi
-4.447
—0。
452
0。
551
0。
048
-0.447
0.549
4.552
取权数
,求拟合曲线
中的参数
、平方误差
,并作离散数据
的拟合函数
的图形.
二、实验程序
functionchapter3
x0=-1:
0。
5:
2;
y0=[—4。
447-0.4520。
5510.048—0.4470.5494。
552];
n=3;
alph=polyfit(x0,y0,n);
y=polyval(alph,x0);
r=(y0—y)*(y0—y)’;
x=-1:
0.01:
2;
y=polyval(alph,x);
plot(x,y,’k--');
xlabel('x');ylabel('y0*andpolyfit.y-.');
holdon;
plot(x0,y0,'*');
title(’离散数据的多项式拟合');
gridon;
disp([’平方误差:
',sprintf(’%g',r)]);
disp(['参数alph:
’,sprintf(’%g\t’,alph)])
三、实验结果及分析
输出结果:
平方误差:
2.17619e-005
参数alph:
1。
99911-2.99767-3。
96825e—0050.549119
离散数据的拟合函数图形为:
实验3.2正交化多项式最小二乘拟合
一、实验内容
编制正交化多项式最小二乘拟合程序,并用于求解上题中的3次多项式最小二乘拟合问题,作拟合曲线的图形,计算平方误差,并与上题的结果进行比较。
二、实验程序
1。
主程序:
functionchapter3_2
x0=-1:
0.5:
2;
y0=[-4。
447—0。
4520。
5510。
048—0。
4470。
5494.552];
n=3;
result=inputdlg({'请输入权向量w:
'},’charpt_3’,1,{’[1111111]’});
w=str2num(char(result));
[a,b,c,alph,r]=ffun(x0,y0,w,n);
disp([’平方误差:
',sprintf(’%g’,r)]);
disp(['参数alph:
’,sprintf('%g\t’,alph)])
2。
正交化离散数据最小二乘拟合函数
function[a,b,c,alph,r]=ffun(x,y,w,n)
m=length(x)-1;
s1=0;s2=ones(1,m+1);v2=sum(w);
d
(1)=y*w’;c
(1)=d
(1)/v2;
fork=1:
n
xs=x。
*s2.^2*w';a(k)=xs/v2;
if(k==1)
b(k)=0;
else
b(k)=v2/v1;
end
s3=(x—a(k)).*s2-b(k)*s1;
v3=s3.^2*w’;
d(k+1)=y。
*s3*w’;c(k+1)=d(k+1)/v3;
s1=s2;s2=s3;v1=v2;v2=v3;
end
r=y.*y*w'—c*d’;
alph=zeros(1,n+1);
T=zeros(n+1,n+2);
T(:
,2)=ones(n+1,1);T(2,3)=—a
(1);
if(n〉=2)
fork=3:
n+1
fori=3:
k+1
T(k,i)=T(k-1,i)-a(k-1)*T(k—1,i—1)—b(k—1)*T(k-2,i—2);
end
end
end
fori=1:
n+1
fork=i:
n+1
alph(n+2-i)=alph(n+2-i)+c(k)*T(k,k+2-i);
end
end
xmin=min(x);xmax=max(x);dx=(xmax—xmin)/(25*m);
t=(xmin—dx):
dx:
(xmax+dx);
s=alph
(1);
fork=2:
n+1
s=s。
*t+alph(k);
end
plot(x,y,'*',t,s,’-’);
title(’离散数据的多项式拟合’);
xlabel('x');ylabel('y');
gridon;
三、实验结果及分析
输出结果:
平方误差:
2。
17619e-005
参数alph:
1.99911—2。
99767-3。
96825e—0050.549119
离散数据的拟合函数图形为:
与实验3.1的结果完全一致。