我试图谷歌自己解决这个问题,似乎我找不到任何解决方案。
XValues() as Integer
从0变为359. 其值可以从0开始到359,每个位置会增加1。 YValues() As Double
也从0变为359并且其值或多或少作为抛物线从< -3到0再到< -3。无论如何,最大可能值为0,可能的最小值为-80。 当然我想用LinEst
。
LinEst
的语法允许您提供“已知的ys”,“已知的xs”以及我目前不需要的其他几个参数。
Application.LinEst
似乎我的数组被处理了,但是我不能强制程序给我3阶多项式的系数(我可以吗? )WorksheetFunction.LinEst
我可以指定学位,但我显然无法使用我的变量。当然我可以在某处编写我的数组,然后使用第二种选项,但我真的很想知道是否有更好的方法...
答案 0 :(得分:4)
(1)使用LINEST
和图表
(2)使用VBA
与变体
相同的结果
(注意(i)选项1使用1D变体,选项2使用2D(ii)关键部分使用Power
我在不同的论坛上看了一段时间)
Sub Test()
Dim Y
Dim X
Dim Arr1
Dim Arr2
With Application
Y = .Transpose([a1:a10])
X = .Transpose([b1:b10])
Arr1 = .Power(.Transpose(X), Array(1, 2, 3))
Arr2 = .LinEst(Y, .Transpose(Arr1))
End With
MsgBox "coefficients are " & Chr(10) & Join(Arr2, Chr(10))
End Sub
2B使用带有2D变体的VBA
相同的结果
Sub Test2()
Dim Y
Dim X
Dim Arr1
Dim Arr2
With Application
Y = [a1:a10]
X = [b1:b10]
Arr1 = .Power(X, Array(1, 2, 3))
Arr2 = .LinEst(Y, Arr1)
End With
MsgBox "coefficients are " & Chr(10) & Join(Arr2, Chr(10))
End Sub