在數據建模、圖像處理或機器學習中,正態分佈(也稱高斯分佈)是一種非常常見的概率分佈模型。雖然PHP 並不是數學建模的首選語言,但它依然可以用於構建基礎的數學模型,尤其在Web 環境下有其獨特的優勢。本文將介紹如何利用PHP 內置的cosh()函數(雙曲餘弦函數)來構建一個簡化的正態分佈近似模型。
標準正態分佈函數的數學形式為:
f(x) = (1 / (σ√2π)) * e^(-(x - μ)^2 / (2σ^2))
但由於PHP 對於復雜的數學函數支持有限,我們可以通過使用cosh()函數的對稱性和其快速增長的特性,構建一個類似於正態分佈曲線的近似函數。例如:
f(x) = A / cosh(B * (x - μ))
其中, A是縮放因子, B控制分佈的寬度, μ是均值。
這個函數在圖形上會生成一個鐘形曲線,雖然不完全等同於正態分佈,但可以用於可視化或粗略建模的目的。
以下是一個PHP 腳本示例,它使用cosh()函數來生成近似正態分佈的數據點,並輸出為JSON 格式,方便前端圖表庫使用:
<?php
// 參數設置
$mu = 0; // 平均值
$b = 0.5; // 控制寬度
$a = 1; // 縮放因子
$range = 5; // x 的取值範圍
$step = 0.1; // 每次增加的步長
$data = [];
for ($x = -$range; $x <= $range; $x += $step) {
$y = $a / cosh($b * ($x - $mu));
$data[] = ['x' => $x, 'y' => $y];
}
// 輸出 JSON
header('Content-Type: application/json');
echo json_encode($data);
?>
你可以將上面的代碼保存為distribution.php並部署到服務器上,然後使用前端工具(如Chart.js 或ECharts)通過AJAX 加載生成的數據。例如:
fetch("https://gitbox.net/distribution.php")
.then(response => response.json())
.then(data => {
// 使用 data 繪製圖表
console.log(data);
});
調整參數A和B可以控製圖形的高度和寬度,從而擬合不同的需求。例如:
增加B值:曲線更陡峭,形狀更接近“尖峰”
減小B值:曲線更平緩,更接近真實的正態分佈
雖然這種方法不能替代真正的正態分佈函數(如使用高斯函數庫或C 擴展),但它在Web 場景下仍然有實際應用價值。
簡單的數據可視化模型:可用於圖形化數據波動趨勢。
UI 動畫節奏控制:曲線控制漸變節奏,使視覺體驗更自然。
Web 模擬計算:在前後端通信時,提供快速的數值模擬結果。
PHP 雖然不是數值計算的強項,但其靈活性和廣泛的應用場景讓它在需要快速部署數學模型的場合中大放異彩。通過cosh()函數來近似構建正態分佈是一種輕量級、易於實現的方法,適用於需要快速可視化和模擬的Web 項目。結合現代JavaScript 圖表工具,可以輕鬆構建交互式的數據展示界面。