《数值分析》
实 验 指 导 书
潍坊学院数学与信息科学学院
2012年04月
目 录
目录.................................................................................................................................I 实验一 插值与曲线拟合的最小二乘法.................................................................... 1 实验二 数值积分........................................................................................................ 6 实验三 解线性方程组的直接法.............................................................................. 11 实验四 解线性方程组的迭代法.............................................................................. 14 实验五 非线性方程的数值解法.............................................................................. 17 实验六 常微分方程数值解法.................................................................................... 21
I
实验一 插值与曲线拟合的最小二乘法
一、实验目的:
1.了解拉格朗日插值法、牛顿插值法、曲线拟合最小二乘法的基本原理和方法;
2.掌握拉格朗日插值多项式牛顿插值多项式的用法;
3.掌握最小二乘原理,会求拟合函数及超定方程组的最小二乘解。 二、实验内容:
1.用拉格朗日插值公式和牛顿插值公式确定函数值; 2.对函数f (x)进行拉格朗日插值和牛顿插值; 3.利用Polyfit拟合幂函数,利用Polyfit拟合多项式。 三、实验过程:
1.给定函数四个点的数据如下:
f(1.1)?3.887,f(2.3)?4.276,f(3.9)?4.651,f(5.1)?2.117,
试用插值公式确定函数在x?2.101,4.234处的函数值f(x)。
MATLAB程序如下:
X=[1.1,2.3,3.9,5.1]; Y =[3.877,4.726,4.651 ,2.117]; p1=poly(X(1)); p2=poly(X(2)); p3=poly(X(3)); p4=poly(X(4));
l01= conv ( conv (p2, p3), p4)/(( X(1)- X(2))* ( X(1)- X(3)) * ( X(1)- X(4))), l11= conv ( conv (p1, p3), p4)/(( X(2)- X(1))* ( X(2)- X(3)) * ( X(2)- X(4))), l21= conv ( conv (p1, p2), p4)/(( X(3)- X(1))* ( X(3)- X(2)) * ( X(3)- X(4))), l31= conv ( conv (p1, p2), p3)/(( X(4)- X(1))* ( X(4)- X(2)) * ( X(4)- X(3))), l0=poly2sym (l01),
l1=poly2sym (l11),l2=poly2sym (l21), l3=poly2sym (l31), P = l01* Y(1)+ l11* Y(2) + l21* Y(3) + l31* Y(4), 运行后输出的基函数l0,l1,l2和l3为
l0 =-1/24*x^3+1/8*x^2-1/12*x,l1 =1/4*x^3-1/4*x^2-x+1 l2 =-1/3*x^3+4/3*x,l3 =1/8*x^3+1/8*x^2-1/4*x 输入程序
>> L=poly2sym (P),x=2.101; Y = polyval(P,x)
1
运行后输出插值多项式和插值为
L=-629/5376*x^3+31433/53760*x^2-63029765850741/281474976710656*x+2010616283501353/562949953421312 Y =4.5969
输入程序
>> L=poly2sym (P),x=4.234; Y = polyval(P,x) 运行后输出插值多项式和插值为
L=-629/5376*x^3+31433/53760*x^2-63029765850741/281474976710656*x+2010616283501353/562949953421312
Y =4.2244
L=145616387951645/9007199254740992*x^3-2517512191700115/4503599627370496*x^2+14477/6000*x+2007/1000
Y = 3.4290 输入程序
>> syms M; x=2.101;
R3=M*abs((x-X(1))*(x-X(2)) *(x-X(3)) *(x-X(4)))/24 运行后输出误差限为
R3 =435065974692861/36028797018963968*M
2.在区间[?5,5]上取结点数n?11,等距间隔h?1的节点为插值点,对于函数f(x)?5进行拉格朗日插值。 21?xMATLAB程序如下 t=-5: 1:5; ft=(1+t.*t).\\5; t1=-5:1:5; ft1=(1+t1.*t1).\\5; y1=Lagran(t1,ft1,t); plot(t,ft,'b:',t,y1,'g+'); xlabel('x');ylabel('y');
对一组数据做拉格朗日的M文件如下
2

