当前位置:文档之家› 常州大学数值分析07-08试卷A及参考答案

常州大学数值分析07-08试卷A及参考答案

江苏工业学院2007~2008学年第 2 学期硕士生考试试题参考解答一、(10分)叙述防止误差的几个基本原则,并举一例说明其在数值计算中的应用。

答:防止误差的几个基本原则主要有: 1) 防止大数“吃”小数;2) 避免除数绝对值远远小于被除数绝对值的除法; 3) 避免相近数相减;4) 避免使用不稳定的算法;5) 注意简化计算步骤,减少运算次数; ………… 5 分 例如:当x 充分大时,即1x >>时,计算可以用表达式来计算,以避免相近数相减。

………… 5 分二、(15分)(1)叙述Lagrange 插值或Newton 插值方法的方法思想。

(2) 设(1)0,(2)3,(3)10f f f ===, 试求)(x f 的二次Newton 插值多项式。

解:(1)拉格朗日插值、牛顿插值的方法思想分别如下: 对于给定的节点(,),0,1,2,,i i x y i n = 拉格朗日插值通过引入满足如下条件的基函数1,(),0,i j j il x j i=⎧=⎨≠⎩ 构造如下形式的插值多项式()()nn i i i P x l x y ==∑其中0()()()nj i j ijj ix x l x x x =≠-=-∏。

………… 4 分牛顿插值方法是通过构造如下形式的多项式01020101()()()()()()n n n N x a a x x a x x x x a x x x x -=+-+--++--其中,0,1,2,,i a i n =通过Newton 差商公式得到,且仅与0,1,,,i x x x 有关,由此可以保证在增加节点时, 原先的计算量能够被充分利用。

………… 4 分 (2) 根据列表函数可得差商表如下:0 0 0 3 3 0 10 7 2)(x f 的二次Newton 插值多项式为()3(1)2(1)(2)P x x x x =-+--即2()231P x x x =-+。

………… 7 分三、(15分)(1)简要叙述求非线性方程()0f x =根的迭代法的方法思想。

(2)并在下述迭代公式 a)1k x += b)1k x += 中选用选一收敛的迭代公式来求方程3210x x --=在0 1.5x =附近的一个根, 精度 为31102-⨯。

解:(1)求非线性方程()0f x =根的迭代法的方法思想:将方程()0f x =改写成()x x ϕ=由给定的初始近似解0x ,给出如下迭代公式1()k k x x ϕ+=,0,1,2,k =,如果上述迭代序列{}k x 收敛,即lim *k k x x →∞=则*x 为方程()0f x =的根。

(2)将方程3210x x --=改写成321x x =+由此可得到相应的迭代公式1k x +=由于上述迭代公式的迭代函数在0 1.5x =处的导数的绝对值小于1,因此迭代公式a) 在0 1.5x =附近具有局部收敛性。

上述方程的根可以通过迭代a )得到,计算结果如下:四、(10分)叙述确定线性函数y ax b =+拟合下述列表函数的步骤20(,)(())ni i i a b ax b f x ϕ==+-∑第二步,令00abϕϕ∂=∂∂=∂上述方程是关于所求参数,a b 的线性方程组。

第三步,解上述方程组可得所求参数,a b ,由此可得到用线性函数拟合上述列表函数的最小二乘解。

………… 5 分五、(15分)叙述复化梯形积分公式n T 计算()b af x dx ⎰的方法思想,并用复化梯形公式n T 计算积分320sin I x dx π=⎰,其中3n ≥。

解:方法思想:由截断误差可知, 当区间长度b -a 较大时, 梯形求积公式的误差较大. 为此,利用积分关于区间具有可加性, 将[a ,b]区间上的积分, 分成若干小区间上的积分, 以此来减少积分区间长度引起的误差. 这就引入了复合求积公式. 具体如下: 设分点,()/i x a ih h b a n =+=-将区间[a ,b]分成n 等分,则11()()ii nbx ax i f x dx f x dx -==∑⎰⎰将每个小区间上的积分都用梯形公式给出,则得计算定积分的复化梯形公式如下:11()[()()]2nb i i n ai hf x dx f x f x T -=≈+=∑⎰利用上述公式,取3n =时,可得如下计算结果:s = 0.3771。

六、(15分)求解微分方程初值问题0'(,),()y f x y a x b y a y =≤≤⎧⎨=⎩的数值解法通常需要把区间[,]a b 进行m 等分, 设分点为i x a ih =+,()/h b a m =-;然后求函数()y x 在节点i x 处值()i y x 近似值i y 。

由此可知初值问题数值解法的关键在于如何由()i y x 的近似值i y 得到1()i y x +的近似值1i y +。

试给出一种实现从由()i y x 的近似值i y 得到1()i y x +的近似值1i y +的方法思想,在此思想下给出一个具体的实现方法,并利用此方法取步长2.0=h ,求解微分方程初值问题 2,00.4(0)1y x xy x y '=-≤≤⎧⎨=⎩解:基于差商替代导数可以给出实现从由()i y x 的近似值i y 得到1()i y x +的近似值1i y +的Euler 方法如下:1(,),0,1,2,,i i i i y y hf x y i m +=+=,其中1i i h x x +=-。

上述方程的数值解为:x = 0 0.20 0.40 y = 1.00 1.00 0.96 七、(10分)用列选主元的Gauss 消去法或LU 分解法求解方程组:123211741062100x x x -⎛⎫⎛⎫⎛⎫⎪⎪ ⎪-=- ⎪⎪ ⎪ ⎪⎪ ⎪--⎝⎭⎝⎭⎝⎭解:用LU 分解法上述方程组,设 A =LU则有L =[ 1 0 0 -2 1 0 -1 2 1] U =[ 2 -1 10 -1 2 0 0 -3] 解方程组Ly b =可得 y = 7 8 -9解方程组Ux y =可得原方程组的解 x = 1 -2 3 八、(10分)1)写出求解线性方程组Ax b =的Gauss -Seidel 迭代格式的分量形式,其中()n n ij A a R ⨯=∈,n b R ∈;2)编写求解线性方程组Ax b =的Gauss -Seidel 迭代格式的Matlab 程序,要求该程序能根据方程的系数矩阵A 、右端项b 、初始近似解0x 、精度Eps 及最大许可迭代次数max_1输出在许可迭代次数内由Gauss -Seidel 迭代得到的满足精度要求的近似解及达到精度要求需要的最少迭代次数或输出在许可的迭代次数内Gauss -Seidel 迭代没有得到满足精度要求的近似解的提示信息。

解:1)Gauss -Seidel 迭代格式的分量形式为:11111()/i nk k k ii ij jijjii j j i xb a xa xa -++==+=--∑∑,1,2,,i n =,其中0ii a ≠,1,2,,i n =。

2)满足上述要求的Matlab 程序如下: function [X,iternum]=gseid(A,B,x0,Eps,max1) % Input -A is an n by n nonsingular matrix % -B is an n by 1 matrix% -x0 is an n by 1 matrix; the initial guess % -Eps is tolerance for X% -max1 is the maximum number of iterations% Output-X is an n by 1 matrix;the Gauss-seidel approximation to the solution of AX=B % -iternum is the number of iterations%Examining the inputs if nargin<2error( 'more arguments are needed'); endif nargin< 3x0=zeros(size(B)); endif nargin< 4 Eps=1e-12; endif nargin< 5 max1=100; endif nargin> 5error( 'Incorrect number of inputs'); end[n,m]=size(A);if n ~=m | n~=size(B,1)error('Incorrect Inputs,the dimensions of matrix A and B must agree. A must be square '); endflag=0; iternum=0; n=length(B); for k=1:max1iternum=iternum+1; X=x0; for j=1:nif abs(A(j,j))< (Eps+eps)error('A(j,j) equal to zero,divided by zero');endx0(j)=(B(j)-A(j,[1:j-1,j+1:n])*x0([1:j-1,j+1:n]))/A(j,j);enderr=norm(X-x0);relerr=err/(norm(x0)+eps);if (err<Eps)|(relerr<Eps)flag=1;break;endendif flag==1disp('The Gauss-seidel method converges . ')X=x0;elsedisp(['The Gauss-seidel method does not converge within ',num2str(max1), ' iterations ']) end。

相关主题