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 相关文章推荐
新版mysql+apache+php Linux安装指南
Oct 09 PHP
php开启安全模式后禁用的函数集合
Jun 26 PHP
php中长文章分页显示实现代码
Sep 29 PHP
仿Aspnetpager的一个PHP分页类代码 附源码下载
Oct 08 PHP
强烈声明: 不要使用(include/require)_once
Jun 06 PHP
php缓冲 output_buffering和ob_start使用介绍
Jan 30 PHP
php实现的中文分词类完整实例
Feb 06 PHP
PHP开发APP端微信支付功能
Feb 17 PHP
在php的yii2框架中整合hbase库的方法
Sep 20 PHP
PHP PDOStatement::setFetchMode讲解
Feb 03 PHP
PHP面向对象程序设计之对象克隆clone和魔术方法__clone()用法分析
Jun 12 PHP
php实现微信和支付宝支付的示例代码
Aug 11 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中global和$GLOBALS[]的分析之一
2012/02/02 PHP
探讨如何在php168_cms中提取验证码
2013/06/08 PHP
PHP使用range协议实现输出文件断点续传代码实例
2014/07/04 PHP
PHP观察者模式定义与用法实例分析
2019/03/22 PHP
关于实现代码语法标亮 dp.SyntaxHighlighter
2007/02/02 Javascript
基于jquery的不规则矩形的排列实现代码
2012/04/16 Javascript
JS模拟自动点击的简单实例
2013/08/08 Javascript
angularjs 处理多个异步请求方法汇总
2015/01/06 Javascript
JavaScript实现强制重定向至HTTPS页面
2015/06/10 Javascript
iframe中子父类窗口调用JS的方法及注意事项
2015/08/25 Javascript
每天一篇javascript学习小结(String对象)
2015/11/18 Javascript
JS实现Select的option上下移动的方法
2016/03/01 Javascript
JavaScript数组去重的两种方法推荐
2016/04/05 Javascript
NodeJS遍历文件生产文件列表功能示例
2017/01/22 NodeJs
vue 路由懒加载中给 Webpack Chunks 命名的方法
2020/04/24 Javascript
JavaScript中继承原理与用法实例入门
2020/05/09 Javascript
JS 数组和对象的深拷贝操作示例
2020/06/06 Javascript
JavaScript 防盗链的原理以及破解方法
2020/12/29 Javascript
[01:05:00]2018国际邀请赛 表演赛 Pain vs OpenAI
2018/08/24 DOTA
Python下的subprocess模块的入门指引
2015/04/16 Python
DataFrame.to_excel多次写入不同Sheet的实例
2019/12/02 Python
python 对任意数据和曲线进行拟合并求出函数表达式的三种解决方案
2020/02/18 Python
Python requests及aiohttp速度对比代码实例
2020/07/16 Python
Python限制内存和CPU使用量的方法(Unix系统适用)
2020/08/04 Python
用Python制作音乐海报
2021/01/26 Python
Biblibili视频投稿接口分析并以Python实现自动投稿功能
2021/02/05 Python
英国马莎百货官网:Marks & Spencer
2016/07/29 全球购物
美国二手复古奢侈品包包购物网站:LXRandCo
2019/06/18 全球购物
《听鱼说话》教学反思
2014/02/15 职场文书
开工仪式主持词
2014/03/20 职场文书
小学竞选班干部演讲稿
2014/08/20 职场文书
2014年高中班主任工作总结
2014/11/08 职场文书
2016年十一促销广告语
2016/01/28 职场文书
2016年社区综治宣传月活动总结
2016/03/16 职场文书
导游词之香港-太平山顶
2019/10/18 职场文书
关于CentOS 8 搭建MongoDB4.4分片集群的问题
2021/10/24 MongoDB