|
发表于 2012-6-14 08:41:13
|
显示全部楼层
下面是一个一元二次方程式的曲线拟合源代码- Public Sub qxnh2() '最小二乘曲線擬合y=a+bx+cx^2
- Dim B, C, m, n, a(1 To 10, 1 To 10) As Double
- Dim I, J, K, d(10) As Double
- 'm = 14 '9 'm為數據個數
- For I = 1 To 10 Step 1
- d(I) = 0
- Next I
-
- For I = 1 To m Step 1
-
- d(1) = d(1) + X(I)
- a(1, 2) = d(1)
-
- d(2) = d(2) + X(I) ^ 2
- a(1, 3) = d(2)
-
- d(3) = d(3) + Y(I)
- a(1, 4) = d(3)
-
- d(4) = d(4) + X(I) ^ 3
- a(2, 3) = d(4)
-
- d(5) = d(5) + X(I) * Y(I)
- a(2, 4) = d(5)
-
- d(6) = d(6) + X(I) ^ 4
- a(3, 3) = d(6)
-
- d(7) = d(7) + X(I) ^ 2 * Y(I)
- a(3, 4) = d(7)
-
- Next I
-
-
-
- a(1, 1) = m
- a(2, 1) = a(1, 2)
- a(2, 2) = a(1, 3)
- a(3, 1) = a(1, 3)
- a(3, 2) = a(2, 3)
-
- n = 3 'n為行數
- m = 4 'm為列數
-
- For K = 1 To n - 1 Step 1
- For I = K + 1 To n Step 1
- For J = K + 1 To m Step 1
- a(I, J) = a(I, J) - a(I, K) * a(K, J) / a(K, K)
- Next J
- Next I
- Next K
-
-
- Z(n) = a(n, m) / a(n, n)
-
-
- For K = n - 1 To 1 Step -1
- Z(K) = 0
- For J = n To K + 1 Step -1
- Z(K) = Z(K) + a(K, J) * Z(J)
- Next J
- Z(K) = (a(K, m) - Z(K)) / a(K, K)
- Next K
-
-
- xs(1) = Z(1)
- xs(2) = Z(2)
- xs(3) = Z(3)
- xs(4) = 0
-
- End Sub
复制代码 |
|