您好,登錄后才能下訂單哦!
在游戲的開發過程中,我們會用到很多的算法,其中數學中的線性回歸可以很好地運用到一些游戲里,下面是由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> <?php } else { $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($xdif, 2); // X 離均差平方和 } //end of for $b = round($mdcross_sum/$xdif_square_sum, 2); // 計算斜率 b $a = round($yavg-$b*$xavg, 2); // 計算常數項 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>
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。