数值分析实验三 函数的数值逼近

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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))可得的拟合效果图.

相关文档
最新文档