VB求解多元线性方程组的程序

上传人:豆浆 文档编号:31209971 上传时间:2018-02-05 格式:DOCX 页数:11 大小:178.41KB
返回 下载 相关 举报
VB求解多元线性方程组的程序_第1页
第1页 / 共11页
VB求解多元线性方程组的程序_第2页
第2页 / 共11页
VB求解多元线性方程组的程序_第3页
第3页 / 共11页
VB求解多元线性方程组的程序_第4页
第4页 / 共11页
VB求解多元线性方程组的程序_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《VB求解多元线性方程组的程序》由会员分享,可在线阅读,更多相关《VB求解多元线性方程组的程序(11页珍藏版)》请在金锄头文库上搜索。

1、用 VB 写的求解多元线性方程组的程序使用时将方程组的系数矩阵和常数矩阵输入一 EXCEL 工作表最后将结果也输出到该表格内如上图,对应的方程组为:2X+3Y+Z=44X+2Y+3Z=177X+Y-Z=1系数矩阵在 SHEET1 中输入,常数矩阵在 SHEET2 第一列中输入求解结果在 SHEET2 第三列输出在工程中需添加以下两个控件简陋的界面如下:未知数的个数与系数矩阵的行数对应以下为代码通用部分输入以下代码Option Base 1Dim xlApp As Excel.Application 定义 EXCEL 类Dim xlBook As Excel.Workbook 定义工作簿类Dim

2、 xlSheet As Excel.Worksheet 定义工作表类Dim M, N, p As IntegerDim A(), mtxA(), C() As Double按键一单机事件输入Private Sub CMDOPEN_Click()从 EXCEL 文件中导入方程组系数矩阵的数据从 Sheet1 左上角开始输入,一个单元格输入一个系数,一行输入一个方程Set xlApp = CreateObject(Excel.Application)xlApp.Visible = TrueCD1.ShowOpenSet xlBook = xlApp.Workbooks.Open(CD1.FileN

3、ame)Set xlSheet = xlBook.Worksheets(1)xlSheet.ActivatexlApp.Caption = VB 程序正在调用该文件-M = Text1.TextN = Mp = 1ReDim mtxA(M, N)ReDim B(N, p)ReDim C(M, p)读系数矩阵For i = 1 To MFor j = 1 To NmtxA(i, j) = xlSheet.Cells(i, j)Next jNext i矩阵求逆t = MRinv(Int(M)读常量矩阵从 Sheet2 左上角开始,一单元格输入一个系数,一行输入一个Set xlSheet = xlB

4、ook.Worksheets(2)xlSheet.ActivateFor i = 1 To MB(i, 1) = xlSheet.Cells(i, 1)Next i矩阵相乘For i = 1 To MFor j = 1 To p C(i, j) = 0For k = 1 To NC(i, j) = mtxA(i, k) * B(k, j) + C(i, j)Next kNext jNext i结果输出For i = 1 To MxlSheet.Cells(i, 3) = C(i, 1)Next iEnd Sub系数矩阵求逆的函数( 参考下面网址)http:/ MRinv(N As Intege

5、r) As BooleanReDim nIs(N) As Integer, nJs(N) As IntegerDim i As Integer, j As Integer, k As IntegerDim D As Double, p As Double 全选主元,消元For k = 1 To ND = 0#For i = k To N For j = k To Np = Abs(mtxA(i, j)If (p D) ThenD = pnIs(k) = inJs(k) = jEnd IfNext jNext i 求解失败If (D + 1# = 1#) ThenMRinv = FalseExi

6、t FunctionEnd IfIf (nIs(k) k) ThenFor j = 1 To Np = mtxA(k, j)mtxA(k, j) = mtxA(nIs(k), j)mtxA(nIs(k), j) = pNext j End IfIf (nJs(k) k) ThenFor i = 1 To Np = mtxA(i, k)mtxA(i, k) = mtxA(i, nJs(k)mtxA(i, nJs(k) = pNext iEnd IfmtxA(k, k) = 1# / mtxA(k, k)For j = 1 To NIf (j k) Then mtxA(k, j) = mtxA(k

7、, j) * mtxA(k, k)Next jFor i = 1 To NIf (i k) ThenFor j = 1 To NIf (j k) Then mtxA(i, j) = mtxA(i, j) - mtxA(i, k) * mtxA(k, j)Next jEnd IfNext i For i = 1 To NIf (i k) Then mtxA(i, k) = -mtxA(i, k) * mtxA(k, k)Next iNext k 调整恢复行列次序For k = N To 1 Step -1If (nJs(k) k) ThenFor j = 1 To Np = mtxA(k, j)mtxA(k, j) = mtxA(nJs(k), j)mtxA(nJs(k), j) = pNext jEnd IfIf (nIs(k) k) ThenFor i = 1 To Np = mtxA(i, k)mtxA(i, k) = mtxA(i, nIs(k)mtxA(i, nIs(k) = pNext iEnd IfNext k 求解成功MRinv = TrueEnd Function

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号