ホームページ > php教程 > PHP开发 > PHPで実装された方程式解法の分析例

PHPで実装された方程式解法の分析例

高洛峰
リリース: 2016-12-23 15:51:33
オリジナル
2308 人が閲覧しました

この記事の例では、PHP で実装された方程式の解法について説明します。参考のために皆さんと共有してください。詳細は次のとおりです:

1. 要件

1. 平均値を与える 値の差は 0.4 未満でなければなりません (X1 ~ X3 はすべて小数点第 1 位の数値です)
2. これら 3 つの数字 X1、X2、および X3 は、3 つの数字のグループを表します。次の式を満たす: 51

2)0.453)m1、m2、m3はすべて4桁の正の10進数

2 要件に従って、2つの関数を使用することを考えました。加工用に。

1) 1 つは既知の平均であり、この平均の条件を満たす 3 つの数値である関数 createX() を見つけます

2) もう 1 つは既知の X で、式 (@) を満たす 3 つの数値を見つけます。 1) および境界条件 10 進数の 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, &#39;/tmp/result.log&#39;);
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));
}/*}}}*/?>
ログイン後にコピー

3. 発生した問題と欠点

1.私たちが得た結果は、平均の元の 3 つの値は同じである可能性がありますが、配列内のキーが同じであるはずがないということです。そこで、いくつかの処理を行いました。

同時にキーの値を文字列に変換しています

2.【10進数の処理】また、4桁の小数を扱うため、条件を満たした場合にループスルーして出力するのが不便です。 , したがって、1000 を掛けて倍数を拡大し、最後に Restore を 1000 で割ります。

この記事が PHP プログラミングのすべての人に役立つことを願っています。

PHP で実装された方程式解法の分析例に関するその他の関連記事については、PHP 中国語 Web サイトに注目してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート