网站大量收购独家精品文档,联系QQ:2885784924

数据结构 的案例2.docVIP

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构 的案例2

在高斯消去法中,我们试图将原n元线性方程组消减为三角形(又称上三角形)。在三角矩阵中,对角线以下的矩阵元素的系数均为0。对高斯消去法而言,最有用的是各行经标准化处理后对角线元素均为1的三角矩阵。图8.15 为标准化后三角矩阵形式的原方程,对角线上的系数(彩色)和向量Y的各分量数值已不再是原来的数值。 与图8.15对应的3个方程为: x1+x2+x3=4 x2-x3=1 x3=4 这个方程组得求解相当简单:解最后一个方程求的x3(即x3等于1),将其代入上面的方程中求得x2(x2等于2),再把这两个值代入第一个方程中求得x1(即x1等于1)。这一过程称为回代。高斯消去法的算法如下。 1高斯消去法算法 将原方程组变换为标准矩阵; 用回代法求解xi. *=. 图8.15标准三角矩阵形式的原方程 2增广矩阵 在继续学习有关内容前,我们必须确定采用何种数据结构表示有n个未知数的n元线性方程组。表示这类方程组的一种广泛采用的方法是增广矩阵。这种特殊的表示方法可以使矩阵的三角化和回代法的编程更简洁。 图8.16给出了有n个未知数的n元线性方程组的增广矩阵形式。增广矩阵可以用一个二维数组Aug表示。需要注意的是,增广矩阵有n行n+1列,增广矩阵的最后一列(以彩色标出)是常数向量Y(如,aug1.4为y1),增广矩阵的其余各列为系数矩阵A(如aug1.1 为a1,1).我们见不到有未知数的向量,当线性方程组用增广矩阵表示时,未知数是隐含的。 我们的目标是把增广矩阵中的系数标准化,三角化——也就是将矩阵化简到土8.17的形式:aug1,1, aug2,2 和,aug3,3为1, aug2,1 ,aug3,2 和 aug3,2 为0。图8.17中的其他值以彩色显示,且记为aij,和yi,,单撇号用以强调这些数值与原方程中的值不懂同而已。 (a)一般形 (b)示例 图8.17三角形化后的标准增广矩阵 增广矩阵的标准化与三角形化 现在我们把注意力集转到三角形化和标准化处理上来,也就是把原方程组转换为标准化的上三角形矩阵形式的新方程组。如果我们仅对增广矩阵Aug进行如下操作: Aug的任一行乘以一个非零的数。 将Aug任一行的若干倍加到另一行上。 将任意两行交换 。 若方程组有惟一解,我们就可以用上述3种操作把方程组变换为所需要的形式(若方程组没有惟一解,我们的算法也能够识别出来)。 我们从aug1,1开始沿对角线依次下移,对增广矩阵的三角化。当我们对某个对角线元素进行处理时,我们称该元素为主元素。当augp,p为主元素时,我们要完成两个目标: 对主元素所在行标准化,使得主元素的值为1。 令主元素以下的各列系数均为0----即元素augp+1,p,augp+2,p,…,augn,p的值为0。 第一个目的可以通过将主元素所在行乘以一个适当的常数(即1/augp,p)实现,这是操作1的应用。第二个目的可以对主元素以下的各行操作2实现。 为了进可能小三角形化过程中计算的舍入误差,建议总是尽量把最大的系数(绝对值)放在主元素的位置。当你处理第p个主元素是,应当检查一下自主元素以下的各列元素,找出绝对值最大的系数,并将其所在行与主元素所在行交换。方程组得解不会因此改变,因为行交换是3种允许操作之一(操作3)。将当前行与包含最大主元素的行交换称为主元素定位。 如果最大主元素的值为零怎么办?这种情况只有在主元素以下的所有值均为零时才会出现。如果自主元素以下找不到一个非零值,则已知方程组没有惟一解。 上述讨论的各种操作在下面的算法中进行了概括。局部变量ok表示方程组是否有惟一解。 局部变量 int p /*当前行*/ int ok /*标识方程组是否有惟一解得标志*/ 3高斯函数的算法 先假设方程组有惟一解。 P初始化为首行的下标。 当可能有唯一解且p最后一行的下标时重复。 用最大主元素策略确定主元素。 若仍可能有惟一解 主元素行标准化。 消去主元素以下的系数。 对下一行继续处理(++p)。 若最后系数为零。 没有惟一解。 否则有惟一解 11.将最后一行标准化。 函数gauss如图8.18 所示。在主元素进行标准化(步骤6)的程序段中,首先保存主元素的倒数,接着把主元素置为1,然后主元素右侧的各个元素(列p+1至列N)依次主元素的倒数。主元素左边的元素无需改变,因为它们的值都为零,第9步的测试是为了避免对最后一行的标准化时出现除数为零的情况。在步骤11中,只要最后两行元素需要改变。 在第7步,修改主元素以下的各行j(j=

文档评论(0)

fangsheke66 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档