第五讲 线性代数中的数值计算问题
- 格式:ppt
- 大小:1.26 MB
- 文档页数:32
实验5 线性代数方程组的数值解法化工系 毕啸天 2010011811【实验目的】1. 学会用MATLAB 软件数值求解线性代数方程组,对迭代法的收敛性和解的稳定性作初步分析;2. 通过实例学习用线性代数方程组解决简化的实际问题。
【实验内容】题目3已知方程组Ax=b ,其中A ,定义为⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡--------------=32/14/12/132/14/14/12/132/14/14/12/132/14/12/13A试通过迭代法求解此方程组,认识迭代法收敛的含义以及迭代初值和方程组系数矩阵性质对收敛速度的影响。
实验要求:(1)选取不同的初始向量x (0)和不同的方程组右端项向量b ,给定迭代误差要求,用雅可比迭代法和高斯-赛德尔迭代法计算,观测得到的迭代向量序列是否均收敛?若收敛,记录迭代次数,分析计算结果并得出你的结论;(2)取定右端向量b 和初始向量x (0),将A 的主对角线元素成倍增长若干次,非主对角线元素不变,每次用雅可比迭代法计算,要求迭代误差满足 ,比较收敛速度,分析现象并得出你的结论。
3.1 模型分析选取初始向量x(0) =(1,1,…,1)T ,b=(1,1,…,1)T ,迭代要求为误差满足 ,编写雅各比、高斯-赛德尔迭代法的函数,迭代求解。
3.2 程序代码function x = Jacobi( x0,A,b,m ) D=diag(diag(A)); U=-triu(A,1); L=-tril(A,-1); B1=D\(L+U); f1=D\b; x(:,1)=x0;x(:,2)=B1*x(:,1)+f1; k=1;while norm((x(:,k+1)-x(:,k)),inf)>m x(:,k+2)=B1*x(:,k+1)+f1; k=k+1; endendfunction x = Gauss( x0,A,b,m )D=diag(diag(A));U=-triu(A,1);L=-tril(A,-1);B2=(D-L)\U;f2=(D-L)\b;x(:,1)=x0;x(:,2)=B2*x(:,1)+f2;k=1;while norm((x(:,k+1)-x(:,k)),inf)>mx(:,k+2)=B2*x(:,k+1)+f2;k=k+1;endendA1=3.*eye(20,20);A2=sparse(1:19,2:20,-1/2,20,20);A3=sparse(1:18,3:20,-1/4,20,20);AA=A1+A2+A3+A2'+A3';A=full(AA);b=ones(20,1); %输入自选右端项向量b x0=ones(20,1); %输入自选初始向量x0 m=1e-5;x1=Jacob(x0,A,b,m);x2=Gauss(x0,A,b,m);结果输出数据:3.3.1将x0各分量初值置为0【分析】从数据中可以看出,当迭代的初值变化了,达到相同精度所需要的迭代次数也变化了。
数值计算方法试题一一、填空题(每空1分,共17分)1、如果用二分法求方程043=-+x x 在区间]2,1[内的根精确到三位小数,需对分( )次。
2、迭代格式)2(21-+=+k k k x x x α局部收敛的充分条件是α取值在( )。
3、已知⎪⎩⎪⎨⎧≤≤+-+-+-≤≤=31)1()1()1(2110)(233x c x b x a x x x x S 是三次样条函数,则a =( ),b =( ),c =( )。
4、)(,),(),(10x l x l x l n 是以整数点n x x x ,,,10 为节点的Lagrange 插值基函数,则∑==nk kx l)(( ),∑==nk k jk x lx 0)(( ),当2≥n 时=++∑=)()3(204x l x xk k nk k ( )。
5、设1326)(247+++=x x x x f 和节点,,2,1,0,2/ ==k k x k 则=],,,[10n x x x f和=∆07f 。
6、5个节点的牛顿-柯特斯求积公式的代数精度为 ,5个节点的求积公式最高代数精度为 。
7、{}∞=0)(k kx ϕ是区间]1,0[上权函数x x =)(ρ的最高项系数为1的正交多项式族,其中1)(0=x ϕ,则⎰=104)(dx x x ϕ 。
8、给定方程组⎩⎨⎧=+-=-221121b x ax b ax x ,a 为实数,当a 满足 ,且20<<ω时,SOR迭代法收敛。
9、解初值问题00(,)()y f x y y x y '=⎧⎨=⎩的改进欧拉法⎪⎩⎪⎨⎧++=+=++++)],(),([2),(]0[111]0[1n n n n n n n n n n y x f y x f h y y y x hf y y 是阶方法。
10、设⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=11001a a a a A ,当∈a ( )时,必有分解式T LL A =,其中L 为下三角阵,当其对角线元素)3,2,1(=i l ii 满足( )条件时,这种分解是唯一的。
111第5章 线性代数的基本运算本章学习的主要目的:1 复习线性代数中有关行列式、矩阵、矩阵初等变换、向量的线性相关性、线性方程组的求解、相似矩阵及二次型的相关知识.2学会用MatLab 软件进行行列式的计算、矩阵的基本运算、矩阵初等变换、向量的线性相关性的判别、线性方程组的求解、二次型化标准形的运算.5.1 行列式5.1.1 n 阶行列式定义由2n 个元素),,2,1,(n j i a ij 组成的记号D=nnn n n n a a a a a a a a a212222111211称为n 阶行列式.其值是所有取自不同行不同列的n 个元素的乘积n np 2p 21p 1a a a 的代数和,各项的符号由n 级排列n p p p 21决定,即112 D=np p p n p p p 21nnp 2p 21p 1)21(a a a)1( ,其中np p p 21表示对所有n 级排列求和,),,,(21n p p p 是排列n p p p 21的逆序数.5.1.2 行列式的性质(1) 行列式与它的转置行列式相等. (2) 互换行列式的两行(列),行列式变号.(3) 若行列式有两行(列)完全相同,则此行列式为零. (4) 行列式的某一行(列)中所有的元素都乘以同一数k,等于用数k 乘此行列式.(5) 若行列式有两行(列)元素成比例,则此行列式为零. (6) 若行列式的某一列(行)的元素是两数的和,则此行列式等于对应两个行列式之和.即nn nn ni n n i i nn nn ni n n i i nn nn ni ni n n i i i i a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a21'21'22221'112112121222211121121'21'222221'111211(7) 若行列式的某一行(列)的各元素乘以同一数加到另一行(列)对应的元素上去,行列式不变.113(8) 行列式等于它的任一行(列)的各元素与其对应的代数余子式乘积之和,即),,2,1(,0,1j k n i k i ki D A a D nj ij,或),,2,1(,0,1i n j k j kj D A a D nik ij(9) 设A,B 是n 阶方阵,则TA A ,A A n k k ,BA AB ,(10)若A 是n 阶可逆矩阵,则0 A ,AA 11(11) 设n 21,,, 是n 阶方阵A 的特征值,则i nA 1i ,(12) 设*A 是n 阶方阵A 的伴随矩阵,则2n *1n AA(13) 几种特殊行列式的计算:nn nna a a a a a22112211000000 ,nn nnnna a a a a a a a a221122********* nn nnn n a a a a a a a a a221121222111000 ,112n 12)1(1222111211)1(00n n n n n n a a a a a a a a a5.1.3 MatLab 计算行列式的命令 det(var) %计算方阵var 的行列式114 例1 计算行列式3833262290432231的值在MatLab 命令窗口输入:A=[1,-3,2,2;-3,4,0,9;2,-2,6,2;3,-3,8,3] det(A) 执行结果:A = 1 -3 2 2 -3 4 0 9 2 -2 6 2 3 -3 8 3 ans = -50例2 计算行列式dcb 10110011001a的值,其中a,b,c,d 是参数.在MatLab 命令窗口输入: syms a b c dA=[a,1,0,0;-1,b,1,0;0,-1,c,1;0,0,-1,d] det(A) 执行结果:115A =[ a, 1, 0, 0][ -1, b, 1, 0] [ 0, -1, c, 1] [ 0, 0, -1, d]ans =a*b*c*d+a*b+a*d+c*d+1例3 求方程0881441221111132 x x x的根.(1) 先求行列式的值 在MatLab 命令窗口输入: syms xA=[1,1,1,1;1,-2,2,x;1,4,4,x*x;1,-8,8,x^3] y=det(A) 执行结果: A =[ 1, 1, 1, 1] [ 1, -2, 2, x] [ 1, 4, 4, x^2] [ 1, -8, 8, x^3]y =-12*x^3+48*x+12*x^2-48(2) 求3次方程的根.首先通过函数的图形确定根的大致范围,在MatLab命令窗口输入:grid onezplot(y)图 1 观察图1,可知3个根大致在-2,0,4附近,下面求精确值, 在MatLab命令窗口输入:yf=char(y);g1=fzero(yf,-2)116117g2=fzero(yf,0) g3=fzero(yf,4) 执行结果: g1 = -2 g2 = 1.0000 g3 = 2.0000可知方程的3个根分别为-2,1,2. 5.1.4用MatLab 实现克拉默法则 (1)克拉默法则非齐次线性方程组方程组nn nn n n n n n n b x a x a x a b x a x a x a b x a x a x a 22112222212111212111当其系数行列式0212222111211 nnn n nn a a a a a a a a a D时,此方程组有唯一解, 且可表示为DD x DD x DD x n n ,,,2211其中),,2,1(n j D J 是把系数行列式D 中第j 列的元素用方程组118 右端的常数项代替后所得到的n 阶行列式,即nnj n n j n n n j j j a a b a a a a b a a D1,1,111,111,111对于齐次线性方程组00221122221211212111nnn n n n n n n x a x a x a x a x a x a x a x a x a 当其系数行列式0212222111211 nnn n nn a a a a a a a a a D时,此方程组有唯一零解;当D=0时,方程组有非零解. (2) 编写函数klm.m 实现用克拉默法则求解非齐次线性方程组.function x=klm(a,b) %参数a 代表方程组的系数矩阵,列矩阵b 代表方程组的常数列,%返回方程组的解[m,n]=size(a); if (m~=n)disp('克拉默法则不适用此方程组的求解!')119else d=det(a); if (d==0)disp('该方程组没有唯一解!') elsedisp('该方程组有唯一解!') for i=1:m e=a; e(:,i)=b; f=det(e); x(i)=f/d; end end end例4 用克拉默法则解下列方程组:12341234123412345242235232110x x x x x x x x x x x x x x x x操作步骤:120 在MatLab 命令窗口输入:D=[1,1,1,1;1,2,-1,4;2,-3,-1,-5;3,1,2,11]; A=[5;-2;-2;0]; klm(D,A) 执行结果:该方程组有唯一解!ans = 1 2 3 -1 方程组的解为1,3,2,1x 4321 x x x 例5 问a 取何值时,齐次方程组)4(20)6(2022)5(3121321x a x x a x x x x a 有非零解? 根据齐次方程组有非零解,系数行列式为零,用MatLab 操作步骤如下:在MatLabsyms xyy=det(A) ezplot(yy,[0,10])图2grid on执行结果:行列式的值为:yy = 80-66*x+15*x^2-x^3作函数yy的图形,如图2观察图2,可知根大致在2,5,8附近,再输入命令:yf=char(yy);x1=fzero(yf,2)x2=fzero(yf,5)x3=fzero(yf,8)执行结果:x1 = 2x2 = 5x3 = 8即a取2,5,或8时,齐次方程组有非零解。
1数值计算方法(李有法)习题一1.设x>0相对误差为2%,4x的相对误差。
解:由自变量的误差对函数值引起误差的公式:(())(())'()()()()f x xf x f x xf x f xδδ∆=≈得(1)()f x=11()()*2%1%22x xδδδ≈===;(2)4()f x x=时444()()'()4()4*2%8%xx x x xxδδδ≈===2.设下面各数都是经过四舍五入得到的近似数,即误差不超过最后一位的半个单位,试指出他们各有几位有效数字。
(1)12.1x =;(2)12.10x =;(3)12.100x =。
解:由教材9P关于1212.m nx a a a bb b=±型数的有效数字的结论,易得上面三个数的有效数字位数分别为:3,4,53.用十进制四位浮点数计算(1)31.97+2.456+0.1352;(2)31.97+(2.456+0.1352)哪个较精确?解:(1)31.97+2.456+0.1352≈21((0.3197100.245610)0.1352)fl fl⨯+⨯+=2(0.3443100.1352)fl⨯+=0.3457210⨯(2)31.97+(2.456+0.1352)21(0.319710(0.245610))fl fl≈⨯+⨯= 21(0.3197100.259110)fl⨯+⨯=0.3456210⨯2易见31.97+2.456+0.1352=0.345612210⨯,故(2)的计算结果较精确。
4.计算正方形面积时,若要求面积的允许相对误差为1%,测量边长所允许的相对误差限为多少?解:设该正方形的边长为x,面积为2()f x x=,由(())(())'()()()()f x xf x f x xf x f xδδ∆=≈解得(())()()'()f x f xxxf xδδ≈=2(())(())22f x x f xx xδδ==0.5%5.下面计算y的公式哪个算得准确些?为什么?(1)已知1x<<,(A)11121xyx x-=-++,(B)22(12)(1)xyx x=++;(2)已知1x>>,(A)y=,(B)y=;(3)已知1x<<,(A)22sin xyx=,(B)1cos2xyx-=;(4)(A)9y=(B)y=解:当两个同(异)号相近数相减(加)时,相对误差可能很大,会严重丧失有效数字;当两个数相乘(除)时,大因子(小除数)可能使积(商)的绝对值误差增大许多。