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 相关文章推荐
中国站长站 For Dede4.0 采集规则
May 27 PHP
php防盗链的常用方法小结
Jul 02 PHP
PHP使用数组实现队列
Feb 05 PHP
基于php设计模式中单例模式的应用分析
May 15 PHP
PHP常量使用的几个需要注意的地方(谨慎使用PHP中的常量)
Sep 12 PHP
ubuntu下配置nginx+php+mysql详解
Sep 10 PHP
PHP flush 函数使用注意事项
Aug 26 PHP
php连接微软MSSQL(sql server)完全攻略
Nov 27 PHP
php计算多个集合的笛卡尔积实例详解
Feb 16 PHP
PHP用户注册邮件激活账户的实现代码
May 31 PHP
ThinkPHP5.1+Ajax实现的无刷新分页功能示例
Feb 10 PHP
PHP实现两种排课方式
Jun 26 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 curl 伪造IP来源的实例代码
2012/11/01 PHP
ucenter通信原理分析
2015/01/09 PHP
Javascript学习笔记7 原型链的原理
2010/01/11 Javascript
来自国外的页面JavaScript文件优化
2010/12/08 Javascript
关于JS管理作用域的问题
2013/04/10 Javascript
jQuery实现在最后一个元素之前插入新元素的方法
2015/07/18 Javascript
JS实现方向键切换输入框焦点的方法
2015/08/19 Javascript
javascript特效实现——当前时间和倒计时效果的简单实例
2016/07/20 Javascript
jQuery实现带延时功能的水平多级菜单效果【附demo源码下载】
2016/09/21 Javascript
基于node.js依赖express解析post请求四种数据格式
2017/02/13 Javascript
angular动态表单制作
2018/02/23 Javascript
vue之将echart封装为组件
2018/06/02 Javascript
Vue三种常用传值示例(父传子、子传父、非父子)
2018/07/24 Javascript
Vue 重置组件到初始状态的方法示例
2018/10/10 Javascript
django中使用vue.js的要点总结
2019/07/07 Javascript
用Python进行TCP网络编程的教程
2015/04/29 Python
使用rpclib进行Python网络编程时的注释问题
2015/05/06 Python
Python的Flask站点中集成xhEditor文本编辑器的教程
2016/06/13 Python
Python实现的圆形绘制(画圆)示例
2018/01/31 Python
详谈python在windows中的文件路径问题
2018/04/28 Python
在Python中获取操作系统的进程信息
2019/08/27 Python
python实现微信打飞机游戏
2020/03/24 Python
Jupyter Notebook 文件默认目录的查看以及更改步骤
2020/04/14 Python
使用python无账号无限制获取企查查信息的实例代码
2020/04/17 Python
python 指定源路径来解决import问题的操作
2021/03/04 Python
伦敦最著名的老字号百货公司:Selfridges(塞尔福里奇百货)
2016/07/25 全球购物
Clearly澳大利亚:购买眼镜、太阳镜和隐形眼镜
2018/04/26 全球购物
安踏官方商城:anta.cn
2019/12/16 全球购物
路政管理专业推荐信
2013/11/11 职场文书
校园新闻广播稿
2014/01/10 职场文书
小学生成长感言
2014/01/30 职场文书
四风对照检查材料思想汇报
2014/09/20 职场文书
2017春节晚会开幕词
2016/03/03 职场文书
财务年终工作总结大全
2019/06/20 职场文书
React中的Context应用场景分析
2021/06/11 Javascript
python中 Flask Web 表单的使用方法
2022/05/20 Python