//Y坐标值表示设备历史负载
$y = array(52.09, 52.4, 53.29, 54.22, 55.15, 55.83, 56.89, 56.98, 57.55, 57.8);
//X坐标值表示顺序天数
$x = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
//计算X和Y均值
$ax = array_sum($x)/count($x);
$ay = array_sum($y)/count($y);
//计算斜率公式中的分母(em)和分子(ez)
$em = 0;
$ez = 0;
for ($i = 0; $i < count($x); $i++) {
//分母求和
$em += (($x[$i] - $ax) * ($y[$i] - $ay));
//分子求和
$ez += pow(($x[$i] - $ax), 2);
}
//斜率0.69
echo $em/$ez;
//第十一个点预测负载值58.34
echo $em/$ez * 10 + $ay - ($em/$ez)*$ax;
上面代码简单枚举历史10个点来计算该设备负载增长率:
http://www.phpfans.org/69.html