matlab实现插值法和曲线拟合电子教案Word文档格式.docx
- 文档编号:14385153
- 上传时间:2022-10-22
- 格式:DOCX
- 页数:12
- 大小:187.41KB
matlab实现插值法和曲线拟合电子教案Word文档格式.docx
《matlab实现插值法和曲线拟合电子教案Word文档格式.docx》由会员分享,可在线阅读,更多相关《matlab实现插值法和曲线拟合电子教案Word文档格式.docx(12页珍藏版)》请在冰豆网上搜索。
x1<
…<
xn=b,已知函数y=f(x)在这些插值结点的函数值为yk=f(xk)(k=0,1,…,n)求一个分段函数Ih(x),使其满足:
(1)Ih(xk)=yk,(k=0,1,…,n);
(2)在每个区间[xk,xk+1]上,Ih(x)是个一次函数。
易知,Ih(x)是个折线函数,在每个区间[xk,xk+1]上,(k=0,1,…,n),于是,Ih(x)在[a,b]上是连续的,但其一阶导数是不连续的。
3拉格朗日插值多项式算法
输入,令。
对,计算
4分段线性插值算法
输入(x,y),k=0,1,…,n;
计算
5插值法和分段线性插值程序
按下列数据分别作五次插值和分段线性插值,画出两条插值曲线以及给定数据点。
求x1=0.32,x2=0.55,x3=0.68时的函数近似值,并比较两种方法的插值余项。
0.30
0.42
0.50
0.58
0.66
0.72
1.04403
1.08462
1.11803
1.15603
1.19817
1,23223
拉格朗日插值程序:
functionlagrint
xi=[0.32,0.55,0.68];
%xi=[0.2:
0.001:
0.8];
x=[0.3,0.42,0.50,0.58,0.66,0.72];
y=[1.04403,1.08462,1.11803,1.15603,1.19817,1.23223];
L=zeros(size(y));
m=length(xi);
fori=1:
m
dxi=xi(i)-x;
L
(1)=prod(dxi(2:
6))/prod(x
(1)-x(2:
6));
L(6)=prod(dxi(1:
6-1))/prod(x(6)-x(1:
6-1));
forj=2:
6-1
num=prod(dxi(1:
j-1))*prod(dxi(j+1:
den=prod(x(j)-x(1:
j-1))*prod(x(j)-x(j+1:
L(j)=num/den;
end
yi(i)=sum(y.*L);
fprintf('
x=%f,y=%f\n'
xi(i),yi(i));
plot(xi,yi,'
r'
);
axis([0.20.81.031.24]);
holdon
plot(x,y,'
b.'
'
markersize'
20)
gridon
分段线性插值算法程序:
function[y]=div
%xi=[0.3:
0.72];
x0=[0.3,0.42,0.50,0.58,0.66,0.72];
y0=[1.04403,1.08462,1.11803,1.15603,1.19817,1.23223];
k=1;
forj=1:
3
fori=1:
5
ifxi(j)>
=x0(i)&
&
xi(j)<
=x0(i+1)&
k<
=3
lx
(1)=(xi(j)-x0(i+1))/(x0(i)-x0(i+1));
lx
(2)=(xi(j)-x0(i))/(x0(i+1)-x0(i));
y(k)=lx
(1)*y0(i)+lx
(2)*y0(i+1);
k=k+1;
end
plot(xi,y,'
plot(x0,y0,'
6运算结果
拉格朗日插值结果
x=0.320000,y=1.049958
x=0.550000,y=1.141271
x=0.680000,y=1.209300
拉格朗日插值余项:
分段插值结果
ans=
1.05081.14181.2095
分段线性插值余项:
由于拉格朗日插值的余项比分段线性插值的余项要求更为严格,点少、区间小的时候,拉格朗日插值要更好。
但在区间较大、节点较多的时候,分段线性插值要更好。
二、牛顿前插
1牛顿前插原理
次牛顿前插公式:
插值余项:
,
阶差分记作。
阶差商是
差分和差商之间的关系是
2牛顿前插算法
输入。
对,计算各阶差分
计算函数值3牛顿前插程序:
编写一个用牛顿前插公式计算函数值的程序,要求先输出差分表,再计算x点的函数值
0.125
0.250
0.375
0.500
0.625
0.750
0.796
0.773
0.744
0.704
0.656
0.602
分别求x=0.158和x=0.636的三次插值的值,并比较二者的插值余项。
这里以x=0.636为例
function[P]=newtoncha
x0=0.636;
X=[0.1250.2500.3750.5000.6250.750];
Y=[0.7960.7730.7440.7040.6560.602];
h=abs(X
(2)-X
(1));
n=find(abs(x0-X)<
3*h);
X=X(n
(1):
n(end));
Y=Y(n
(1):
w=length(X);
R=zeros(w,w);
R(:
1)=Y(:
fork=2:
w
forj=k:
R(j,k)=R(j,k-1)-R(j-1,k-1);
t=(x0-X
(1))/h;
T=1;
form=1:
w-1
T=T*(t-m+1);
N(m)=R(m+1,m+1)*T/factorial(m);
P=R(1,1)+sum(N);
4运行结果:
差分表
0.796000000000000
0.773000000000000
.023*********
0.744000000000000
.029*********
-0.006000000000000
0.704000000000000
-0.040000000000000
-0.011000000000000
-0.005000000000000
0.656000000000000
-0.048000000000000
-0.008000000000000
0.003000000000000
0.008000000000000
0.602000000000000
-0.054000000000000
0.002000000000000
-0.001000000000000
-0.009000000000000
X=0.636时ans=0.651459661824000x=0,158时ans=0.790229818880000
三、曲线拟合
1曲线拟合原理:
给定数据。
记拟合函数的形式为(1.1),
其中为已知的线性无关函数。
求系数使得
(1.2)
取最小值。
称
(1.3)为拟合函数或经验公式。
如果,则(1.3)为次最小二乘拟合多项式
2曲线拟合算法:
已知数据对,求多项式,使得为最小。
注意到此时,
多项式系数满足下面的线性方程组:
其中
然后只要调用线性方程组的函数程序即可
3曲线拟合程序:
试分别用抛物线y=a+bx2和指数曲线y=aebx拟合下列数据
1
2.5
3.5
4
3.8
1.50
26.0
33.0
画出数据点和两条拟合曲线,并通过计算2个拟合函数残差向量的2范数来比较拟合优劣。
用抛物线y=a+bx拟合程序:
functionZXE
x=[12.5^23.5^24^2];
y=[3.81.5026.033.0];
m=1;
S=zeros(1,2*m+1);
T=zeros(m+1,1);
fork=1:
2*m+1
S(k)=sum(x.^(k-1));
m+1
T(k)=sum(x.^(k-1).*y);
A=zeros(m+1,m+1);
a=zeros(m+1,1);
forj=1:
A(i,j)=S(i+j-1);
a=A\T;
a[%d]=%f\n'
k,a(k));
p=polyfit(x,y,1);
u=polyval(p,x);
plot(sqrt(x),u,'
b'
)
holdon
plot(sqrt(x),y,'
指数曲线y=aebx拟合程序:
functionZXE2
x=[12.53.54];
y=log(y);
plot(x,exp(u),'
plot(x,exp(y),'
拟合曲线:
a[1]=-0.168731
a[2]=0.833636
结论:
求解散点函数的时候,点少、区间小的时候,拉格朗日插值要更好。
但在区间较大,节点较多的时候,分段线性插
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- matlab 实现 插值法 曲线拟合 电子 教案