本文實例講述了PHP實現的方程式求解。分享給大家供大家參考,具體如下:
一、需求
1. 給出一個平均值X,反過來求出來,得到這個平均值X的三個數X1 ,X2, X3,最大值與最小值的差值要小於0.4(X1-X3都是保留1位小數的數)
2. 這三個數X1, X2, X3代表了三組數。滿足下面的公式: X1 = [(m1 - m2)/(m1 - m0) ] * 100 (@1);
m0, m1, m2三個數的邊界條件如下:
1)48
二、實現
根據需求,我想到了使用兩個函數來處理。
1)一個是已知平均數,求得到這個平均數滿足條件的三個數的函數createX()
2) 一個是已知X,求滿足公式(@1)和邊界條件的三個小數m0, m1, m2
下面是具體的代碼實現,不足之處請指出
<?php //运行echo "开始运行 \n"; run(); echo "运行结束 \n"; function run() {/*{{{*/$data = array(40.9, 40.5, 44.3, 47.8, 48.5, 42.1, 46.2); $res = array(); foreach($dataas$key) {/*{{{*/echo "处理 {$key}\n"; $resX = createX($key); foreach($resXas$keyX) { $keyStr = (string)$key; $keyXStr = (string)$keyX; $res[$keyStr][$keyXStr] = createParams4M($keyX); } }/*}}}*/error_log(print_r($res,true)."\n", 3, '/tmp/result.log'); var_dump(99999,$res);exit; return$res; }/*}}}*///1.产生平均数function createX($ave) {/*{{{*/$sum = 3*($ave * 1000); $x1 = $x2 = $x3 = 0; $rand4X1X2 = rand(0, 300); //$x2 > $x1 > $x3;for($i=0; $i< $ave * 1000 + 550; $i++) { $x2 = $i; $x1 = $x2 - $rand4X1X2; $x3 = $sum -($x1 + $x2); $positive = $x1 > 0 && $x2 > 0 && $x3 > 0; $flag = ($x2- $x3 < 400 && $x2 - $x3 > 200); if($positive && $flag) { //echo "捕捉到\n";$roundX1 = round($x1/1000, 1); $roundX2 = round($x2/1000, 1); $roundX3 = round($x3/1000, 1); $res = array($roundX1, $roundX2, $roundX3); $flag = $roundX1 != $roundX2 && $roundX3 != $roundX2 && $roundX3 != $roundX1; if($flag) { //echo "捕捉到\n";return$res; } } } echo "Fail 未捕捉到\n"; returnarray($x1, $x2, $x3); }/*}}}*///2.产生平均数function createParams4M($aveX) {/*{{{*/$begin = 48000; $end = 51000; $m0 = $m1 = $m2 = 0; $rand4M1M2 = rand(450, 550); $m0 = rand($begin, $end); $m1 = $m0 + $rand4M1M2; $m2 = $m1 - (($m1 - $m0)*$aveX/100); //echo "捕捉到\n";returnarray(round($m0/1000, 4), round($m1/1000, 4), round($m2/1000, 4)); }/*}}}*/?>
key
三、遇到的問題和不足之處
1. 【數組組不能相同開始。到的是得到的平均數的原始三個值有可能有相同的,但是數組中的key是不能相同的,於是做了處理。
同時,key值做了string的轉換
2. 【小數處理】還有就是因為涉及的是4位的小數,循環遍歷,滿足條件輸出不方便,就乘以1000擴大倍數,最後再除以1000還原。
希望本文所述對大家PHP程式設計有所幫助。
更多PHP實現的方程式求解範例分析相關文章請注意PHP中文網!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

記事本++7.3.1
好用且免費的程式碼編輯器