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 相关文章推荐
smarty section简介与用法分析
Oct 03 PHP
php 正则匹配函数体
Aug 25 PHP
PHP检测移动设备类mobile detection使用实例
Apr 14 PHP
phpmyadmin打开很慢的解决方法
Apr 21 PHP
php使用mysqli向数据库添加数据的方法
Mar 20 PHP
Yii框架上传图片用法总结
Mar 28 PHP
PHP实现的通过参数生成MYSQL语句类完整实例
Apr 11 PHP
php+mysql实现简单登录注册修改密码网页
Nov 30 PHP
thinkPHP5.0框架URL访问方法详解
Mar 18 PHP
php微信开发之关键词回复功能
Jun 13 PHP
php使用fullcalendar日历插件详解
Mar 06 PHP
Laravel框架表单验证操作实例分析
Sep 30 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/07/15 PHP
微信公众平台消息接口校验与消息接口响应实例
2014/12/23 PHP
PHP批量生成图片缩略图的方法
2015/06/18 PHP
php中switch语句用法详解
2015/08/17 PHP
PHP面向对象程序设计之多态性的应用示例
2018/12/19 PHP
微信公众平台开发教程③ PHP实现微信公众号支付功能图文详解
2019/04/10 PHP
根据分辨率不同,调用不同的css文件
2006/07/07 Javascript
JavaScript中的noscript元素属性位置及作用介绍
2013/04/11 Javascript
jquery复选框全选/取消示例
2013/12/30 Javascript
跟我学Node.js(四)---Node.js的模块载入方式与机制
2014/06/04 Javascript
基于JavaScript实现动态添加删除表格的行
2016/02/01 Javascript
详解利用 Vue.js 实现前后端分离的RBAC角色权限管理
2017/09/15 Javascript
小程序选项卡以及swiper套用(跨页面)
2020/06/19 Javascript
在vue中使用Echarts画曲线图的示例
2020/10/03 Javascript
[01:22]DOTA2神秘商店携大量周边降临完美大师赛
2017/11/07 DOTA
Python实现按学生年龄排序的实际问题详解
2017/08/29 Python
python斐波那契数列的计算方法
2018/09/27 Python
python三引号输出方法
2019/02/27 Python
Python3 串口接收与发送16进制数据包的实例
2019/06/12 Python
全面了解django的缓存机制及使用方法
2019/07/22 Python
解决python flask中config配置管理的问题
2019/07/26 Python
将keras的h5模型转换为tensorflow的pb模型操作
2020/05/25 Python
Python新手学习标准库模块命名
2020/05/29 Python
html5模拟平抛运动(模拟小球平抛运动过程)
2013/07/25 HTML / CSS
html5使用canvas绘制太阳系效果
2014/12/15 HTML / CSS
美国鞋类购物网站:Shiekh Shoes
2016/08/21 全球购物
印度尼西亚最好的小工具在线商店:Erafone.com
2019/03/26 全球购物
员工评语大全
2014/01/19 职场文书
《千年梦圆在今朝》教学反思
2014/02/24 职场文书
酒店餐厅2014重阳节活动策划方案
2014/09/16 职场文书
2016年寒假社会实践活动总结
2015/03/27 职场文书
开展警示教育活动总结
2015/05/09 职场文书
党风廉政建设心得体会(2016最新版)
2016/01/22 职场文书
JavaScript异步操作中串行和并行
2021/11/20 Javascript
Python内置数据类型中的集合详解
2022/03/18 Python
使用vuex-persistedstate本地存储vuex
2022/04/29 Vue.js