📄 module1.bas
字号:
Attribute VB_Name = "Module1"
Option Explicit
'***********************************************************
'用cholesky来求线性方程组,要求系数矩阵是正定对称矩阵
Public Function cholesky(n As Integer, a() As Double, b() As Double, x() As Double)
Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim L() As Double
ReDim L(n, n) As Double
Dim y() As Double
ReDim y(n) As Double
For i = 1 To n
For j = 1 To i
If j = i Then
For k = 1 To i - 1
L(i, i) = L(i, i) + L(i, k) ^ 2
Next k
L(i, i) = a(i, i) - L(i, j)
L(i, i) = L(i, i) ^ 0.5
Else
For k = 1 To j - 1
L(i, j) = L(i, j) + L(i, k) * L(j, k)
Next k
L(i, j) = a(i, j) - L(i, j)
L(i, j) = L(i, j) / L(j, j)
End If
Next j
For j = 1 To i - 1
y(i) = y(i) + L(i, j) * y(j)
Next j
y(i) = b(i) - y(i)
y(i) = y(i) / L(i, i)
Next i
For i = n To 1 Step -1
For j = i + 1 To n
x(i) = x(i) + L(j, i) * x(j)
Next j
x(i) = y(i) - x(i)
x(i) = x(i) / L(i, i)
Next i
'For i = 1 To n
'x(i) = x(i) / (111.5 * 111.5)
'Next i
End Function
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -