数值分析实验报告第一章绪论一、实验目的:掌握截断误差,熟悉上机matlab环境。
二、数学理论:当数学模型不能得到精确解时,通常要用数值方法求它的近似解,其近似解与精确解之间的误差称为截断误差或方法误差。
,在x与0之间。
秦九韶算法公式:,,三、实验内容:1.计算 (n=0,1,…)。
2.=+,采用秦九韶算法,给出求以及四、程序分析:1.(秦九韶算法)2.程序设计如下:n=input('输入n的值:');x=input('输入x的值:');a=3;for i=1:na=2*a+3;ends=a;a1=(a-3)/2;for m=1:100s=x*s+a1;a1=(a1-3)/2;ends在matlab中运行结果如下:>> d12输入n的值:100输入x的值:0.5s =600.0000>> d12输入n的值:150输入x的值:13s =2.2081e+1572.此题中令n=9计算。
X=0:0.01:1;Y=(X.^9).*(exp(X));h=trapz(X,Y)I=(exp(-1))*hI0=0.6321;%用A方案for n=1:1:9;Ia=1-n*I0;endIaI9=0.0684;%用B方案for i=9:-1:1;Ib=1/i*(1-I9);endIbI =0.0917Ia =-4.6889Ib =0.9316分析:n=1时初值为1-1/e.方案A中初值为0.6321,误差E0=1-1/e-0.6321初始误差较小,但误差逐步增大,所以计算不可靠。
B方案中初值为0.0684初值较大,但误差逐步缩小,计算结果可靠。
五、实验总结:在数值分析中,对于计算高次幂运算,逐次运算计算量太大,运用秦九韶算法大大减少了运算量。
在积分用方案A时,尽管初值相当准确,但由于误差传播是逐步扩大的,因而计算结果不可靠。
在数值计算中如不注意分析误差,就会出现特大误差。
所以尽管数值计算中误差比较困难,但仍应重视计算过程中的误差分析。
第二章 插值法一、实验目的:学会数值newton 插值法、hermite 插值法、线性插值及三次插值,并应用该算法解决实际问题。
二、实验要求:对相应题目设计程序,并在matlab 环境下,对程序进行调试、修改最终达到实验目的。
三、实验数学原理:1.Newton 法通常预先要给出一个猜测初值x 0,然后根据其迭代公式)()('1k k k k x f x f x x -=+ 产生逼近解x *的迭代数列{x k },这就是Newton 法的思想。
当x 0接近x *时收敛很快,但是当x 0选择不好时,可能会发散,因此初值的选取很重要。
另外,若将该迭代公式改进为:)()('1k k k k x f x f rx x -=+其中r 为要求的方程的根的重数,这就是改进的Newton 法,当求解已知重数的方程的根时,在同种条件下其收敛速度要比Newton 法快的多。
2.hermit 插值多项式不仅满足在节点上的函数值相等而且导数值相等甚至高阶导数值也相等。
3.n 次插值(这里n=1,3): 四、实验内容:2.在44x -≤≤上给出()x f x e =的等距节点函数表,若用二次插值求x e 的近似值,要使截断误差不超过610-,问使用函数表的步长h 应取多少? 3.设f(x)=1/(1+)在[-5,5]上取n=10,按等距节点求分段线性插值函数I(x),计算各节点间中点处的I(x)与f(x)的值,并估计误差。
4.给定数据表,失球hermit 插值S (x ),并满足 (1)(2)1.线性插值和三次插值x=0.4:0.1:0.8; %给出x,f(x)f=[-0.916291,-0.693147,-0.510826,-0.357765,-0.223144];format longF1=interp1(x,f,0.54,'linear') %用默认方法,即线性插值计算f(x)F2=interp1(x,f,0.54,'spline') %用三次样条插值方法计算f(x) F3=interp1(x,f,0.54,'cubic') %用三次多项式方法计算f(x)>>d21F1 = -0.62021860000000F2 = -0.61597777000000F3 = -0.61604826180425二次插值:>> format long;%输入初始数据x0=[0.4 0.5 0.6 0.7 0.8];f0=[-0.916291 -0.693147 -0.510826 -0.356675 -0.223144];x=0.54;%插值点n=length(x0);s=0;%进入迭代计算过程for j=0:(n-1)t=1;for i=0:(n-1)if i~=jt=t*(x-x0(i+1))/(x0(j+1)-x0(i+1));endends=s+t*f0(j+1);ends %显示输出结果format short;结果可知线性插值、二次插值、三次插值分别为F1 = -0.62021860000000F2 = -0.61597777000000 s = -0.61614271520000以上结果显示线性插值误差比较大,二次插值和三次插值提高了精度。
2.R(x)=1/6*e^4*[(x-x1+h)*(x-x1)*(x-x1-h)]=1/6*e^4*[(x-x1)^3-h^2*(x-x1)]给R(X)求导并且得出极值h^2=3(x-x1)^2将极值带入原方程得:R(X)=(h^3*e^4)/9*sqrt(3)<10^-6h=(9*sqrt(3)*(10^-6)*exp(-4))^(1/3);h= 0.00663.clearclcX=linspace(-5,5,11);Y=1./(1+X.^2);n1=length(X);x=[-9:2:9]/2;n=length(x);for j=1:nfor i=1:n-1if(X(i)<x(j)&x(j)<X(i+1))N(j)=-Y(i)*(x(j)-X(i+1))+Y(i+1)*(x(j)-X(i));break;elseendendends=1./(1+x.^2)%真实值N%插值得到的值s =0.0471 0.0755 0.1379 0.3077 0.8000 0.8000 0.3077 0.1379 0.0755 0.0471N =0.0486 0.0794 0.1500 0.3500 0.7500 0.75000.3500 0.1500 0.0794六、实验总结:插值是数值积分、函数逼近、微分方程等的基础。
等距节点插值公式有不少的实际应用。
多项式插值具有很好的稳定性和收敛性。
样条插值的收敛性比线性插值好。
Hermite 插值要求它的导数值相等,甚至要求高阶导数值也相等。
Newton法当x0接近x*时收敛很快,但是当x0选择不好时,可能会发散,因此初值的选取很重要。
第三章曲线拟合的最小二乘法一、实验目的:掌握曲线拟合的最小二乘法,并解决相应的实际问题。
二、实验要求:对相应题目设计程序,并在matlab环境下,对程序进行调试、修改最终达到实验目的。
三、数学原理:用最小二乘法求拟合曲线时,首先要确定S(X)的形式。
++…法方程:= (k=0,1,…n)四、实验内容:1.先输入数据,得到数据观察图。
>> x=[0,0.9,1.9,3.0,3.9,5.0];>> y=[0,10,30,50,80,110];>> plot(x,y,'-r');%红色实线条观察各点分布近似一条直线,顾选择线性函数做拟合曲线令s(t)=c1*t+c2 设计程序如下:t0=[0,0.9,1.9,3.0,3.9,5.0];t=t0;s0=[0,10,30,50,80,110];s=s0;m=1;%最高次数为1n=length(t);b=zeros(1,m+1);f=zeros(n,m+1);%f为正规方程的系数,初始为0for k=1:m+1f(:,k)=t'.^(k-1);enda=f'*f;b=f'*s';%解方程,得到多项式由高到低的系数所构成的向量cc=a\b;c=flipud(c);disp(c);c=c';t=0:1:5;s=c(1)*t+c(2);plot(t0,s0, 'ok','LineWidth',2),grid on;hold on;plot(t,s,'-r','LineWidth',1);title('拟合后的效果图');axis([0 6 0 120]);[c,s]=polyfit(t,s,m) %误差分析>> d3122.2538-7.8550c = 0.0765 1.2677s = R: [2x2 double] df: 4 normr: 6.9369e-015所以所求曲线为s(t)= 22.25376099914845*t-7.855047781247042.分析:先输入数据,得到数据观察图。
>> x=0:5:55x =0 5 10 15 20 25 30 35 40 45 50 55>> y=[0,1.27,2.16,2.86,3.44,3.87,4.15,4.37,4.51,4.58,4.62,4.64];>> plot(x,y,'-b')%蓝色实线条>>得到观察数据图如下图设计程序如下:(多项式法拟合)x0=0:5:55;x=x0;y0=[0,1.27,2.16,2.86,3.44,3.87,4.15,4.37,4.51,4.58,4.62,4.64];y=y0;m=5;n=length(x);b=zeros(1,m+1);f=zeros(n,m+1);for k=1:m+1f(:,k)=x'.^(k-1);enda=f'*f;b=f'*y';c=a\b;c=flipud(c);disp(c);c=c';x=0:5:55;y=c(1)*x.^5+c(2)*x.^4+c(3)*x.^3+c(4)*x.^2+c(5)*x+c(6);plot(t0,s0, 'ok','LineWidth',2),grid on;hold on;plot(x,y,'-r','LineWidth',1);title('拟合数据图');axis([0 60 0 6]);[c,s]=polyfit(x,y,m)%误差分析>> d32c =0.0000 -0.0000 0.0002 -0.0084 0.2851 0.0082s =R: [6x6 double]df: 6normr: 6.4582e-015六、实验小结:最小二乘法拟合曲线在实际中都有广泛的应用,本章介绍了在计算机上有效节省时间的算法,不要求在理论上详细讨论。