PHP实现的方程求解示例分析


Posted in PHP onNovember 11, 2016

本文实例讲述了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<m0<51
2)0.45<m1 - m1<0.55
3)m1, m2, m3 都是4位的正小数

二、实现

根据需求,我想到了使用两个函数来进行处理。

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));
}/*}}}*/?>

三、遇到的问题和不足之处

1. 【数组key值不能相同】开始遇到的是 得到的平均数的原始三个值有可能有相同的,但是数组中的key是不能相同的,于是做了处理。

同时,key值做了 string的转化

2. 【小数处理】还有就是 因为涉及的是 4位的小数,循环遍历,满足条件输出不方便,就 乘以1000扩大倍数,最后再除以1000还原。

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
PHP远程连接MYSQL数据库非常慢的解决方法
Jul 05 PHP
两个开源的Php输出Excel文件类
Feb 08 PHP
php radio 单选框获取与保持值的实现代码
May 15 PHP
php模块memcache和memcached区别分析
Jun 14 PHP
php实现执行某一操作时弹出确认、取消对话框
Dec 30 PHP
PHP中提问频率最高的11个面试题和答案
Sep 02 PHP
php使用ob_start()实现图片存入变量的方法
Nov 14 PHP
PHP5.2下preg_replace函数的问题
May 08 PHP
PHP简单实现断点续传下载的方法
Sep 25 PHP
PHP附件下载中文名称乱码的解决方法
Dec 17 PHP
Laravel学习教程之request validation的编写
Oct 25 PHP
PHP pthreads v3使用中的一些坑和注意点分析
Feb 21 PHP
php5.3后静态绑定用法详解
Nov 11 #PHP
php基于curl实现的股票信息查询类实例
Nov 11 #PHP
PHP中STDCLASS用法实例分析
Nov 11 #PHP
php遍历替换目录下文件指定内容的方法
Nov 10 #PHP
php实现有序数组打印或排序的方法【附Python、C及Go语言实现代码】
Nov 10 #PHP
PHP数组生成XML格式数据的封装类实例
Nov 10 #PHP
Linux平台php命令行程序处理管道数据的方法
Nov 10 #PHP
You might like
php selectradio和checkbox默认选择的实现方法详解
2013/06/29 PHP
codeigniter数据库操作函数汇总
2014/06/12 PHP
php操作xml入门之cdata区段
2015/01/23 PHP
PHP Smarty模版简单使用方法
2016/03/30 PHP
php mysql procedure实现获取多个结果集的方法【基于thinkPHP】
2016/11/09 PHP
php抽象方法和抽象类实例分析
2016/12/07 PHP
thinkPHP5框架设置404、403等http状态页面的方法
2018/06/05 PHP
Jquery获取复选框被选中值的简单方法
2013/07/04 Javascript
jquery遍历select元素(实例讲解)
2013/12/31 Javascript
简单的邮箱登陆的提示效果类似于yahoo邮箱
2014/02/26 Javascript
元素未显示设置width/height时IE中使用currentStyle获取为auto
2014/05/04 Javascript
node.js中的http.request方法使用说明
2014/12/14 Javascript
JavaScript的原型继承详解
2015/02/15 Javascript
jQuery position() 函数详解以及jQuery中position函数的应用
2015/12/14 Javascript
AngularJs导出数据到Excel的示例代码
2017/08/11 Javascript
20个最常见的jQuery面试问题及答案
2018/05/23 jQuery
通过javascript实现扫雷游戏代码实例
2020/02/09 Javascript
微信小程序scroll-view隐藏滚动条的方法详解
2020/03/25 Javascript
如何通过vscode运行调试javascript代码
2020/07/24 Javascript
vue 导航锚点_点击平滑滚动,导航栏对应变化详解
2020/08/10 Javascript
Vue中ref和$refs的介绍以及使用方法示例
2021/01/11 Vue.js
[04:19]完美世界携手游戏风云打造 卡尔工作室模型介绍篇
2013/04/24 DOTA
python实现的阳历转阴历(农历)算法
2014/04/25 Python
使用Python中的greenlet包实现并发编程的入门教程
2015/04/16 Python
简介Django中内置的一些中间件
2015/07/24 Python
听歌识曲--用python实现一个音乐检索器的功能
2016/11/15 Python
python实现自动发送邮件发送多人、群发、多附件的示例
2018/01/23 Python
python与pycharm有何区别
2020/07/01 Python
Python 开发工具通过 agent 代理使用的方法
2020/09/27 Python
荷兰包包购物网站:The Little Green Bag
2018/03/17 全球购物
创先争优活动方案
2014/02/12 职场文书
《商鞅南门立木》教学反思
2014/02/16 职场文书
运输企业安全生产责任书
2014/07/28 职场文书
房屋维修协议书范本
2014/09/25 职场文书
2015年元旦主持词开场白
2014/12/14 职场文书
2016年政治理论学习心得体会
2016/01/25 职场文书