vb解十元一次方程
vb解10元一次方程
关于最小二乘法的多元线性回归。求回归系数b0-b9。自变量有9个:x1-x9,是用excel导入到VB里的数据,每个自变量有30个数据。因变量y也有30个数据。现在要用VB编写一个程序算出b0-b9,求代码!可以用矩阵来写。http://hi.baidu.com/mfxvlirgqhnsxys/item/4bfae77d7949ea3c7144239c
截图我上传不了,如果对多元线性回归不了解的话可以参考以上网站。谢谢了
------最佳解决方案--------------------
这是我写的,截距为0的时候,比如y=ax*x+bx+c,截距为0的话,那么c=0,截距不为0的时候,可以稍微修改一下下面这个代码
关于最小二乘法的多元线性回归。求回归系数b0-b9。自变量有9个:x1-x9,是用excel导入到VB里的数据,每个自变量有30个数据。因变量y也有30个数据。现在要用VB编写一个程序算出b0-b9,求代码!可以用矩阵来写。http://hi.baidu.com/mfxvlirgqhnsxys/item/4bfae77d7949ea3c7144239c
截图我上传不了,如果对多元线性回归不了解的话可以参考以上网站。谢谢了
------最佳解决方案--------------------
这是我写的,截距为0的时候,比如y=ax*x+bx+c,截距为0的话,那么c=0,截距不为0的时候,可以稍微修改一下下面这个代码
'**************************************************
'过程名称:LeastSquare2 ,截距强制为0.
'过程功能:解三次方程式
'入口参数:arrX() ------------- 无因次后的测量值
' arrY(() ------------- 无因次后的输入压力点值
' length -------------- 标定点数
' d ---------------方程最高次数
'出口参数:ReturnCoeff() --- 返回的N次方程系数
'作者:by 孔苏群 2012-11-19
'**************************************************
Public Sub LeastSquare2(arrX() As Double, arrY() As Double, length As Long, ReturnCoeff() As Double, d As Long)
Dim i As Long
Dim j As Long
Dim n As Long
n = d + 1
m = d + 2
Dim Guass() As Double
ReDim Guass(0 To n - 1, 0 To m - 1)
For i = 0 To n - 1
For j = 1 To n - 1 ’如果要截距不为0,那么这里修改为For j=0开始循环
Guass(i, j) = SumArr1(arrX, j + i, length)
Next j
Guass(i, j) = SumArr2(arrX, i, arrY, 1, length)
Next i
Call ComputGauss(Guass, n, ReturnCoeff)
End Sub
'求和运算
'作者:by 孔苏群 2012-11-19
'**************************************************
Function SumArr1(arr() As Double, n As Long, length As Long) As Double
Dim s As Double
Dim i As Double
s = 0
For i = 0 To length - 1
If arr(i) <> 0 Or n <> 0 Then
s = s + arr(i) ^ n
Else
s = s + 1
End If
Next i
SumArr1 = s
End Function
'求平方和运算
Function SumArr2(arr1() As Double, n1 As Long, arr2() As Double, n2 As Long, length As Long) As Double
Dim s As Double
Dim i As Double
s = 0
For i = 0 To length - 1
If (arr1(i) <> 0 Or n1 <> 0) And (arr2(i) <> 0 Or n2 <> 0) Then
s = s + arr1(i) ^ n1 * arr2(i) ^ n2
Else
s = s + 1
End If
Next
SumArr2 = s
End Function
'作者:by 孔苏群 2012-11-19
'**************************************************
Public Sub ComputGauss(Guass() As Double, n As Long, X() As Double)
Dim i As Long, k As Long, m As Long
Dim j As Long
Dim Temp As Double
Dim max As Double
Dim s As Double
For j = 1 To n - 1 '如果截距不为0 这里从For j=0开始循环