1设计目的、要求
对龙格函数在区间[-1,1]上取的等距节点,分别作多项式插值、三次样条插值和三次曲线拟合,画出及各逼近函数的图形,比较各结果。
2设计原理
多项式插值:利用拉格朗日多项式插值的方法,其主要原理是拉格朗日多项式,即:
表示待插值函数的个节点,
,其中;
三次样条插值:三次样条插值有三种方法,在本例中,我们选择第一边界条件下的样条插值,即两端一阶导数已知的插值方法:
(3)三次曲线拟合:本题中采用最小二乘法的三次多项式拟合。最小二乘拟合是利用已知的数据得出一条直线或者曲线,使之在坐标系上与已知数据之间的距离的平方和最小和值为已知数据,进行三次多项式拟合,设该多项式为,该拟合曲线只需的值最小即可。
3采用软件、设备
计算机、matlab软件
4设计内容
多项式插值:
在区间上取的等距节点,带入拉格朗日插值多项式中,求出各个节点的插值,并利用matlab软件建立m函数,画出其图形。
在matlab中建立一个lagrange.m文件,里面代码如下:
%lagrange 函数
function y=lagrange(x0,y0,x)
n=length(x0);m=length(x);
for i=1:m
z=x(i);
s=0.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=p*y0(k)+s;
end
y(i)=s;
end
建立一个polynomial.m文件,用于多项式插值的实现,代码如下:
%lagrange插值
x=[-1:0.2:1];
y=1./(1+25*x.^2);
x0=[-1:0.02:1];
y0=lagrange(x,y,x0);
y1=1./(1+25*x0.^2);
plot(x0,y0,’–r’)
%插值曲线
hold on
%原曲线
plot(x0,y1,’-b’)
运行duoxiangshi.m文件,得到如下图形:
三次样条插值:
所谓三次样条插值多项式是一种分段函数,它在节点分成的每个小区间上是3次多项式,其在此区间上的表达式如下:
因此,只要确定了的值,就确定了整个表达式,的计算方法如下:
令:
则满足如下个方程:
对于第一种边界条件下有
如果令那么解就可以为
求函数的二阶导数:
>> syms x
>> f=sym(1/(1+25*x^2))
f =
1/(1+25*x^2)
>> diff(f)
ans =
-(50*x)/(25*x^2 + 1)^2
将函数的两个端点,代入上面的式子中:
f’(-1)= 0.0740
f’(1)=-0.0740
求出从-1到1的n=10的等距节点,对应的x,y值
对应m文件代码如下:
for x=-1:0.2:1
y=1/(1+25*x^2)
end
y =
得出
x=-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1
y=0.0385 0.0588 0.1 0.2 0.5 1 0.5 0.2 0.1 0.0588 0.0385
编写m文件Three_Spline.m
x=linspace(-1,1,11);
y=1./(1+25*x.^2);
[m,p]=scyt1(x,y,0.0740,-0.0740);
hold on
x0=-1:0.01:1;
y0=1./(1+25*x0.^2);
plot(x0,y0,’–b’)
得到如下图像:
.
其中蓝色曲线为原图,红色曲线为拟合后的图像。
三次曲线拟合:
这里我们使用最小二乘法的3次拟合
建立一个Three_fitting .m文件,代码如下:
%主要代码
x=[-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1];
y=[0.0385 0.0588 0.1 0.2 0.5 1 0.5 0.2 0.1 0.0588 0.0385];
a=polyfit(x,y,3);
x1=[-1:0.01:1];
y1=a(4)+a(3)*x1+a(2)*x1.^2+a(1)*x1.^3;
x0=[-1:0.01:1];
y0=1./(1+25*x0.^2)
%原曲线
plot(x0,y0,’-r’)
hold on
%三次拟合曲线
plot(x1,y1,’-b’)
上图中,蓝色