⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 module1.bas

📁 采用按列消去
💻 BAS
字号:
Attribute VB_Name = "Module1"
Option Explicit

Public Function gosi(n As Integer, aa() As Double, bb() As Double, X() As Double)
Dim i, j, k As Integer
Dim temp As Double
Dim tempnum As Integer
Dim a() As Double
ReDim a(1 To n, 1 To n) As Double
Dim b() As Double
ReDim b(1 To n) As Double
'--------------------保持输入系数及常数矩阵不变
For i = 1 To n
    For j = 1 To n
        a(i, j) = aa(i, j)
    Next j
    b(i) = bb(i)
Next i

'**************************

'----------------------------对系数矩阵进行初步处理,使对角元素尽可能为所在列的最大值
For i = 1 To n - 1
    temp = Abs(a(i, i))
    tempnum = i
    For j = i To n
        If temp < Abs(a(j, i)) Then
            temp = Abs(a(j, i))
            tempnum = j
        Else
        End If
    Next j
    For j = 1 To n
        temp = a(i, j)
        a(i, j) = a(tempnum, j)
        a(tempnum, j) = temp
    Next j
        temp = b(i)
        b(i) = b(tempnum)
        b(tempnum) = temp
Next i
'**********************************************
For i = 1 To n - 1
    If a(i, i) = 0 Then
        For j = i To n
            If a(j, i) <> 0 Then '寻找所在列不为0的行,并调换
                For k = i To n
                    temp = a(j, k)
                    a(j, k) = a(i, k)
                    a(i, k) = temp
                Next k
                temp = b(i)
                b(i) = b(j)
                b(j) = temp
            Else
            End If
            Exit For
        Next j
    Else
    End If
    
    If a(i, i) = 0 Then
        MsgBox "error!"
        Exit Function
    End If
    
'----------------------------消去
    For j = i + 1 To n
         For k = n To i + 1 Step -1
             a(j, k) = a(j, k) - a(i, k) * a(j, i) / a(i, i)
         Next k
         b(j) = b(j) - b(i) * a(j, i) / a(i, i)
         a(j, k) = a(j, k) - a(i, k) * a(j, i) / a(i, i)
     Next j
     
Next i
'----------------------回代
For i = n To 1 Step -1
    For j = i + 1 To n
        X(i) = X(i) + a(i, j) * X(j)
    Next j
    X(i) = b(i) - X(i)
    X(i) = X(i) / a(i, i)
Next i

End Function

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -