数值分析matlab实验报告..doc
文本预览下载声明
实验2.1 多项式差值的振荡现象
一、实验内容
,考虑区间[-1,1]的一个等距划分,分点为,i=0,1,2,...,n,.其中,li(x),i=0,1,2,...,n是Lagrange插值基函数.
选择不断增大的分点数目n=2,3,...,画出原函数f(x)及插值多项式函数Ln(x)在[-1,1]上的图像,比较并分析实验结果.
选择其他的函数,例如定义在区间[-5,5]上的函数,,重复上述的实验看其结果如何.
二、实验程序
function chapter2
promps={请选择试验函数,若选f(x),请输入f,若选好h(x),请输入h,若选g(x),请输入g:};
result=inputdlg(promps,charpt 2,1,{f});
Nb_f=char(result);
if(Nb_f~=fNb_f~=hNb_f~=g)
errordlg(试验函数选择错误!);
return;
end
result=inputdlg({请输入插值多项式的次数N:},charpt_2,1,{10});
Nd=str2num(char(result));
if(Nd1)
errordlg(插值多项式的次数输入错误!);
return;
end
switch Nb_f
casef
f=inline(1./(1+25*x.^2));a=-1;b=1;
caseh
f=inline(x./(1+x.^4));a=-5;b=5;
caseg
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,[a b],rx);
hold on;
plot(x,y,b--);
xlabel(x);ylabel(y=f(x) x and y=Ln(x) --);
2.Lagrange函数
function y=Lagrange(x0,y0,x)
n=length(x0);
m=length(x);
for i=1:m
z=x(i);
s=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
三、实验结果及分析
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 取权数,求拟合曲线中的参数、平方误差,并作离散数据的拟合函数的图形.
二、实验程序
function chapter3
x0=-1:0.5:2;
y0=[-4.447 -0.452 0.551 0.048 -0.447 0.549 4.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 * and polyfit. y-.);
hold on;
plot(x0,y0,*);
title(离散数据的多项式拟合);
grid on;
disp([平方误差:,sprintf(%g,r)]);
disp([参数alph:,sprintf(%g\
显示全部