怎么用VB解多元一次方程组

 我来答
尘入蜓孟影食1038
2018-03-05 · TA获得超过3511个赞
知道大有可为答主
回答量:2307
采纳率:87%
帮助的人:1287万
展开全部
Public Function 解方程(增广矩阵() As Single, 解() As Single) As Boolean
    Dim n As Integer, m As Integer, k As Integer, w As Single, 矩阵() As Single
    Dim i As Integer, j As Integer
    n = UBound(增广矩阵, 1)
    m = UBound(增广矩阵, 2)
    k = UBound(解)
    If n <> k Or n + 1 <> m Then
        MsgBox "增广矩阵的行列不匹配,或者与结果绝阵行数不匹配。", vbExclamation
        解方程 = False
        Exit Function
    End If
    ReDim 矩阵(n, m)
    For i = 0 To n
        For j = 0 To m
            矩阵(i, j) = 增广矩阵(i, j)
        Next j
    Next i
    
    For i = 0 To n
        For j = i + 1 To n
            If Abs(矩阵(i, i)) < Abs(矩阵(j, i)) Then
                For k = i To n + 1
                    w = 矩阵(i, k)
                    矩阵(i, k) = 矩阵(j, k)
                    矩阵(j, k) = w
                Next k
            End If
        Next j
        If 矩阵(i, i) = 0 Then
            MsgBox "至少存在一组同构方程,该组方程无定解。", vbExclamation
            解方程 = False
            Exit Function
        End If
        For j = i + 1 To m
            矩阵(i, j) = 矩阵(i, j) / 矩阵(i, i)
        Next j
        矩阵(i, i) = 1
        For j = i + 1 To n
            w = 矩阵(j, i)
            For k = i To m
                矩阵(j, k) = 矩阵(j, k) - 矩阵(i, k) * w
            Next k
        Next j
    Next i
    For i = n To 0 Step -1
        w = 0
        For j = i + 1 To n
            w = w + 矩阵(i, j) * 解(j)
        Next j
        解(i) = (矩阵(i, m) - w) / 矩阵(i, i)
    Next i
    解方程 = True
 End Function
 
Private Sub Command1_Click()
    Dim n As Integer, a() As Single, x() As Single
    n = InputBox("请输入方程组元数(未知数个数n)")
    ReDim a(n - 1, n)
    ReDim x(n - 1)
    Print "给定方程组的增广矩阵为:"
    For i = 0 To n - 1
        For j = 0 To n
            a(i, j) = InputBox("输入系数矩阵A(" & i + 1 & "," & j + 1 & ")")
            Print a(i, j);
        Next j
        Print
    Next i
    If 解方程(a(), x()) Then
        For k = 0 To n - 1
            Print "x("; k + 1; ")"; "="; x(k)
        Next k
    End If
End Sub


Private Sub Form_Load()
    Me.AutoRedraw = True
End Sub
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式