我有分段二次函数如下:
$$ \ sum_ {i = 1} ^ {3} a_i(b_i - x)^ {2} _ {+} $$
其中+
表示如果b_i
大于x,则等于b_i-x
,否则等于零。
如何在b_i
的零和第一个元素之间,然后在b_i
的第一个元素和b_i
的第二个元素之间得到上述分段二次函数的系数,依此类推......
a = c(1, 1, 2)
b = c(1.5, 3.5, 4.5)
x = sort(runif(100, 0, 5))
mat1 = outer(b, x, ">")
a1 = colSums((a * mat1))
b1 = colSums(-(2*a*b* mat1))
c1 = colSums((a*b^2* mat1))
我已经编写了上面的代码来查找整个二次函数的系数
f1 = function(x) (a1*x^2+b1*x+c1)
我想用公式检查结果,表明它没问题
z = pmax(b - rep(x, each = length(b)),0)
dim(z) = c(length(b), length(x))
f2 = colSums(a * z^2)
> all.equal(f1(x), f2)
[1] TRUE
但我希望找到b_i
的零和第一个元素之间的二次函数系数,然后找到b_i
的第一个元素和b_i
的第二个元素之间的二次函数系数,依此类推。 ......我怎么能在R?中做到这一点?