数值计算_第3章 解线性方程组的直接法.doc_第1页
数值计算_第3章 解线性方程组的直接法.doc_第2页
数值计算_第3章 解线性方程组的直接法.doc_第3页
数值计算_第3章 解线性方程组的直接法.doc_第4页
数值计算_第3章 解线性方程组的直接法.doc_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

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

文档简介

第3章解线性方程组的直接法在近代数学数值计算和工程应用中,求解线性方程组是重要的课题。例如,样条插值中形成的关系式,曲线拟合形成的法方程等,都落实到解一个元线性方程组,尤其是大型方程组的求解,即求线性方程组(3.1)的未知量的数值。(3.1)其中ai j,bi为常数。上式可写成矩阵形式Ax = b,即 (3.2)其中,为系数矩阵,为解向量,为常数向量。当detA=D0时,由线性代数中的克莱姆法则,方程组的解存在且惟一,且有 为系数矩阵的第列元素以代替的矩阵的行列式的值。克莱姆法则在建立线性方程组解的理论基础中功不可没,但是在实际计算中,我们难以承受它的计算量。例如,解一个100阶的线性方程组,乘除法次数约为(101100!99),即使以每秒的运算速度,也需要近年的时间。在石油勘探、天气预报等问题中常常出现成百上千阶的方程组,也就产生了各种形式方程组数值解法的需求。研究大型方程组的解是目前计算数学中的一个重要方向和课题。解方程组的方法可归纳为直接解法和迭代解法。从理论上来说,直接法经过有限次四则运算,假定每一步运算过程中没有舍入误差,那么,最后得到方程组的解就是精确解。但是,这只是理想化的假定,在计算过程中,完全杜绝舍入误差是不可能的,只能控制和约束由有限位算术运算带来的舍入误差的增长和危害,这样直接法得到的解也不一定是绝对精确的。迭代法是将方程组的解看作某种极限过程的向量极限的值,像第2章中非线性方程求解一样,计算极限过程是用迭代过程完成的,只不过将迭代式中单变量换成向量而已。在用迭代算法时,我们不可能将极限过程算到底,只能将迭代进行有限多次,得到满足一定精度要求的方程组的近似解。在数值计算历史上,直接解法和迭代解法交替生辉。一种解法的兴旺与计算机的硬件环境和问题规模是密切相关的。一般说来,对同等规模的线性方程组,直接法对计算机的要求高于迭代法。对于中等规模的线性方程组,由于直接法的准确性和可靠性高,一般都用直接法求解。对于高阶方程组和稀疏方程组(非零元素较少),一般用迭代法求解。3.1 消元法3.1.1 三角形方程组的解形如下面三种形式的线性方程组较容易求解。对角形方程组 (3.3)设,对每一个方程,。显然,求解n阶对角方程的运算量为 。下三角方程组 (3.4)按照方程组的顺序,从第一个方程至第个方程,逐个解出。由方程,得。将的值代入到第二个方程得将的值代入到第个方程得计算需要次乘法或除法运算,。因此,求解过程中的运算量为上三角方程组 (3.5)与计算下三角方程组的次序相反,从第个方程至第一个方程,逐个解出。由第个方程。将的值代入到第个方程得将的值代入到第个方程得解的通式 计算需要次乘法或除法运算。因此求解过程中的运算量为消元法的基本思想就是通过对方程组做初等变换,把一般形式的方程组化为等价的具有上述形式的易解方程组。3.1.2 高斯消元法与列主元消元法高斯消元法高斯消元法是我们熟悉的古老、简单而有效的解方程组的方法。下面是中学阶段解二元方程组(高斯消元法)的步骤:(3.6)(3.7)方程(3.6)乘以3加到第(3.7)个方程中得代入(3.6)得。其方法相当于对方程组的增广矩阵做行的初等变换:已是上三角矩阵,而为原方程组的等价方程组,已化成易解的方程组形式。再用回代方法求解,得到:这就是高斯消元法解方程组的消元和回代过程。一般地,可对线性方程组(3.1)施行以下一系列变换;(1)对换某两个方程的次序;(2)对其中某个方程的两边同乘一个不为零的数;(3)把某一个方程两边同乘一个常数后加到另一个方程的两边。记变换后的方程组为: (3.8)显然方程组(3.1)与(3.8)是等价方程组,或者说它们有相同的解。分别记方程组(3.1)与(3.8)的增广矩阵为:可以看出,实际上是由按一系列初等换后得到的(1)对换某两行元素;(2)中的某行乘一个不为零的数;(3)把的某一行乘一个常数后加到另一行。高斯消元法就是通过以上(3)的变换,把化为等价的上三角形式。下面我们以为例演示消元过程。设方程组: (3.9)其增广矩阵为:(1)若,则将第一行乘以加到第二行上;将第一乘以加到第三行上;将第一行乘以 加到第四行上得到 (3.10)即其中:(2)若则将第二行乘以加到第三行上;将第二行乘以加到第四行上,得到(3.11)其中:(3)若则将第三行乘以加到第四行上,得到 (3.12)其中:已是上三角矩阵,于是得到了与原方程等价的易解形式的方程组:(3.13)再对方程组(3.13)依次回代解出。从式(3.12)可以得到系数矩阵的行列式的值为的对角元素的乘积。即这也正是在计算机上计算方阵的行列式的常规方法。要将上述解方程步骤推广到阶方程组,只需将对控制量“4”的操作改成对控制量的操作即可。元方程组高斯消元法的步骤如下:对于约定有(3.14)经过以上消元,我们已得到与等价的方程组,其中已是一个上三角矩阵。为简单起见,仍记的元素为 (3.15)即已得到原方程组的解。高斯消元法算法在算法中略去了变量,矩阵和向量的定义部分。在消元过程中,将仍放在元素的位置上。1输入:方程组阶数n,方程组系数矩阵A和常数向量b。2FOR k:=1 TO n-1 /消元过程 FOR i:=k+1 TO n / 假定 FOR j:=k+1 TO n / ENDFORJ / ENDFORI / ENDFORK3FOR i:=n TO1/回代求解 s:=bi FOR j:=i+1 TO n DO 4输出方程组的解。高斯消元法的运算量整个消元过程即式(3.14)的乘法和除法的运算量为回代过程即式(3.15)的乘除运算量为故高斯消元法的运算量为 (3.16)高斯消元法的可行性在上面的消元法中,未知量是按照在方程组中的自然顺序消去的,也叫顺序消元法。在消元过程中假定对然元素,消元步骤才能顺利进行,由于顺序消元不改变的主子式值,故高斯消元法可行的充分必要条件为的各阶主子式不为零。但是,实际上只要方程组就有解。故高斯消元法本身具有局限性。另一方面,即使高斯消元法可行,如果很小,在运算中用它作为除法的分母,会导致其它元素数量级的严重增长和舍入误差的扩散。这是高斯消元法的另一缺陷。例3.1 方程组(3.17)(3.18)的精确解为:。在高斯消元法计算中取5位有效数字。解:方程(3.17)(1)/0.0003+方程(3.18)得:,代入方程(3.17)得。由此得到的解完全失真,如果交换两个方程的顺序,得到等价方程组经高斯消元后有由此可看到,在有些情况下,调换方程组的次序对方程组的解是有影响的,对消元法中抑制舍入误差的增长是有效的。如果不调换方程组的次序,取6位有效数字计算方程组的解,得到取9位有效数字计算方程组的解,得到由此可见有效数字在数值计算中的作用。列主元消元法如果在一列中选取按模最大的元素,将其调到主干方程位置再做消元,则称为列主元消元法。调换方程组的次序是为了使运算中做分母量的绝对值尽量地大,减少舍入误差的影响。用列主元方法可以克服高斯消元法的额外限制,只要方程组有解,列主元消元法就能畅通无阻地顺利求解,同时又提高了解的精确度。更具体地,第一步在第一列元素中选出绝对值最大的元素,交换第一行和第行的所有元素,再做化简为零的操作。对于每个在做消元前,选出中绝对值最大的元素,对行和行交换后,再做消元操作,这就是列主元消元法的操作步骤。由于,可证中至少有一个元素不为零,从理论上保证了列主元消元法的可行性。列主元消元法与高斯消元法相比,只增加了选列主元和交换两个方程组(即两行元素)的过程。列主元消元法算法1输入:方程组阶数,方程组系数矩阵和常数向量项。2 /选主元的消元过程 /选择 / 交换第行和第行 / ENDFORI / ENDFORK3FOR i:=n TO 1 / 回代求解4输出方程组的解 。如果对于第步,从行至行和从列至列中选取按模最大的,对第行和第行交换,对第列和第v列交换,这就是全主元消元法。在k列和第v列交换时,还要记录下v的序号,以便恢复未知量xk和xv的位置。3.1.3 高斯若尔当(GaussJordan)消元法高斯消元法将系数矩阵化为上三角矩阵,再进行回代求解;高斯若尔当消元法是将系数矩阵化为对角矩阵,再进行求解,即对高斯消元法或列主元消元法得到的等价增广矩阵:用第4行乘加到第3行上,用第4行乘加到第2行上,用第4行乘加到第1行上,得到用第3行乘加到第2行上,用第3行乘加到第1行上,再用第2行乘加到第1行上,得到(3.19)为方便起见,仍记式(3.19)系数矩阵元素为 ,常数项元素为。那么用初等变换化系数矩阵为对角矩阵的方法称为高斯若尔当消元法。从形式上看对角矩阵(3.15)比上三角矩阵(3.11)更为简单,易于计算 ,但是将上三角矩阵(3.11)化为对角矩阵(3.15 )的工作量略大于上三角矩阵回代的工作量。高斯若尔当消元法求逆矩阵设为非奇异矩阵,方程组的增广矩阵为。如果对应用高斯-若尔当消元法化为,则。例3.2 用高斯-若尔当消元法求的逆矩阵。解:解得:3.2 直接三角分解法仍以为例,在高斯消元法中,从对方程组进行初等变换的角度观察方程组系数矩阵的演变过程。第一次消元步骤将方程组(3.9)化为方程组(3.10),相当于用了三个初等矩阵左乘 和。记,容易验证,由得到其中将方程组(3.10)化为方程组(3.11),相当于用了两个初等矩阵左乘 和。记有同理,将方程组(3.11)化为方程组(3.12),相当于用一个初等矩阵左乘 和。记,有完成了消元过程,有亦有所有消元步骤表示为:左乘一系列下三角初等矩阵。容易验证,这些下三角矩阵的乘积仍为下三角矩阵,并有于是有或这里仍为下三角矩阵,其对角元素为1,称为单位下三角矩阵,而已是上三角矩阵。记,则有结果表明若消元过程可行,可以将分解为单位下三角矩阵与上三角矩阵的乘积。由此派生出解方程组的直接分解法。由高斯消元法得到启发,对消元的过程相当于将分解为一个上三角矩阵和一个下三角矩阵的过程。如果直接分解得到和,。这时方程化为,令,由解出;再由,解出。这就是直接分解法。将方阵分解为,当是单位下三角矩阵,是上三角矩阵时,称为多利特尔(Doclittle)分解;当是下三角矩阵,是单位上三角矩阵时,称为库朗(Courant)分解。分解的条件是若方阵的各阶主子式不为零,则多利特尔分解或库朗分解是可行和惟一的。3.2.1 多利特尔分解多利特尔分解步骤若的各阶主子式不为零,可分解为,其中为单位下三角矩阵,为上三角矩阵,即(3.20)矩阵和共有个未知元素,按照的行元素的列元素的顺序,对每个列出式(3.16)两边对应的元素关系式,一个关系式解出一个或的元素。下面是计算和的元素的步骤:(1)计算的第一行元素要计算,则列出式(3.20)等号两边的第1行第1列元素的关系式:故。一般地,由的第一行元素的关系式得到(2)计算的第一列元素要计算,则列出式(3.20)等号两边的第2行第1列元素的关系式:故。一般地,由的第1列元素的关系式得到(3)计算的第2行元素(4)计算的第2列元素若已算出的前行,的前列的元素,则(5)计算的第行元素由的第行元素的关系式:是上三角矩阵,列标行标。得到(3.21)(6)计算的第列元素由的第列元素的关系式:是下三角矩阵,行标标行标。得到(3.22)一直做到的第列,的第行为止。用直接分解方法求解方程组所需要的计算量仍为,和用高斯消元法的计算量基本相同。可以看到在分解中的每个元素只在式(3.21)或(3.22)中做而且仅做一次贡献,如果需要节省空间,可将 以及的元素直接放在矩阵相应元素的位置上。用直接分解法解方程,首先作出分解令,解方程组。由于是单位下三角矩阵,容易得到(3.23)再解方程组,其中(3.24)对进行分解时,并不涉及常数项。因此,若需要解具有相同系数的一系列线性方程组时,使用直接分解法可以达到事半功倍的效果。多利特尔直接分解算法1.输入:方程组阶数,系数矩阵和常数项。2. /计算的第行元素/计算的第列元素 / 完成分解3. / 解方程组4. / 解方程组5.输出方程组的解例3.2 用多利特尔分解求解方程组:解:对,有对,有对,有解,即解,即3.2.2 追赶法很多科学计算问题中,常常所要求解的方程组为三对角方程组(3.25)其中 (3.26)并且满足条件:称为对角占优的三对角线矩阵。其特征是非零元素仅分布在对角线及对角线两侧的位置。在样条插值函数的关系式中就出现过这类矩阵。事实上,许多连续问题经离散化后得到的线性方程组,其系数矩阵就是三对角或五对角形式的对角矩阵。利用矩阵直接分解法,求解具有三对角线系数矩阵的线性方程组十分简单而有效。现将分解为下三角矩阵,及单位上三角矩阵的乘积。即,其中,(3.27)利用矩阵乘法公式,比较两边元素,可得到于是有(3.28)由些可见将分解为及,只需计算及 两组数,然后解 ,计算公式为: (3.29)再解则得 (3.30)整个求解过程是先由(3.28)及(3.29)求, 及 ,这时 是“追”的过程,再由(3.24)求出,这时 是往回赶,故求解方程组(3.25)的整个过程称为追赶法。3.2.3 对称矩阵的分解对称正定矩阵也是很多物理问题产生的一类矩阵,正定矩阵的各阶主子式大于零。可以证明,若正定,则存在下三角矩阵,使,直接分解的分解方法,称为平方根法。由于在平方根法中含有计算平方根的步骤,因此很少采用平方根法的分解形式。对于对称矩阵,常用的是分解。对作多利特尔分解,即(提出矩阵的对角元素)由对称正定,可得,令由的对称性和分解的惟一性可证即。(3.31) 是对角元素为1的单位下三角矩阵。对矩阵作多利特尔或库朗分解,共计算个矩阵元素;对称矩阵的分解,只需计算个元素,减少了近一半的工作量。借助于多利特尔或库朗分解计算公式,容易得到分解计算公式。设有多利特尔分解形式: 其中在分解可套用多利特尔分解公式,只要计算下三角矩阵和的对角元素。计算中只需保存的元素,的行列的元素用的表示。由于对称正定矩阵的各阶主子式大于零,直接调用多利特尔或库朗分解公式可完分解计算,而不必借助于列主元的分解算法。对于有(3.32) (3.33)由,解方程组可分三步完成:(1)解方程组,其中。 (3.34)(2)解方程组其中。 (3.35)(3)解方程 (3.36)对称矩阵的分解算法1输入:方程组阶数 ,系数矩阵和常数项。23略去解方程组步骤从矩阵分解角度看,直接分解法与消元法本质上没有多大区别,但实际计算时它们各有所长。一般来说,如果仅用单字长进行计算,列主元消元法具有运算量较少、精度高的优点,故是常用的方法。但是,为了提高精度往往采取单字长数双倍内积的办法(即作向量内积计算时,采用双倍加法,最终结果再舍入成单字长数),这时直接分解法能获得较高的精度。例3.4 用分解求解方程组:解:由,有3.3 范数3.3.1 向量范数在一维空间中,实轴上任意两点距离用两点差的绝对值表示。绝对值是一种度量形式的定义。范数是对函数、向量和矩阵定义的一种度量形式。任何对象的范数值都是一个非负实数。使用范数可以测量两个函数、向量或矩阵之间的距离。向量范数是度量向量长度的一种定义形式。范数有多种定义形式,只要满足下面的三个条件即可定义为一个范数。同一向量,采用不同的范数定义,可得到不同的范数值。定义3.1 对任一向量,按照一个规则确定一个实数与它对应,记该实数记为,若满足下面三个性质:(1),有,当且仅当时,(非负性)(3.37)(2),有(齐次性)(3),有(三角不等式)那么称该实数为向量的范数。几个常用向量范数向量的范数定义为其中,经常使用的是三种向量范数。或写成例3.5 计算向量的三种范数。向量范数的等价性有限维线性空间中任意向量范数的定义都是等价的。若是上两种不同的范数定义,则必存在,使均有或(证明略)向量的极限有了向量范数的定义 ,也就有了度量向量距离的标准,即可定义向量的极限和收敛概念了。设为上向量序列,若存在向量使,则称向量列是收敛的(是某种向量范数),称为该向量序列的极限。由向量范数的等价知,向量序列是否收敛与选取哪种范数无关。向量序列,收敛的充分必要条件为其序列的每个分量收敛,即存在。若,则就是向量序列的极限。例3.6 求向量序列极限向量。解:算出每个向量分量的极限后得在计算方法中,计算的向量序列都是数据序列,当小于给定精度时,取为极限向量。3.3.2 矩阵范数矩阵范数定义定义3.2 如果矩阵的某个非负实函数,记作,满足条件:(1)当且仅当时,(非负性)(2)(齐次性)(3)对于任意两个阶数相同的矩阵 有(三角不等式性)(4)矩阵为同阶矩阵(相容性)则称为矩阵范数。矩阵的算子范数常用的矩阵范数是矩阵的算子范数,可用向量范数定义:设,记方阵的范数为,那么 或 (3.38)称为矩阵的算子范数或从属范数。这样定义的矩阵范数满足矩阵范数的所有性质外,还满足相容性:为阶矩阵,恒有(3.39)根据定义,对任一种从属范数有,即单位矩阵的范数是1。常用矩阵范数向量有三种常用范数,相对应的矩阵范数的三种形式为:(的行范数) (3.40)(的列范数) (3.41)(是的最大特征值)(的2范数)(3.42)证明:既然矩阵的算子范数是上满足向量范数的上确界,那么,找到这个上确界也就找到了矩阵的范数。(1)任取,则即另一方面设极大值在 列达到,即取,除第个分量为1外,其余分量均为0,于是有,由于,故因此有(2)任取,则即另一方面设极大值在行达到,取这里于是故(3)为对称非负矩阵,具有非负特征值,并具有个相互正交的单位特征向量。设的特征值为,相应的特征向量为,其中为相互正交的单位向量。设,并且,即,则即对任意均有, 故 取,则有故 于是如果A是对称矩阵,那么,设的特征值是, 则有还有一种与向量范数相容的矩阵范数,称为欧几里得(Euclid)范数或舒尔(Schur)范数,用表示,其定义为 (3.43)因为欧几里得范数易于计算,在实用中是一种十分有用的范数。但它不能从属于任何一种范数,因为。与向量范数的等价性质类似,矩阵范数之间也是等价的。例3.7 ,分别有。解: 的特征值矩阵范数等价性定理 对上的任两种范数及,存在常数 ,使 t 矩阵特征值与范数关系若是矩阵的特征值(即存在非零向量使得:),对任一算子范数有又(相容性)即矩阵特征值的模不大于矩阵的任一范数。谱半径若有特征值记则称为的谱半径。有了谱半径的定义,矩阵的2范数可记为:。谱半径与矩阵范数关系由矩阵谱半径定义,可得到矩阵范数的另一重要性质,。3.4 矩阵的条件数 在解方程组时,我们总是假定系数矩阵和常数项是准确的,而在实际问题中,系数矩阵和常数项往往是从前面的近似计算所得,元素的误差是不可避免的。这些误差会对方程组的解产生多大的影响?矩阵的条件数将给出一种粗略的衡量尺度。定义3.3 若非奇异称为的条件数。其中表示矩阵的某种范数。用矩阵及其逆矩阵的范数的乘积表示矩阵的条件数,由于矩阵范数的定义不同,因而其条件数也不同,但是由于矩阵范数的等价性,故在不同范数下的条件数也是等价的。矩阵条件数的大小是衡量矩阵“坏”或“好”的标志。对于线性方程组,若系数矩阵有小扰动这时方程组的解也有扰动,于是。对的影响可表示为: (3.44)若常数有小扰动,其对的影响表示为: (3.45)因此,大的矩阵称为“坏矩阵”或“病态矩阵”。对于大的矩阵,小的误差可能会引起解的失真。一般说来,若的按模最大特征值与按模最小特征值之比值较大时,矩阵就会呈病态。特别地,当很小时,总是病态的。例3.8 方程组方程组的解为对常数项引入扰动,则解为即。虽然很小,但解已完全失真。故的病态是显而易见的。3.5 病态方程组的解法如果系数矩阵的条件数远大于1,则为病态方程组,对病态方程组求解可采用以下措施:(1)采用高精度运算,减轻病态影响,例如用双倍字长运算;(2)用预处理方法改善的条件数,即选择非奇异阵使与等价,而的条件数比改善,而求的解即为原方程组的解,计算时可选择为对角阵或三角阵;(3)平衡方法,当中元素的数量级相差很大,可采用行平衡或列平衡的方法改善的条件数。设非奇异,计算令,于是求等价于求,或这时的条件数可得到改善,这就是行均衡法。例3.9 给定方程组为A的条件数,若用行均衡法可取,则平衡后的方程为,用三位有效数字的列主元消元法求解得。3.6 程序示例 程序3.1用列主元高斯消元法求解方程组:算法描述输入:方程组阶数n,矩阵a及列向量b。分解过程:对选择交换第行和第行方程 对对回代过程:对解得程序源码/ #includestdio.h #includestdio.h #defineMAX-N20 /(xi,yi)的最大维数 int main()int n;int i,j,k;int mi;double mx, tmp;static ouble aMAXN ,MAXN,bMAXN,xMAX N;printf(“ninput nvalue (dim of Ax=b):”);/输入Ax=b的维数scanf(“%d”,&n);if(nMAXN)printf(“The input n is larger than MAXN,please redefine the MAXN.n”); return 1; if(n0)printf(“Please input a number between 1 and % d.n”,MAX_N);return 1; /输入Ax=b的A矩阵printf(“Now input the matrix a(i, j), i, j=0,% d: n”, n-1);for(i=0, in; j+) for(j=0;jn;j+ scanf(“%1f”,aij) /输入b向量printf(“ Now input the matrix b(i), i=0,,% d: n”, n-1);for(i=0;in; i+)scanf(“% 1f ”, &bi);for(i=0;in-1; i+)for(j=i+1,mi=i, mx=fabs(aii); jmx)mi=j;mx=fabs(aji);if(imi) /交换两行tmp=bi; bi=bmi; bmi=tmp;for(j=I; jn; j+) tmp=aij;aij=amij;amij= tmp; for(j=i+1; jn; j+) /高斯消元 tmp=-aji/aii;bj+=bi*tmp;for=(k=i, k0; i-) xi=bi;for(j=i+1, jn; j+)xi- =aij*xj;xi/=aii;printf(“Slovex_i=n”); /输出for(i=0; in+)printf(“%fn,xi”);return 0;/End of File计算实例用列主元高斯消元法水求解方程组: 程序输入输出Input n value(dim of Ax=b): 3Now input the matrix a(i, j), i, j=0, , 2:2 1 1 1 3 2 1 2 2Now input the matrix b(i), i=0, , 2:4 6 5Solve x_i=1.0000001.0000001.000000程序3.2 用库朗分解公式求解方程组:算法描述输入方程组阶数, 矩阵及列向量;将矩阵分解为,其中对对对 对对程序源码/ Purpose:库朗分解解Ax=b/#include#include#define MAXN20 /(xi,y i)的最大维数int main( ) int n;int i, j, k;int mi;double mx, tmp;statc doudle aMAXN MAXN,bMAXN,xMAX N,yMAXN;statc double IMAXN MAXN,uMAXN MAXN;printf(“nInput n value(dim of Ax=b):”);/输入的维数scanf(“%d”,&n);if(nMAXN) printf(“The input n is larger then MAXN,pleadefine the MAXN.n”);return 1;if(n=0) printf(“Please input a number between 1 and %d.n”, MAX N);retun 1;/输入的矩阵printf(“Now input the matrix a(i,j),i,j=0,%d.n”,n-1);for(i=0;in;i+) for(j=0;jn;j+) scanf(“%If”,&aij); /输入b矩阵 printf(“Now input the matrix b(i),i=0,d:n”,n-1);for(i=0;in;i+)scanf(“%If”,&bi);for(i=0;in;i+)uii=1; /U矩阵对角元素为1for(k=0;kn;k+) for(i=k;in;i+) /计算矩阵的第列元素 1ik=aik;For(j=0;j=k1;j+, 1ik =(1ij*ujk);for(j=k+1;jn; j+) /计算矩阵的第行元素ukj=akj;for(i=0; i=k-1; i+)ukj - =(1kj*uij);ukj/=1 kk;for(i=0; in; i+) /Ly=b计算y yi=bi;for(j=0; i=0; i-) /Ux=y计算x xi=yi;for(j=i+1; jn; j+)xi-=(uij*xj);printf(“Solvex_I=n”); /输出for(i=0; i=n; I+)printf(“% fn”,xi);return 0; 计算实例用库朗分解公式求解方程组:程序输入输出Input n value(dim of Ax=b):3Now input the matrix a(i,j)i,j=0,,2:1 2 1 -2 -1 -5 0 -1 6 Now input the matrix b(i),i=0,,2:24 63 50s

温馨提示

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

评论

0/150

提交评论