温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

PHP计算线性回归方程式 Y = a + bX

发布时间:2020-07-04 18:56:06 阅读:2119 作者:lhp1986 栏目:web开发
PHP开发者专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

  在游戏的开发过程中,我们会用到很多的算法,其中数学中的线性回归可以很好地运用到一些游戏里,下面是由PHP写的一段计算线性回归的方程式的代码:

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <meta name="GENERATOR" content="Microsoft FrontPage Express 2.0">
    <title>线性回归 Linear Regression</title>
</head>
<body>
<h3>计算线性回归方程式 Y = a + bX</h3>
<p>
    如果两组数据相关系数很高, 可以用一条近似直线Y=a + bX 来预估, 谓之线性回归<br />
    根据统计学理论, Y = a + bX 中 <br />

    斜率 b = X,Y 离均差交乘积和 / X离均差平方和 <br />
    常数项 a = Y平均值 - b * X平均值<br />
</p>
<?php
header("Content-Type: text/html; charset=utf-8");
if (empty($_REQUEST["X"])) {
    ?>
    <form method="post" action="index.php">
        X : <input type="text" name="X" size="30" value="25,23,27,35,30"><br>
        Y : <input type="text" name="Y" size="30" value="35,27,36,45,42"><br>
        <input type="submit" value="ok">
    </form>
<?phpelse {
    $X explode(",",$_REQUEST["X"]);
    $Y explode(",",$_REQUEST["Y"]);
    $xavg array_sum($X)/count($X); // X 平均值
    $yavg array_sum($Y)/count($Y); // Y 平均值
    $XMD Array();         // X 离均差
    $YMD Array();         // Y 离均差
    $mdcross_sum 0;       // X,Y 离均差交乘积和
    $xdif_square_sum 0;   // X 离均差平方和
    $count count($X);
    for ($i=0$i<$count$i++) {
        $xdif = (float)$X[$i]-$xavg// X 离均差
        $ydif = (float)$Y[$i]-$yavg// Y 离均差
        $XMD[$i] = $xdif;
        $YMD[$i] = $ydif;
        $mdcross_sum += $xdif*$ydif;       // X,Y 离均差交乘积和
        $xdif_square_sum += pow($xdif2); // X 离均差平方和
    } //end of for
    $b round($mdcross_sum/$xdif_square_sum2);   // 计算斜率 b
    $a round($yavg-$b*$xavg2);                  // 计算常数项 a
    echo "X = ".join(", ",$X)."<br>";
    echo "Y = ".join(", ",$Y)."<br>";
    echo "常数项 a = ".$a."<br>";
    echo "斜率 b = ".$b."<br>";
    echo "线性回归方程式 Y = ".$a." + (".$b.")X<br>";
    echo "X 平均值 = ".$xavg."<br>";
    echo "Y 平均值 = ".$yavg."<br>";
    echo "X 离均差 = ".join(", ",$XMD)."<br>";
    echo "Y 离均差 = ".join(", ",$YMD)."<br>";
    echo "X,Y 离均差交乘积和 = ".$mdcross_sum."<br>";
    echo "X 离均差平方和 = ".$xdif_square_sum."<br>";
}

echo '<hr />';

echo '计算两点之间的角度。';
$a array('x' => 10'y' => 0);
$c array('x' => 80'y' => 80);
$pi_v atan2($c['y'] - $a['y'], $c['x'] - $a['x']);
$n_v rad2deg($pi_v);
echo '弧度:',$pi_v,' 角度:',$n_v;


?>
</body>
</html>

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI

开发者交流群×