本文整理匯總了Golang中github.com/unixpickle/num-analysis/linalg.Vector.Scale方法的典型用法代碼示例。如果您正苦於以下問題:Golang Vector.Scale方法的具體用法?Golang Vector.Scale怎麽用?Golang Vector.Scale使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類github.com/unixpickle/num-analysis/linalg.Vector
的用法示例。
在下文中一共展示了Vector.Scale方法的1個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: Step
// Step adds d.Scale(amount) to coeffs.
// If any of the entries in coeffs hits a
// constraint, then the step is stopped
// short and true is returned to indicate
// that a new constraint has been added.
//
// This may modify d in any way it pleases.
func (a *activeSet) Step(coeffs, d linalg.Vector, amount float64) bool {
var maxStep, minStep float64
var maxIdx, minIdx int
isFirst := true
for i, x := range d {
if x == 0 {
continue
}
coeff := coeffs[i]
maxValue := (a.MaxCoeff - coeff) / x
minValue := -coeff / x
if x < 0 {
maxValue, minValue = minValue, maxValue
}
if isFirst {
isFirst = false
minStep, maxStep = minValue, maxValue
maxIdx, minIdx = i, i
} else {
if minValue > minStep {
minStep = minValue
minIdx = i
}
if maxValue < maxStep {
maxStep = maxValue
maxIdx = i
}
}
}
if isFirst {
return false
}
if amount < minStep {
coeffs.Add(d.Scale(minStep))
a.addConstraint(coeffs, minIdx)
} else if amount > maxStep {
coeffs.Add(d.Scale(maxStep))
a.addConstraint(coeffs, maxIdx)
} else {
coeffs.Add(d.Scale(amount))
return false
}
return true
}