计算方法第3章线性代数计算方法_第1页
计算方法第3章线性代数计算方法_第2页
计算方法第3章线性代数计算方法_第3页
计算方法第3章线性代数计算方法_第4页
计算方法第3章线性代数计算方法_第5页
已阅读5页,还剩123页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第3章 线性代数计算方法 计算方法第第3章章 线性代数计算方法线性代数计算方法 1 高斯消去法高斯消去法 3 解实三对角线性方程组的追赶法解实三对角线性方程组的追赶法4 矩阵的三角分解矩阵的三角分解5 行列式和逆矩阵的计算行列式和逆矩阵的计算7 迭代法的收敛性迭代法的收敛性8 矩阵的特征值与特征向量的计算矩阵的特征值与特征向量的计算2 高斯高斯约当消去法约当消去法6 迭代法迭代法 第3章 线性代数计算方法 计算方法 在自然科学和工程技术中很多问题的解决在自然科学和工程技术中很多问题的解决常常归结为解线性代数方程组。常常归结为解线性代数方程组。 例如例如: 电学中的网络问题,电学中的网络问题,

2、船体数学放样中建立三次样条函数问题,船体数学放样中建立三次样条函数问题, 用最小二乘法求实验数据的曲线拟合问题等用最小二乘法求实验数据的曲线拟合问题等第3章 线性代数计算方法 计算方法11112211211222221122 nnnnnnnnnnna xa xa xba xa xa xba xa xa xb阶线性方程组: , X ,11Tn nijAXbTA nn , , ) , , )(x(bxbab矩阵表示记为这里第3章 线性代数计算方法 计算方法直接法直接法: : 经过有限次运算后可求得方程组精确解的方法经过有限次运算后可求得方程组精确解的方法( (不计舍入误差不计舍入误差!)!)迭代法

3、:迭代法:从解的某个近似值出发,通过构造一个无穷序列从解的某个近似值出发,通过构造一个无穷序列去逼近精确解的方法去逼近精确解的方法( (一般有限步内得不到精确一般有限步内得不到精确解解) )解线性方程组的两类方法解线性方程组的两类方法:第3章 线性代数计算方法 计算方法11 1122112222211111nnnnnnnnnnnnnnna xa xa xba xa xbaxaxba xb/nnnnxba1()/,1,1niiikkiik ixba xa in n 11111()/nnnnnnnxbaxa1 高斯消去法高斯消去法 一、高斯消去法一、高斯消去法第3章 线性代数计算方法 计算方法且a

4、ii0,i=1,2,n111211122212111.0.00.00.0nnnnnnnnnnaaaaaaaaaa112.nnxxxx112.nnbbbbAXB第3章 线性代数计算方法 计算方法11212211121112110.00.00.0.nnnnnnnnnnaaaaaaaaaa112.nnxxxx112.nnbbbb11()/,1,3,1,2iiiikkiikxba xa kii 1111/xba第3章 线性代数计算方法 计算方法nnnnnnnbxaxabxaxa11111111112111212221211121111211.nnnnnnnnnnnnnnnnaaaaaaaaAaaaaa

5、aaa第3章 线性代数计算方法 计算方法高斯消去法高斯消去法思思路路首先将方程组首先将方程组Ax=b 化为上三角方程组,化为上三角方程组,此过程称为此过程称为消去过程消去过程,再求解上三角方程,再求解上三角方程组,此过程称为组,此过程称为回代过程回代过程. .第3章 线性代数计算方法 计算方法123123123471258136111xxxxxxxxx122222347136161 02xxxxxxx 12323347136120 xxxxxx 1 1(,0)3 3Tx -2-3- 2例:例:第3章 线性代数计算方法 计算方法(0 )(0 )(0 )(0 )1111211(0 )(0 )(0

6、)(0 )2212222(0 )(0 )(0 )(0 )12.nnnnnnnnxaaabxaaabxaaab(1)(0)(0)2221 1(1)(0)(0)2221 12,3,jjjaal ajnbbb第第2 2行:计算比例因子行:计算比例因子(1)消去过程:)消去过程:第一步第一步:消消 ,设设(0)110a第第2 行行 - l21 第第1 1行行,得到:,得到:(0)2121(0)11ala消去法的数值计算过程:消去法的数值计算过程:121,nx xx消去消去1x第3章 线性代数计算方法 计算方法-1-1第3章 线性代数计算方法 计算方法(1)(0)(0)1 1(1)(0)(0)1 1,2

7、,3,ijijijiiiaal ai jnbbl b(0)(0)(0)(0)1111211(1)(1)(1)22222(1)(1)(1)2.0.0.nnnnnnnxaaabxaabxaab 第第 i 行行 - li1 第第1 1行行,得到:,得到:第第 i 行行: 计算因子计算因子(0)11(0)11iiala(1)(0)(0)2221 1(1)(0)(0)2221 12,3,jjjaal ajnbbl b第第2 2行:行:第第 n 行:消去行:消去1x第3章 线性代数计算方法 计算方法(1)0kkka第第k步:步:消去消去(1)(1)(1,., )kikikkkkalikna()(1)(1)

8、()(1)(1)( ,1, .,)kkkijijikkjkkkiiikkaal abbl bi jkn共进行共进行 n 1步,得到步,得到(0)(0)(0)(0)1111211(1)(1)(1)22222(1)(1).nnnnnnnnxaaabxaabxab设设 ,计算因子,计算因子且计算且计算kx第3章 线性代数计算方法 计算方法( )0kika消元过程总体流程:消元过程总体流程:(1)(1)kikikkkkala()(1)(1)kkkiiikkbbl b1,2,1kn对于对于1,ikn 对于对于做做做做1,jkn 对于对于做做( )(1)(1)kkkijijikkjaal a第3章 线性代

9、数计算方法 计算方法(1)(1)/nnnnnnxba(1)(1)1(1)(1,.,1)niiiijjj iiiiibaxxina (2)回代过程:)回代过程:(1)(1)(1)(1)11iiiiiiiiiiinniaxaxaxb(1)(1)(1)11(1)iiiiiiiinniiiibaxaxxa(1)(1)/nnnnnnxba(0 )(0 )(0 )(0 )1111211(1)(1)(1)22222(1)(1).nnnnnnnnxaaabxaabxab第3章 线性代数计算方法 计算方法二、二、 选主元消去法选主元消去法为避免这种情况的发生,可通过交换方程的次序,为避免这种情况的发生,可通过交

10、换方程的次序,选取绝对值大的元素作主元。选取绝对值大的元素作主元。基于这种思想导出了主元素法基于这种思想导出了主元素法u 在高斯消去法消去过程中可能出现 的情 况,这时高斯消去法将无法进行;u 即使主因素 但很小,其作除数 ,也会导 致其它元素数量级的严重增长和舍误差的扩散。(1)0kkka(1)0kkka第3章 线性代数计算方法 计算方法例如:用高斯消去法求解下列方程组(用四位有效数字计算):51212100.61xxxx 5122100.69999959999xxx-105x2=0.5999959999第3章 线性代数计算方法 计算方法化简可得 x2=0.6000回代求得 x1=105(0

11、.6-0.6000)=0而方程组的解应为 x1=0.4000 x2=0.6000 5122100.69999959999xxx第3章 线性代数计算方法 计算方法 显然用上述方法求出的解x1与方程组的实际解相差很大。若改变两个方程的顺序,即 x1+x2=1 10-5 x1+x2=0.6 -10-5得 (1.000-1.00010-5)x2=0.6-1.00010-5 0.99999x2=0.59999 化简得 x2=0.6000 回代求得 x1=(1-0.6000)=0.4000 x2=0.5999959999第3章 线性代数计算方法 计算方法 高斯主元素消去法是顺序消去法的一种改进。它的基本思

12、想是在逐次消元时总是选绝对值最大的元素(称之为主元)做除数,按顺序消去法的步骤消元。 这里主要介绍求解线性方程组最常用的列主元素消去法和全主元素消去法。第3章 线性代数计算方法 计算方法 所谓列主元素消去法就是在每一步消元过程中取所谓列主元素消去法就是在每一步消元过程中取系数子矩阵的第一列元素中绝对值最大者作主元。对系数子矩阵的第一列元素中绝对值最大者作主元。对线性方程组进行线性方程组进行n-1次消元后,可得到上三角形方程组次消元后,可得到上三角形方程组v 列主元消去法列主元消去法|m ax |0pkkkikkinaa 这种方法称为这种方法称为列主元列主元GaussGauss消去法消去法。第3

13、章 线性代数计算方法 计算方法 取四位有效数字计算。 解 中-18为主元,交换和得 123123123123315183156xxxxxxxxx 123123123183151233156xxxxxxxxx 例1 用列主元素消去法解方程组 第3章 线性代数计算方法 计算方法 +12/18,+1/18得 1232323183152.3335.0001.1670.9445.167xxxxxxx 第二列消元时,主元为1.167,交换方程和得 1232323183151.1670.9445.1672.3335.000 xxxxxxx 第3章 线性代数计算方法 计算方法 +1/1167得 1232331

14、83151.670.9445.1673.1429.428xxxxxx 回代求得 x1=1.000,x2=2.000,x3=3.001方程组的实际解 x1=1,x2=2,x3=3第3章 线性代数计算方法 计算方法0rkam axikrkikaa1k开始开始A输入输入Ar,k交换 中两行FT1kn1kk 11(),1,1nknkjjkkkj kaa xaxkn n 结束结束1,2,1,2,1ikkjijijkka aaaaikknjkkn1x输出输出FT找找列列最大值最大值当前当前列列换行换行消元消元回代、求解回代、求解第3章 线性代数计算方法 计算方法找找列列最大值最大值换行换行1,2,1kn对

15、于对于1,ikn 对于对于做做做做,1,jk kn maxikrki kaakjrjaa对于对于做做第3章 线性代数计算方法 计算方法/*本算法用高斯列主元素消去法求解矩阵方程本算法用高斯列主元素消去法求解矩阵方程AX=B。 其中:其中:A是是NN矩阵;矩阵;B是是N1矩阵。矩阵。 输入:输入:nA的行数;的行数; a二维矩阵二维矩阵A b矩阵矩阵B算法结束后,函数返回值为算法结束后,函数返回值为ERROR_CODE时,表示时,表示A是奇异的或病态的;否则,是奇异的或病态的;否则,A代表行列式的值。代表行列式的值。 a A消元后的上三角矩阵消元后的上三角矩阵 b矩阵方程的解矩阵方程的解X*/第

16、3章 线性代数计算方法 计算方法第3章 线性代数计算方法 计算方法double Gaussian_elimination(int n, double ann, double bn)int i, j, k, mk;double mm, f; for (k=0; kn-1; k+) mm=akk; mk=k; for (i=k+1; in; i+ ) if (fabs(mm)fabs(aik) mm=aik; mk=i; if (fabs(mm)=0) return (ERROR_CODE);当前列当前列找找列列最大值最大值第3章 线性代数计算方法 计算方法 if (mk!=k) for (j=k

17、; jn; j+ ) f = akj; akj = amkj; amkj = f ; f = bk; bk = bmk; bmk = f; for (i=k+1; in; i+ ) mm = aik / akk; aik = 0.0 ; for (j=k+1; j=0 ; j-)for (k=j+1 ; keps) x1=x2; for(i=0;in;i+) x2i=0; for(j=0;ji;j+) x2i += Mij*x1j for(j=i+1;jeps) for(i=0;in;i+) for(j=0;ji;j+) x2i += Mij*x2j for(j=i+1;jn;j+) x2i

18、+= Mij*x2j x2i=(bi-x2i)/Mii 4、输出解x2第3章 线性代数计算方法 计算方法第3章 线性代数计算方法 计算方法 Siedel迭代收敛条件迭代收敛条件定理:若A满足下列条件之一,则Seidel迭代收敛。 A为行或列对角占优阵 A对称正定阵二种方法都存在二种方法都存在收敛性问题收敛性问题。 有例子表明:有例子表明:Seidel法收敛时,法收敛时,Jacobi法可能不收敛;法可能不收敛;而而Jacobi法收敛时,法收敛时, Seidel法也可能不收敛。法也可能不收敛。第3章 线性代数计算方法 计算方法 7.1 向量范数 在三维空间中,常用三种方法来衡量一个向量r=(x,y

19、,z)T的“长度”,即222,max(,)xyzxyzxyz7 迭代法的收敛性迭代法的收敛性 这种衡量的方法可推广到n维空间的向量: x=(x1,x2,xn)也即我们下面介绍的向量范数。T第3章 线性代数计算方法 计算方法 定义定义1:设设n维向量维向量xR ,记对应向量,记对应向量x的一个实数为的一个实数为x,若若x满足下面三个性质满足下面三个性质: (1)非负性,即非负性,即x0,当且仅当,当且仅当 x=0时,时,x=0 (2)齐次性,齐次性,x=x,为任意实数为任意实数 (3)三角不等式性,三角不等式性,x+yx+y,yRn。 则称该实数则称该实数x为向量为向量x的范数。的范数。 可验证

20、,对于不小于可验证,对于不小于1的正数的正数p11nppiixn具有向量范数的三条基本性质。具有向量范数的三条基本性质。第3章 线性代数计算方法 计算方法 称上式为向量称上式为向量x的的p范数范数,记为记为xp,即,即11nppipixx在在Rn中,常用的几种向量范数有中,常用的几种向量范数有: 12111222221221121.().maxmax, . ,ninininiini nxxxxxxxxxxxxxxx 第3章 线性代数计算方法 计算方法定义定义2 设设A为为nn阶矩阵,定义阶矩阵,定义 01supsupxxAxAAxx为矩阵为矩阵A的范数。的范数。可以证明,矩阵范数满足下列的几个

21、性质可以证明,矩阵范数满足下列的几个性质:(1)非负性,非负性,A0,当且仅当当且仅当A= 0时时,A=0(2)齐次性,齐次性,A=A,为任意实数为任意实数(3)三角不等式性三角不等式性,A+BA+B,B与与A为同阶矩阵为同阶矩阵(4)AxAx(5)ABAB 第3章 线性代数计算方法 计算方法常见的矩阵范数常见的矩阵范数是是 的最大特征值的最大特征值第3章 线性代数计算方法 计算方法 谱半径:谱半径:设设nn阶矩阵阶矩阵A的特征值为的特征值为i(i=1,2,n),则称则称1( )maxii nA 为矩阵为矩阵A的谱半径。的谱半径。定理定理3 设设(A)是矩阵是矩阵A的谱半径,则对于的谱半径,则

22、对于A的任何一的任何一种范数种范数A,都有都有 (A)A第3章 线性代数计算方法 计算方法 定理定理5 对于任意初始向量对于任意初始向量x(0)和常数项和常数项f,由迭代公式由迭代公式 x(k+1)=Ax(k)+f, k=0,1,2,收敛的充要条件是收敛的充要条件是 (A)1通常通常(A)1很难证明,一般用很难证明,一般用 A 1来判断迭代是否收来判断迭代是否收敛敛第3章 线性代数计算方法 计算方法8 矩阵的特征值与特征向量的计算矩阵的特征值与特征向量的计算 求矩阵的特征值与特征向量是自然科学许多分支求矩阵的特征值与特征向量是自然科学许多分支中一个重要的问题。中一个重要的问题。nn阶矩阵阶矩阵

23、A的特征值是其特征的特征值是其特征方程方程 det(A-I)=0 的根的根,而属于特征值而属于特征值的特征向量是线性方程组的特征向量是线性方程组 (A-I)x= 0 的非零解。的非零解。 第3章 线性代数计算方法 计算方法8.1 乘幂法乘幂法 在实际问题中在实际问题中,往往不需要求矩阵往往不需要求矩阵A的全部特征值的全部特征值,而只要计算其按模最大或最小的特征值而只要计算其按模最大或最小的特征值,也即只需求矩也即只需求矩阵阵A的部分特征值。乘幂法便是一种行之有效的方法。的部分特征值。乘幂法便是一种行之有效的方法。 设设n阶实矩阵阶实矩阵A有有n个线性无关的特征向量个线性无关的特征向量,其特征其

24、特征值按模排列如下值按模排列如下: 12n 其相应的特征向量分别记为其相应的特征向量分别记为 x1,x2,xn 现求按模最大的特征值现求按模最大的特征值1及其相应的特征向量及其相应的特征向量x1。第3章 线性代数计算方法 计算方法 取非零初始向量取非零初始向量v0,作迭代构成一向量序列作迭代构成一向量序列1022102120.kkkkvAvvAvA vvAvA vA v 因为特征向量因为特征向量x1,x2,xn线性无关线性无关,故故v0可以表示可以表示成这成这n个线性无关的向量的线性组合个线性无关的向量的线性组合,即即 v0=1x1+2x2+nxn 第3章 线性代数计算方法 计算方法 于是于是

25、 vk=Ak(1x1+2x2+nxn) =11kx1+22kx2+nnkxn 设设1为实数为实数,将上式改写成将上式改写成 211 12211()()kkknknnva xa xa x 若若12,由上式有:由上式有:11,2,3,4,iin第3章 线性代数计算方法 计算方法 因此,当因此,当k充分大时,只要充分大时,只要10,就有就有 vk1k1x1 (1) (A-1I)vk11k (A-1I)x1=0 这说明这说明vk是相应于特征值是相应于特征值1的特征向量的近似向量。的特征向量的近似向量。 由式由式(1),当,当k充分大时:充分大时: v k+11k+11x1=1k1x11vk 第3章 线

26、性代数计算方法 计算方法 例10 求矩阵 210121012A 的按模最大的特征值与相应的特征向量。第3章 线性代数计算方法 计算方法(A6v0)1/(A5v0)13.4 (A6v0)2/(A5v0)23.4 (A6v0)3/(A5v0)33.4 (A7v0)1/(A6v0)13.4 (A7v0)2/(A6v0)23.4 (A7v0)3/(A6v0)33.4于是有 13.4相应的特征向量为 x1(792,-1120,792)第3章 线性代数计算方法 计算方法 若把x1的第一个分量化为1,则有 x1(1,-1.4,1) 事实上,矩阵A的特征值与相应的特征向量为11223322(1,2,1)2(1

27、,0, 1)22(1, 2,1)TTTxxx第3章 线性代数计算方法 计算方法习题:习题:要求:习题三 1.2 , ,6请尽力试着编写程序第3章 线性代数计算方法 计算方法11212()0.()0nnnfxxxfxxx 非非线线性性方方程程组组的的一一般般形形式式, ,., ,.,11( ).()0( )()0nnxfxXF XxfxF X 令令则则上上述述方方程程可可表表述述为为非线性方程组的迭代法非线性方程组的迭代法第3章 线性代数计算方法 计算方法22210801080 xxyxyxy 122121()()8101()810kkkkkkkxxyyxyx 例例 解下列非线性方程组解下列非线

28、性方程组k0121819x0.00.80.92800.9999999720.999999989y0.00.80.93120.9999999720.999999989kk第3章 线性代数计算方法 计算方法11()( ()()()kkkkkkkF xXXXJ XF XF x直接推广直接推广Newton迭代为:迭代为:1111.().nnnnffxxJ Xffxx1()()kkkkfxxxfx单个方程的牛顿迭代形式单个方程的牛顿迭代形式:雅可比矩阵雅可比矩阵(Jacobi)()()kkkJ XXF X 第3章 线性代数计算方法 计算方法112212(,)0( )0(,)0fxxF xfxx 以以两两

29、个个方方程程为为例例推推导导( )( )( )( )12( )( )( )( )11112112112212( )( )( )( )22212212112212(,)(,)(,)()()(,)(,)()()kkkTkkkkkkkkkkxxxxfffxxfxxxxxxxxfffxxfxxxxxxxx 已已知知第第 次次近近似似值值,在在作作泰泰劳劳展展开开NewtonNewton方法的迭代格式的推导方法的迭代格式的推导第3章 线性代数计算方法 计算方法*12*( )( )*( )*( )11112112112212*( )( )*( )*( )22212212112212(,)0(,)(,)()

30、()0(,)(,)()()Tkkkkkkkkxxxfffxxfxxxxxxxxfffxxfxxxxxxxx 设设方方程程的的解解为为:,则则有有:11*( )( )( )1211112*( )( )( )222221212(,)(,)kkkkkkffxxxxfxxffxxfxxxx 第3章 线性代数计算方法 计算方法11(1)( )12( )(1)( )( )11(1)( )222212,()kkkkkkkkffxxxxxxxJ xffxxxx 记记11(1)( )( )( )1211112(1)( )( )( )222221212(,)(,)kkkkkkkkffxxxxfxxffxxfxxx

31、x ( )( )( )(1)( )( )()()kkkkkkNewtonJ xxF xxxx 得得迭迭代代格格式式: :( )(1)1max()kkii nxF x 迭迭代代终终止止标标准准为为或或第3章 线性代数计算方法 计算方法( )( )( )(1)( )( )1( )(1)( )( )1()()()()Newton( )( ( )( )kkkkkkkkkkJ xxF xxxJ xF xxxxg xxJ xF x 的的迭迭代代函函数数是是第3章 线性代数计算方法 计算方法解非线性方程组的主要步骤:解非线性方程组的主要步骤:(1) (1) 选定初值选定初值X X0(4) (4) 按公式计算

32、按公式计算X1 110|XX1*kXX( )( )( )(1)( )( )()()kkkkkkNewtonJ xxF xxxx 迭迭代代格格式式: :(2) (2) 计算计算F(X0) , J(X0) (3) (3) 计算计算X0(5) (5) 误差判断误差判断11122212ffxxffxx( )( )112( )( )212(,)(,)kkkkfxxfxx第3章 线性代数计算方法 计算方法2220011020.5044xxyxyxyx y设有非线性方程组初始值( ,)=(2.00,0.25),用牛顿法计算( , )111.906250.3125xy221()28xJXxy例:例:第3章 线

33、性代数计算方法 计算方法22210801080 xxyxyxy 例例 用牛顿法解下列非线性方程组用牛顿法解下列非线性方程组22102()( )1210 xyJ XF xyxyk01234x0.00.80.9917872210.9999752291.000000000y0.00.880.9917117370.9999685241.000000000kk222108( )108xxyF xxyxy 第3章 线性代数计算方法 计算方法SolveNonlinear程序框架程序框架GetFunagaus GetDeltaXGetJacobiUpdateXMain函数。第3章 线性代数计算方法 计算方法#

34、include stdlib .h#include math .h#include stdio .h#define N 3void SolveNonlinear (double xN ,double eps ,int k);void GetFun (double xN ,double bN);void GetJacobi (double xN ,double JNN);double GetDeltaX (double JNN ,double bN ,double deltaX N);int agaus (double a NN ,double bN ,int n);void UpdateX (

35、double xN ,double deltaX N);计算计算F(X0)计算计算F (X0)解非线性方程组主程序解非线性方程组主程序计算计算X0主程序主程序更新计算结果(相当于计算更新计算结果(相当于计算X1)非线性方程组求解程序(牛顿法)非线性方程组求解程序(牛顿法)第3章 线性代数计算方法 计算方法/主函数主函数main() int i, k;double eps;double x N=1.0 , 1.0 , 1.0;double b N;eps=0.0000001; k=100;SolveNonlinear (x, eps , k);GetFun (x, b);printf (n);p

36、rintf (n);for (i=0; ik)| (NormDeltaXeps)break;计算计算F(X0)计算计算F (X0)计算计算X0更新计算结果更新计算结果循环截止条件循环截止条件第3章 线性代数计算方法 计算方法/计算计算F(X),结果放在,结果放在b里里void GetFun (x ,y)double x ,y;y0=x0*x0+x1*x1+x2*x2-1.0;y1=2.0*x0*x0+x1*x1-4.0*x2;y2=3.0*x0*x0-4.0*x1+x2*x2;return;/计算计算F(X),结果放在,结果放在J里里void GetJacobi (x, J)double x

37、N, JNN;J00=2*x0;J01=2*x1;J02=2*x2;J10=4*x0;J11=2*x1;J12=-4;J20=6*x0;J21=-4;J22=2*x2; return;22200122210122220121.02434yxxxyxxxyxxx0120102222424642xxxJxxxx第3章 线性代数计算方法 计算方法/计算计算X0主程序主程序double GetDeltaX(double JNN,double bN,double deltaXN)int nResultFlag,i;double NormDeltaX;nResultFlag=agaus(J,b,N);if

38、(nResultFlag)NormDeltaX=0;for (i=0;iN;i+)NormDeltaX=NormDeltaX+fabs(bi);deltaXi=bi;return NormDeltaX;解线性方程组求解线性方程组求X0,存于存于b中中第3章 线性代数计算方法 计算方法/高斯全主元法解方程,结果放在高斯全主元法解方程,结果放在b里里int agaus(a,b,n)int n;double aNN,bN; int *js,l,k,i,j,is;double d,t;js=malloc(n*sizeof(int); /记载列交换标号记载列交换标号l=1;for (k=0;k=n-2;

39、k+) d=0.0;for (i=k;i=n-1;i+) /求全主元求全主元for (j=k;jd)d=t; jsk=j;/记住列记住列is=i;/记住行记住行求全主元求全主元第3章 线性代数计算方法 计算方法if (d+1.0=1.0)l=0;else if (jsk!=k) /列交换列交换for (i=0;i=n-1;i+)t=aik; aik=aijsk; aijsk=t;if (is!=k) for (j=k;j=n-1;j+) /行交换行交换 t=akj; akj=aisj; aisj=t;t=bk; bk=bis; bis=t; /b交换交换列交换列交换行交换行交换判断主元是否为零

40、判断主元是否为零第3章 线性代数计算方法 计算方法 /最大主元为零不能计算出正确结果最大主元为零不能计算出正确结果 if (l=0)free(js); printf(failn);return(0); /以下为消元过程以下为消元过程d=akk;akk=1;for (j=k+1;j=n-1;j+) /当前行除以当前行除以akkakj=akj/d;bk=bk/d;for (i=k+1;i=n-1;i+)/消元消元for (j=k+1;j=0;i-) t=0.0;for (j=i+1;j=0;k-)if (jsk!=k) t=bk; bk=bjsk; bjsk=t;free(js);return(1

41、);恢复解的顺序恢复解的顺序第3章 线性代数计算方法 计算方法void UpdateX(double x0N,double deltaXN)int i;for (i=0;iN;i+)x0i=x0i-deltaXi;/更新计算结果更新计算结果(相当于计算(相当于计算X1)第3章 线性代数计算方法 计算方法( )( )( )( )( )( )( )( )( )1111( )()(, . , . ,)(, . ,),1,.,kijkkkkkkkkijjjjninkjf xxf xxxhxxf xxhi jn ( )()12kJ xJacobi计计算算的的方方法法( )解解系系数数法法:直直接接计计算算出出矩矩阵阵( )数数值值法法( )( )( )(1)( )( )()()kkkkkkJ xxF xxxx 计算雅可比矩阵的方法计算雅可比矩阵的方法第3章 线性代数计算方法 计算方法()()(1()(0)24()()()()4610:10(1,2,., )00(1,2,(1., )10:)(21)0kkkjjjjkkjjkjkjkjhxxhjncxxhcxjnh

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论