当前位置:文档之家› 数值分析综述报告

数值分析综述报告

淮阴工学院《数值分析》考试──基于Matlab的方法综合应用报告班级:金融1121姓名:姚婷婷学号:1124104129成绩:数理学院2014年6月7日《数值分析》课程综述报告前言:数值分析也称计算方法,它与计算工具的发展密切相关。

数值分析是一门为科学计算提供必需的理论基础和有效、实用方法的数学课程,它的任务是研究求解各类数学问题的数值方法和有关的理论。

正文:第一章 近似计算与误差分析1、产生误差的原因:①模型误差;②观测误差;③截断误差;④舍入误差。

2、四则运算的误差: ①加减法运算()()()****x y x y δδδ±=+②乘法运算()()()***************xy x y xy xy xy x y x y y y x x x y x y y x δδδ-=-+-≤-+-⇒=+③ 除法运算:()()()()()**********************2**x x xy x y y y yy xy x y x y x yyy x x yy y x yy x y y x x y y δδδ--=-+-=-+-=+⎛⎫⇒≈⎪⎝⎭3、科学表示法、有效数字、近似值的精度 任何一个实数都可以表示成如下的形式:其中:是正整数,是整数,如果是数的近似值并且则称该近似值具有位有效数字(significant digit )。

此时,该近似值的相对误差为另一方面,若已知()()*1111021nr x a δ-≤+那么,()()***1112110.10211102r m n n m n x x x x a a a a δ----≤⨯=+≤即:*x 至少有n 位有效数字。

例: 3.141592653589793...π= 取其近似值如下: x*=3.14 x * =3.14159 x*=3.1415 x*=3.141**213100.314110.0016...0.005101022x x π--=⨯-=<=⨯=⨯**516100.314159110.0000026...0.000005101022x x π--=⨯-=<=⨯=⨯**314100.31415110.000092...0.0001101022x x π--=⨯-=<<⨯=⨯**213100.3141110.00059...0.001101022x x π--=⨯-=<<⨯=⨯第二章 线性方程组在科学计算中,问题的本身就是求解线性方程组,许多问题的求解需要最后也归结为线性方程组的求解,所以线性方程组的求解是科学计算中最常见的问题。

对于线性方程组的求解一般有两种方法:(1) 直接法:高斯消去法;(2) 间接法:各种迭代法。

(1) 高斯消去法:①求解思路:先消元,即按一定的规律逐步消去未知量,将方程组Ax B =化为等价的上(或下)三角形方程组;然后进行回代,即由上三角形方程组逐个求出;②高斯(列、全)主元素消去法,及在消元的每一步选取(列)主元素——列中绝对值最大的元取做主元素,计算步骤:⑴消元过程:按列选主元、行交换、消元计算;⑵回代过程; ③高斯列主元素消去法的MATLAB 实现:。

第三章 解线性方程组的迭代法通常逆矩阵不易求得,特别是对于大型的线性方程组,需要用迭代法求解。

用迭代法求解线性方程组,要把线性方程组写成等价的形式,右边写为迭代格式,如:kb x k A k x b x k A b kx Ax kx b Mx b x E A b x Ax x b Mx x b Ax E E n n ++=∴++=++=⇒+=++=++=⇒+=⇒-=)(1)()(2、关于迭代法收敛性的两个重要结论: ①充分必要条件是:矩阵的谱半径()1M ρ<; ②充分条件是:矩阵M 的某个算子范数1M <。

3、线性方程组的迭代法主要有Jacobian 迭代法,Gauss-Seidel 迭代法。

①Jacobian 迭代法:()()()()()()11111k k Ax b D L U xbA D L UDx L U x b x D L U x D bM D L U f D b+----=⎧⇒--=⎨=--⎩⇒=++⇒=++⎧=+⇒⎨=⎩②Gauss-Seidel 迭代法:()()()()()()()11111k k Ax b D L x Ux b A D L U x D L Ux D L bM D L U f D L b--+--=⎧⇒-=+⎨=--⎩=-+-=-⇒=- (3.7)③Jacobian 迭代法与G-S 迭代法比较:()()()()()()()()()11111121122111111211121000000000000k k k k k k n nn n n k n k n n k n x x a x x D a a x x x a a x D D ba x ++++-++----⎛⎫⎛⎫⎡⎤ ⎪ ⎪⎢⎥- ⎪ ⎪⎢⎥= ⎪ ⎪⎢⎥ ⎪ ⎪⎢⎥ ⎪ ⎪--⎣⎦⎝⎭⎝⎭⎛⎫--⎡⎤ ⎪⎢⎥ ⎪⎢⎥++ ⎪-⎢⎥ ⎪⎢⎥ ⎪⎣⎦⎝⎭(3.8) 式(3.7)和 (3.8) 表明:Gauss-Seidel 迭代法在计算第1k+次迭代的第i 个分量()1k ix +时,及时地利用了在此步迭代中得到的新的迭代值:()1k jx +,1,2,,1j i =-,由于第1k +步的迭代值通常比第k 步的迭代值更接近方程组的精确解,所以,在Jacobian 迭代法和GS 迭代法都收敛的情况下,Gauss-Seidel 迭代法的收敛速度比Jacobian 迭代法的收敛速度高。

例题:用MATLAB 函数normrdn 生成5阶矩阵M 和向量b 分别构造线性方程组Ax b =的Jacobi 迭代格式和G-S 迭代格式,并判断收敛性。

Jacobian 迭代法和GS 迭代法程序如下:clc;clear all; %1¡¢Éú³ÉM ºÍbM=normrnd(1,2,5) b=normrnd(1,2,5,1) %Jacobian µü´ú·¨ M1=D\(L+U) f1=D\brho=max(abs(eig(M1))); R=1e-08; %É趨µÄÒ»¸öÊÕÁ²±ê×¼ switch sign(1-rho) case -1disp('the Jocobian method is not applicable') otherwisex(:,1)=normrnd(0,9,5,1); k=1 while k<=50*5x(:,k+1)=M1*x(:,k)+f1; if norm(x(:,k+1)-x(:,k))>=R k=k+1; elseX=x(:,k+1); disp('Jacobian µü´ú·¨µü´ú´ÎÊýΪ£º') IterN=k %Jacobian µü´ú·¨µü´ú´ÎÊý break end end end%Causs-Seidel µü´ú·¨ M2=(D-L)\U f2=(D-L)\brho=max(abs(eig(M2)));R=1e-08;switch sign(1-rho) case -1disp('the auss-seidel method is not applicable') otherwisex(:,1)=normrnd(0,9,5,1); k=1while k<=50*5x(:,k+1)=M2*x(:,k)+f2; if norm(x(:,k+1)-x(:,k))>=R k=k+1; elseX=x(:,k+1)disp('Causs-Seidel µü´ú·¨µü´ú´ÎÊýΪ£º') IterN=k break end end end第四章 非线性代数方程(组)的数值解法: 一、二分法:首先要确定适当的包含根的区间,这可以依据闭区间上连续函数的介值定理来确定,例如该方程:()320.80.750f x x x x =--+=xf (x )对于该方程()120.80.750f -=-++<()00.750f =>所以该方程至少有一个实根位于区间,图像表明该区间中只含有一个实根;用*x 表示方程()0f x =在区间[],a b 上的精确解,对于给定的精度要求0ε>,取区间[],a b的中点2a b x +=,并按下式进行判断:()()()()()***00[,]0[,]f x x x f x f a x a x f x f b x x b ⎧=⇒=⎪⎪⎪<⇒∈⎪⎨⎪⎪<⇒∈⎪⎪⎩(1)以()()0f x f a <为例,① 如果2b aε-≥,没有达到精度要求,令xb =,并重复(1)的迭代过程;②如果2b aε-<,那么,必有[]*,,x x x a x ε-<∀∈,因为[]*,x a x ∈。

即区间[],a x 内的任何一点都可以作为方程()0f x =的近根,特别地,可取x做为近似解。

二、牛顿迭代法:任取初始值)(],,[0x f y b a x =∈上过点()(,00x x f )的切线方程为:))(()(000x x x x f f y -'+=与x 轴交于点x 1,)()(0001x x xx f f '-=,过点))(,(11x x f 的切线方程为))(()(111x x x x f f y -'+=与x 轴交于点x 2,)()(1112x x x x f f '-= ,……… ,如此下去得牛顿迭代公式:)()(1x x x xn n n n f f '-=+例题:考虑如下三阶非线性方程组:22222222=22204a x y z a x yaa xa y az b其中取适当的迭代初值000,y ,Tx z ,用Newton 迭代法求方程组的数值解程序:%Newton µü´ú·¨Çó½â x=sym('x','clear'); y=sym('y','clear');syms z;F=[x^2+y^2+a^2*z^2/2-a^2;x+y-a;(2*x-a)^2+(2*y-a)^2+a^2*(z-b)/4];Fx=diff(F,x,1);Fy=diff(F,y,1);Fz=diff(F,z,1);DF=[Fx Fy Fz];F=(x,y,z)[x^2+y^2+a^2*z^2/2-a^2;x+y-a;(2*x-a)^2+(2*y-a)^2+a^2*(z-b)/4];%Newtonµü´ú·¨Çó½â¹ý³ÌFr=10^-10;Er=10^-10;x0=[-a/4;-a;-a/2];x0=[-a/4;-a;a/2];k=1;X(:,1)=x0;while norm(F(X(1,k),X(2,k),X(3,k))-[0;0;0],2)>=Frtic;f(:,k)=F(X(1,k),X(2,k),X(3,k));J=subs(DF,'x',X(1,k));J=subs(J,'y',X(2,k));J=subs(J,'z',X(3,k));X(:,k+1)=X(:,k)-J\f(:,k);t(k)=toc;if norm((X(:,k+1)-X(:,k)),2)<Erbreakendk=k+1;enddisp('Newtonµü´ú·¨½á¹ûΪ£º');disp(X(:,end));运行结果:Newton迭代法结果为:3.42910.46580.6535第五章插值一、插值:插值是离散函数逼近的重要方法,利用它可通过函数在有限个点处的取值状况,估算出函数在其他点处的近似值。

相关主题