- 1、本文档共7页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数值分析实验报告插值与拟合
插值与拟合
1. 观察直接利用拉格朗日插值多项式的病态性
实验目的:如果直接利用拉格朗日插值多项式的的定义,即
确定系数,就必须解方程
该方程的系数矩阵为范德蒙(Vandermonde)矩阵,它是严重病态的,因此这种方法不能使用。本实验的目的是观察这种病态性。
实验内容:取不同的n ,并在[0,1]区间上取n个等分点,计算上述系数矩阵A的条件数,画出㏑(cond(A))~n之间的曲线。(可利用MatLab的库函数cond完成)
实验算法:(源程序)
function y=tiaojianshu(x)
for i=1:x
n=i;
B=[];
A=ones(n+1,1);
for j=1:n+1
a(j)=(j-1)/n;
end
for i=1:n+1
B=[B,a(i)];
end
B=B;
for k=1:n
A=[A,B.*A(:,k)];
end
A
y=log(cond(A));
plot(n,y,.r);
xlabel(n); ylabel(1n(cond(A)));
hold on
end 实验结果:
㏑(cond(A))~n之间的曲线如下:
实验说明:随着n的值增大,㏑(cond(A))也线性增大,即cond(A)呈现指数上升趋势。
当n取一个较大的值时,cond(A)会相当大,方程组呈现变态。
2. 牛顿插值法
实验目的:学会牛顿插值法,并应用算法于实际问题。
实验内容:给定函数 ,已知:
实验要求:用牛顿插值法求4次Newton插值多项式在2.15处的值,以此作为函数的近似值。
实验算法:
根据下面方程求出系数
然后列出求的表达式:
源程序如下:
format long
x=2.15;y=0;
X=[2.0; 2.1; 2.2; 2.3 ;2.4];
Y=[1.414214;1.449138;1.483240;1.516575;1.549193];
A=ones(5,1);
B=[];C=[];
for i=1:5
B(i,1)=X(i,1)-X(1,1);
end
for i=1:5
B(i,2)=(X(i,1)-X(1,1))*(X(i,1)-X(2,1));
end
for i=1:5
B(i,3)=(X(i,1)-X(1,1))*(X(i,1)-X(2,1))*(X(i,1)-X(3,1));
end
for i=1:5
B(i,4)=(X(i,1)-X(1,1))*(X(i,1)-X(2,1))*(X(i,1)-X(3,1))*(X(i,1)-X(4,1));
end
A=[A,B];
C=linsolve(A,Y);
C=C;
y=y+C(1)+C(2)*(x-X(1,1))+C(3)*(x-X(1,1))*(x-X(2,1));
y=y+C(4)*(x-X(1,1))*(x-X(2,1))*(x-X(3,1));
y=y+C(5)*(x-X(1,1))*(x-X(2,1))*(x-X(3,1))*(x-X(4,1))
实验结果:
y =
1.46628819531250
3. 拟合方式实验
实验目的:学会用最小二乘法求拟合数据的多项式,并应用算法于实际问题。
实验内容:给定数据点:
0 0.5 0.6 0.7 0.8 0.9 1.0 1 1.75 1.96 2.19 2.44 2.71 3.00 实验要求:
⑴ 用最小二乘法求拟合数据的多项式,并求平方误差,作出离散函数和拟合函数的图形。
⑵ 用MatLab的函数polyfit求解上面最小二乘法曲线拟合,并用MatLab的有关函数作出其图形。
实验算法:(源程序)
(1)
format long
X=[0,0.5,0.6,0.7,0.8,0.9,1.0];
Y=[1,1.75,1.96,2.19,2.44,2.71,3.00];
plot(X,Y,r*);
legend(数据点(xi,yi));
xlabel(x); ylabel(y);
title(数据点(xi,yi)的散点图);
hold on
syms x y
wucha=0;
X=[0,0.5,0.6,0.7,0.8,0.9,1.0];
Y=[1,1.75,1.96,2.19,2.44,2.71,3.00];
n=length(X);B=[];
A=ones(n,1);
接上
B=X;
A=[A,B];
B=B.*B;
A=[A,B];
C=linsolve(A,Y)
y=C(3)*x^2+C(2)*x+C(1)
x=-1.00:0.01:1.00
y=C(1)+C(2)*x+C(3)*x.^2;
plot(x,y);
xlabel
文档评论(0)