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之对抗Web扫描器的脚本技巧
Oct 01 PHP
PHP 翻页 实例代码
Aug 07 PHP
队列在编程中的实际应用(php)
Sep 04 PHP
常用的PHP数据库操作方法(MYSQL版)
Jun 08 PHP
phpexcel导出excel的颜色和网页中的颜色显示不一致
Dec 11 PHP
php实现天干地支计算器示例
Mar 14 PHP
php实现通用的信用卡验证类
Mar 24 PHP
PHP之预定义接口详解
Jul 29 PHP
PHP6连接SQLServer2005的三部曲
Apr 15 PHP
phpcms配置列表页以及获得文章发布时间
Jul 04 PHP
php连接sftp的作用以及实例代码
Sep 23 PHP
如何在centos8自定义目录安装php7.3
Nov 28 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类
2006/10/09 PHP
关于mysql字符集设置了character_set_client=binary 在gbk情况下会出现表描述是乱码的情况
2013/01/06 PHP
Prototype 学习 工具函数学习($方法)
2009/07/12 Javascript
JavaScript 监听textarea中按键事件
2009/10/08 Javascript
jquery实现的一个文章自定义分段显示功能
2014/05/23 Javascript
jquery 实现input输入什么div图层显示什么
2014/06/15 Javascript
node.js实现逐行读取文件内容的代码
2014/06/27 Javascript
JavaScript实现的一个倒计时的类
2015/03/12 Javascript
详解JavaScript中数组的reduce方法
2016/12/02 Javascript
JavaScrpt的面向对象全面解析
2017/05/09 Javascript
AngularJS路由Ui-router模块用法示例
2017/05/29 Javascript
jQuery 中msgTips 顶部弹窗效果实现代码
2017/08/14 jQuery
Vue Element使用icon图标教程详解(第三方)
2018/02/07 Javascript
用Electron写个带界面的nodejs爬虫的实现方法
2019/01/29 NodeJs
微信小程序图表插件wx-charts用法实例详解
2019/05/20 Javascript
vue-cli 3 全局过滤器的实例代码详解
2019/06/03 Javascript
Vue使用Element实现增删改查+打包的步骤
2020/11/25 Vue.js
vue从后台渲染文章列表以及根据id跳转文章详情详解
2020/12/14 Vue.js
python实现简单的计时器功能函数
2015/03/14 Python
Python如何为图片添加水印
2016/11/25 Python
python读取二进制mnist实例详解
2017/05/31 Python
python wav模块获取采样率 采样点声道量化位数(实例代码)
2020/01/22 Python
Python selenium 加载并保存QQ群成员,去除其群主、管理员信息的示例代码
2020/05/28 Python
Python接收手机短信的代码整理
2020/08/02 Python
Python爬虫之Selenium库的使用方法
2021/01/03 Python
Sephora丝芙兰马来西亚官方网站:国际化妆品购物
2018/03/15 全球购物
关于母亲节的感言
2014/02/04 职场文书
初中班级口号
2014/06/09 职场文书
党的群众路线教育实践活动对照检查材料
2014/09/22 职场文书
2014年教务处工作总结
2014/12/03 职场文书
期末复习计划
2015/01/19 职场文书
运动会新闻稿
2015/07/17 职场文书
保姆聘用合同
2015/09/21 职场文书
医德医风学习心得体会
2016/01/25 职场文书
go语言使用Casbin实现角色的权限控制
2021/06/26 Golang
Django数据库(SQlite)基本入门使用教程
2022/07/07 Python