数值分析实验三 函数的数值逼近
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数值分析实验三函数的数值逼近-插值与曲线拟合
一、实验目的
(一)学习MATLAB中多项式的表示及多项式运算
(二)学习用典型的插值和拟合方法求函数的近似值或近似表达式
(三)掌握拉格朗日、牛顿插值法的基本理论及MATLAB实现,解决一些实际问题。
二、实验内容
(一)多项式表示及运算
1、在MATLAB命令窗口中输入以下语句,观察结果,分析语句功能
(1)p=[1,-5,6,-33],poly2sym(p)
(2)syms x
f=4*x^3+6*x
sym2poly(f)
分析函数poly2sym和sym2poly的功能。
2、多项式运算
在MATLAB命令窗口中输入以下语句,观察结果
p=[3,2,1]; a=1:2:5;polyval (p,a),分析函数polyval功能(二)拉格朗日插值法、Newton插值理论的MATLAB实现
Lagrange插值的参考程序:
X=[];Y=[]; %X,Y存放已知数据点
syms x s
n=length(X);
s=0.0;
for k=1:n
p=1.0;
for j=1:n
if j~=k
p=p*(x-X(j))/(X(k)-X(j));
end
end
s=s+p*Y(k);
end
s; s=simplify(s);
Newton插值的参考程序:
X= [];Y= [];
n=length(X);
for i=1:1:n-1
CS(i,1)=(Y(i+1)-Y(i))/(X(i+1)-X(i));
end
for j=2:1:n-1
for i=j:1:n-1
CS(i,j)=(CS(i,j-1)-CS(i-1,j-1))/(X(i+1)-X(i+1-j));
end
end
syms N x b
N=Y(1);
a=0;
b=(x-X(1));
for i=1:1:n-1
a=CS(i,i);
N=N+a*(b);
b=(b)*(x-X(i+1));
end
fprintf('插值多项式为')
N
用Lagrange或Newton插值完成课本P48 第2题, P34例5,P28 例2. (三)函数拟合理论的MATLAB实现
1、多项式拟合的MATLAB实现
(1)学习多项式拟合函数polyfit的使用,其调用格式为:
p=polyfit(x,y,n)
其中,参数x代表已知数据点自变量组成的向量;参数y代表已知数据点函数值组成的向量;
参数n代表所求得拟合多项式系数向量;参数p代表拟合多项式的次数。
(2)在对问题求解过程中,如需计算多项式p在某点x处的值f,可用以下语句:
f=polyval(p, x)
(3)在多项式拟合过程中,如需画出数据点的散点图,可用MATLAB绘图函数plot,plot函数的调用格式:plot(x,y,s),其中,参数x,y的意义同多项式拟合polyfit(),参数s为用于修饰图形线型的字符串,详情寻求MATLAB在线帮助:>>help plot
试验举例
对向量X=[-2.8 -1 0.2 2.1 5.2 6.8]和Y=[3.1 4.6 2.3 1.2 2.3 -1.1]分别进行阶数为3、4、5 的多项式拟合,并画出图形进行比较。参考程序:
>> x=[-2.8 -1 0.2 2.1 5.2 6.8];>> y=[3.1 4.6 2.3 1.2 2.3 -1.1];
% 用不同阶数的多项式拟合x 和y
>> p3=polyfit(x, y, 3); p4=polyfit(x, y, 4); p5=polyfit(x, y, 5);
>> xcurve= -3.5:0.1:7.2; % 生成x 值
% 计算在这些x 点的多项式值
>> p3curve=polyval(p3, xcurve);
>> p4curve=polyval(p4, xcurve);
>> p5curve=polyval(p5, xcurve);
>> plot(xcurve,p3curve,'--',xcurve,p4curve,'-.',xcurve,p5curve,'-',x,y,'*');
上机习题:
例已知某乡镇企业1990-1995年的生产利润如下表所示
问题:试预测该企业1996、1997年利润.
2、用MATLAB实现非线性拟合
(1)调用MATLAB非线性拟合函数fit,fit函数的调用格式:
f = fit(x,y,model)
其中,参数x代表已知数据点自变量组成的列向量,参数y代表已知数据点函数值组成的列向量,参数model代表根据需要自定义得拟合模型,参数f代表所选模型的待定参数.
model为由函数fittype所定义的字符串描述的模型类型,如
model=fittype('a*exp(b*x) ')
定义了指数模型bx
=
y ae
(2)实验实例
例在某次阻尼振荡试验中测得如下表3所列的18组数据点,用阻尼振荡对应的函数w x
)x(f=作为拟合函数,求拟合函数的待定参数w
a
e)
cos(
kx
,.
k
a,
参考程序.
解:输入已知数据
x=[];y=[];
用fittype()函数定义模型
model=fittype('a*cos(k*x)*exp(w*x)')
调用fit()求解参数a,k,w,f= fit(x',y',model)
执行语句plot(x,y,'r*',x,f(x))可得的拟合效果图.