检查功能点在哪里

时间:2019-02-21 17:17:37

标签: php function math canvas graph


我有一个要点,我想为此点画一个最合适的双曲函数。
现在,我要进行质量检查。有任何想法吗?
我的想法是检查该功能的关键所在。 (就像该点位于函数上方/下方或上方)
处方函数为: fn(x)= A1 +(A2 / A3 *(x + A4))
我的第一个想法是:

function checkQuality($points,$m,$k,$A1,$A4){
    $over = 0;
    $under= 0;
    $on = 0;
    $radius = 3;

    foreach ($points as $point){
        $status = ($A1+($m/($k*($point['x']+$A4)))-$point['y']);
        if($status < $radius && $status > -$radius){
            $status = 0;
        }
        if($status > 0){
            $over++;
        }else if($status <1 && $status >= 0){
            $on++;
        }else if($status < 0){
            $under++;

        }
    }
    if($under < $over){
        $percentChange = ($under !== 0 ? ($under / $over) : 0) * 100;
    }else{
        $percentChange = ($over !== 0 ? ($over / $under) : 0) * 100;
    }

    return ['on'=>$on,'over'=>$over,'under'=>$under,'percent'=>$percentChange];
}

但是结果不是很准确。

在这里,我发布它的外观。绿色曲线是手动设置的,蓝色曲线是手动设置的(我正在使用质量检查来检查效果是否良好,如果不好则尝试生成更好的曲线)->绿色曲线比蓝色更好。
< / p>

Graph screen

(输入中的值为绿色曲线)


下面是我使用质量检查的代码,以想象为什么我想要拥有最准确的检查器:

  for($i = 0; $i < 10000 ; $i++){
        $new_m += 0.2;
        $actual = $this->checkQuality($points['points'],$new_m,$ob['k'],0,0);
        if($actual['percent'] > $prev['percent']){
            $prev['percent'] = $actual['percent'];
            $prev['m'] = $new_m;
            $newQuality = $actual;
        }else if($i>0 && $actual['percent'] < $prev['percent']){
            break;
        }
    }

0 个答案:

没有答案