jie.txt

来自「解各类线性方程的方法以及相关的编程! 希望可以采用我这个工程软件,我可是花了好多」· 文本 代码 · 共 272 行

TXT
272
字号
文件头:

Private Sub Command1_Click()


Dim a() As Double, b() As Double, n As Integer


n = 3


ReDim a(n, n) As Double, b(n) As Double


a(1, 1) = 2


a(1, 2) = 0


a(1, 3) = 0


a(2, 1) = 3


a(2, 2) = 1


a(2, 3) = 0


a(3, 1) = 0


a(3, 2) = 4


a(3, 3) = 1


b(1) = 2


b(2) = 4


b(3) = 5


Solve a(), b()


Print b(1), b(2), b(3)


End Sub





Private Sub Solve(a() As Double, b() As Double)


'Gaussian elimination method, coded by www.dayi.net btef (please let this line remain)


Dim ii As Integer, i As Integer, j As Integer


Dim i1 As Integer, d1 As Double


Dim n As Integer, index() As Integer, x() As Double


Dim maxV As Double, maxI As Integer, maxJ As Integer





n = UBound(b)


ReDim index(n) As Integer, x(n) As Double


For i = 1 To n


index(i) = i


Next i





For ii = 1 To n - 1


maxV = Abs(a(ii, ii))


maxI = ii


maxJ = ii


For i = ii To n


For j = ii To n


If Abs(a(i, j)) > maxV Then


maxV = Abs(a(i, j))


maxI = i 'row of max element


maxJ = j 'column of max element


End If


Next j


Next i


If ii <> maxI T文件尾:

hen 'exchange rows


d1 = b(maxI)


b(maxI) = b(ii)


b(ii) = d1


For j = ii To n


d1 = a(maxI, j)


a(maxI, j) = a(ii, j)


a(ii, j) = d1


Next j


End If


If ii <> maxJ Then 'exchange columns


i1 = index(maxJ)


index(maxJ) = index(ii)


index(ii) = i1


For i = 1 To n


d1 = a(i, maxJ)


a(i, maxJ) = a(i, ii)


a(i, ii) = d1


Next i


End If





For i = ii + 1 To n 'elemination


d1 = a(i, ii) / a(ii, ii)


For j = ii + 1 To n


a(i, j) = a(i, j) - a(ii, j) * d1


Next j


b(i) = b(i) - b(ii) * d1


Next i


Next ii





x(n) = b(n) / a(n, n) 'back substitution


For i = n - 1 To 1 Step -1


d1 = 0#


For j = i + 1 To n


d1 = d1 + a(i, j) * x(j)


Next j


x(i) = (b(i) - d1) / a(i, i)


Next i


For i = 1 To n


b(index(i)) = x(i)


Next i





End Sub


⌨️ 快捷键说明

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