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随机生成福彩双色球号码的2种方法
Feb 04 PHP
解析获取优酷视频真实下载地址的PHP源代码
Jun 26 PHP
使用Curl进行抓取远程内容时url中文编码问题示例探讨
Oct 29 PHP
在PHP上显示JFreechart画的统计图方法
Nov 03 PHP
浅谈使用 PHP 进行手机 APP 开发(API 接口开发)
Aug 11 PHP
php设置页面超时时间解决方法
Sep 22 PHP
PHP实现GIF图片验证码
Nov 04 PHP
ThinkPHP框架安全实现分析
Mar 14 PHP
Thinkphp自定义代码生成工具及用法说明(附下载地址)
May 27 PHP
PHP实现的函数重载功能示例
Aug 03 PHP
PHP与以太坊交互详解
Aug 24 PHP
php探针不显示内存解决方法
Sep 17 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你的验证码安全码?
2007/01/02 PHP
解析在apache里面给php写虚拟目录的详细方法
2013/06/24 PHP
从PHP的源码中深入了解stdClass类
2014/04/18 PHP
PHP常用数组函数介绍
2014/07/28 PHP
PHP静态成员变量
2017/02/14 PHP
autoIMG 基于jquery的图片自适应插件代码
2011/03/12 Javascript
php和js对数据库图片进行等比缩放示例
2014/04/28 Javascript
简介AngularJS的视图功能应用
2015/06/17 Javascript
快速掌握Node.js之Window下配置NodeJs环境
2016/03/21 NodeJs
jQuery中ScrollTo用法示例
2016/09/04 Javascript
JS验证字符串功能
2017/02/22 Javascript
微信小程序 弹框和模态框实现代码
2017/03/10 Javascript
移动端刮刮乐的实现方式(js+HTML5)
2017/03/23 Javascript
JS运动特效之同时运动实现方法分析
2018/01/24 Javascript
vue中如何使用ztree
2018/02/06 Javascript
vue中$set的使用(结合在实际应用中遇到的坑)
2018/07/10 Javascript
web页面和微信小程序页面实现瀑布流效果
2018/09/26 Javascript
微信小程序全局变量GLOBALDATA的定义和调用过程解析
2019/09/23 Javascript
[01:09:24]Ti4开幕式
2014/07/19 DOTA
浅谈pandas用groupby后对层级索引levels的处理方法
2018/11/06 Python
基于python实现名片管理系统
2018/11/30 Python
Django Rest framework频率原理与限制
2019/07/26 Python
python简单的三元一次方程求解实例
2020/04/02 Python
Windows下Sqlmap环境安装教程详解
2020/08/04 Python
教师演讲稿范文
2014/01/08 职场文书
城市轨道交通工程职业规划书范文
2014/01/18 职场文书
小松树教学反思
2014/02/11 职场文书
房屋公证委托书
2014/04/03 职场文书
活动总结报告范文
2014/05/04 职场文书
通信工程专业求职信
2014/06/04 职场文书
硕士毕业论文导师评语
2014/12/31 职场文书
教师工作态度自我评价
2015/03/05 职场文书
2015年百日安全活动总结
2015/03/26 职场文书
css3实现的加载动画效果
2021/04/07 HTML / CSS
SQLServer2019 数据库的基本使用之图形化界面操作的实现
2021/04/08 SQL Server
css filter和getUserMedia的联合使用
2022/02/24 HTML / CSS