



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一、初等行变换求逆矩阵* 初等变换法求逆矩阵A()数组为输入变量,存放输入的矩阵A1()数组为输出变量,存放A()的逆矩阵Sub InverseMatrix(A(), A1() If UBound(A, 1) UBound(A, 2) Then MsgBox 逆矩阵不存在, vbInformation, 提示: Exit Sub 判断矩阵是否为方阵,若不是则退出过程 Dim B(), N B()存放A()矩阵与单位矩阵的增广矩阵 N = UBound(A) ReDim B(N, 2 * N) 求A与单位矩阵的增广矩阵 For i = 1 To N For J = 1 To 2 * N If J = N Then B(i, J) = A(i, J) ElseIf J - N = i Then B(i, J) = 1 Else B(i, J) = 0 End If Next Next 将增广矩阵化为行最简形矩阵 For i = 1 To N 判断增广矩阵左边的n阶矩阵的对角线上的元素,是否为零,若为零则进行行交换 If B(i, i) = 0 Then 若为零,则与该列的非零元素所对应的行进行交换 For J = i + 1 To N If B(J, i) 0 Then 若该列有非零元素,则进行行交换 For I1 = 1 To 2 * N C = B(i, I1) B(i, I1) = B(J, I1) B(J, I1) = C Next Exit For End If Next 若该列没有一个非零元素,即该列的元素全为零,则可知逆矩阵不存在 If J = N + 1 Then MsgBox 逆矩阵不存在, vbInformation, 提示: Exit Sub End If 将每列,非对角线上的元素化为零 For J = 1 To N If J i Then If B(J, i) 0 Then H1 = B(J, i) / B(i, i) For J1 = i To 2 * N B(J, J1) = B(J, J1) - H1 * B(i, J1) Next End If End If Next Next i 将增广矩阵化为行最简形矩阵,并将其右边的逆矩阵赋给A1()数组 For i = 1 To N k = B(i, i) B(i, i) = B(i, i) / k For J = N + 1 To 2 * N B(i, J) = B(i, J) / k A1(i, J - N) = B(i, J) Next NextEnd Sub*二、伴随矩阵法求逆矩阵*本过程的作用是,求N阶矩阵的逆矩阵Sub InverseMatrix1(A(), B() A()存放n阶矩阵,B()存放n阶矩阵的逆矩阵 Dim i, J, I1, J1, C(), k, K1, H For i = 1 To UBound(A) 求n阶矩阵每行上的元素 For J = 1 To UBound(A) 求n阶矩阵每列上的元素 ReDim C(UBound(A) - 1, UBound(A) - 1) C()存放n阶矩阵的余子式 一下代码作用是,去除n阶矩阵中第j行,第i列,并把其余子式存放在C()中 For I1 = 1 To UBound(A) If I1 = J Then k = 1 Else For J1 = 1 To UBound(A) If J1 = i Then K1 = 1 Else C(I1 - k, J1 - K1) = A(I1, J1) End If Next K1 = 0 End If Next B(i, J) = (-1) (i + J) * valOfDet(C)/valofDet(A) B()存放N阶矩阵的逆矩阵中的各元素 k = 0: K1 = 0 Erase C Next NextEnd Sub*Function valOfDet(A() A()为存放n阶行列式的二维数组,valOfDet存放行列式的值 Dim g, i, J, N, B(), k, H, A1() N为行列式的阶数 N = UBound(A) ReDim A1(N, N) For i = 1 To N For J = 1 To N A1(i, J) = A(i, J) Next Next 对行列式的对角线下三角的每一行化零 For g = N To 2 Step -1 求出第g行中有多少个不为零的数据,并把它存放在B()数组里 For i = 1 To g - 1 If A1(g, i) 0 Then ReDim Preserve B(k + 1) B(k + 1) = i 记录数据不为零的列数 k = k + 1 End If Next 将每个不为零的数据化为零 If k 0 Then For i = 1 To UBound(B) 对每行中最后一个不为零的数据进行化零 If i = UBound(B) Then 对该行中数据不为零的最后一列进行化零处理 如果该行所对应的对角线上的数据为零,则进行数据对换 If A1(g, g) = 0 Then For J = 1 To g C = A1(J, B(i) A1(J, B(i) = A1(J, g) A1(J, g) = C NextH = H + 1 记录交换的次数 Else 若对角线上的数据不为零,则将该行中数据不为零的最后一列化为零 For J = 1 To g A1(J, B(i) = A1(J, B(i) - A1(g, B(i) / A1(g, g) * A1(J, g) Next End If Else 对该行中数据不为零的非最后一列数据进行化零处理 For J = 1 To g A1(J, B(i) = A1(J, B(i) - A1(g, B(i) / A1(g, B(i + 1) * A1(J, B(i + 1) Next End If Next End If Erase B: k = 0 Next valOfDet = 1# 通过求行列式对角线上各数据的积,计算行列式的值 For i = 1 To N If A1(i, i) = 0 Then valOfDet
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 三只青蛙时间管理课件
- 2025-2030中国对氟苯胺(4-氟苯胺)行业供需状况与未来前景预测报告
- 2025年春期末测试-四年级英语试卷质量分析
- 小兔子分萝卜课件
- 妈妈的歌音乐教案
- 保险领域面试问题及答案精 编
- 编制行业面试必 备:中央编办面试题库
- 大学教师节活动总结
- 基础实习报告
- 难点详解自考专业(小学教育)真题及答案【考点梳理】
- YY 9706.261-2023医用电气设备第2-61部分:脉搏血氧设备的基本安全和基本性能专用要求
- GB/T 4937.20-2018半导体器件机械和气候试验方法第20部分:塑封表面安装器件耐潮湿和焊接热综合影响
- GB/T 3836.1-2021爆炸性环境第1部分:设备通用要求
- GB/T 25216-2010煤与瓦斯突出危险性区域预测方法
- 变压器运行维护手册
- GA/T 1161-2014法庭科学DNA检验鉴定文书内容及格式
- 云南专升本会计试题
- 民间信仰活动场所信息采集表
- 2023年版义务教育音乐课程标准(标准版)
- 神华包头煤化工分公司2013年夏季水平衡测试报告
- 有效咳嗽技术操作评分标准
评论
0/150
提交评论