📄 module5.bas
字号:
Attribute VB_Name = "Module5"
'对曲线做最小二乘法的拟合
Public Sub DoData1()
Dim i As Integer '循环变量
Dim xAve As Double 'X的平均值
Dim MaxMin(1 To 2, 1 To 4) As Single '拟和后最大值,最小值
Dim a(6) As Double '存储多项式的5个系数
Dim dt(3) As Double
Dim j As Integer, K As Integer
Dim g As Double
Dim z As Double, p As Double, c As Double, q As Double, d1 As Double, d2 As Double
Dim s(20) As Double, t(20) As Double, b(20) As Double
Dim m As Integer '循环变量
Dim xSum As Double '存储X的总和
Dim N As Integer
'首先获得最小二成拟合多项式的系数
m = 1
For i = 0 To 5
a(i) = 0
Next i
z = 0
For i = 0 To 9
z = z + i / 10
Next i
b(0) = 1
d1 = 10
p = 0
c = 0
For i = 0 To 9
p = p + i - z
c = c + Shun(i, m)
Next i
c = c / d1
p = p / d1
a(0) = c * b(0)
t(1) = 1
t(0) = -1 * p
d2 = 0
c = 0
g = 0
For i = 0 To 9
q = i - z - p
d2 = d2 + q * q
c = c + Shun(i, m) * q
g = g + (i - z) * q * q
Next i
c = c / d2
p = g / d2
q = d2 / d1
d1 = d2
a(1) = c * t(1)
a(0) = c * t(0) + a(0)
For j = 2 To 5
s(j) = t(j - 1)
s(j - 1) = -p * t(j - 1) + t(j - 2)
If (j >= 3) Then
For K = 1 To j - 2
s(j - 1 - K) = -p * t(j - 1 - K) + t(j - 2 - K) - q * b(j - 1 - K)
Next K
End If
s(0) = -p * t(0) - q * b(0)
d2 = 0
c = 0
g = 0
For i = 0 To 9
q = s(j)
For K = 0 To j - 1
q = q * (i - z) + s(j - 1 - K)
Next K
d2 = d2 + q * q
c = c + Shun(i, m) * q
g = g + (i - z) * q * q
Next i
c = c / d2
p = g / d2
q = d2 / d1
d1 = d2
a(j) = c * s(j)
t(j) = s(j)
For K = 0 To j - 1
a(j - 1 - K) = c * s(j - 1 - K) + a(j - 1 - K)
b(j - 1 - K) = t(j - 1 - K)
t(j - 1 - K) = s(j - 1 - K)
Next K
Next j
'===========================
'获取系数结束
'===========================
xSum = 0
For i = 0 To 9
xSum = i + xSum
Next i
xAve = xSum / 10
'根据多项式生成你和结果和最大值、最小值
For i = 0 To 9
'生成结果数组
Shun(i, m) = a(0) + a(1) * (i - xAve) + a(2) * (i - xAve) * (i - xAve) _
+ a(3) * (i - xAve) * (i - xAve) * (i - xAve) + a(4) * (i - xAve) _
* (i - xAve) * (i - xAve) * (i - xAve) + a(5) * (i - xAve) _
* (i - xAve) * (i - xAve) * (i - xAve) * (i - xAve)
Next i
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -