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 相关文章推荐
默默简单的写了一个模板引擎
Jan 02 PHP
php反弹shell实现代码
Apr 22 PHP
PHP中开发XML应用程序之基础篇 添加节点 删除节点 查询节点 查询节
Jul 09 PHP
PHP得到某段时间区间的时间戳 php定时任务
Apr 12 PHP
php笔记之:初探PHPcms模块开发介绍
Apr 26 PHP
PHP魔术引号所带来的安全问题分析
Jul 15 PHP
php+ajax制作无刷新留言板
Oct 27 PHP
php实现Session存储到Redis
Nov 11 PHP
Yii使用Captcha验证码的方法
Dec 28 PHP
PHP多进程之pcntl_fork的实例详解
Oct 15 PHP
PHP删除数组中指定下标的元素方法
Feb 03 PHP
php和nginx交互实例讲解
Sep 24 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
二十行语句实现从Excel到mysql的转化
2006/10/09 PHP
如何使用Strace调试工具
2013/06/03 PHP
PHP中遇到的时区问题解决方法
2015/07/23 PHP
Laravel框架模板加载,分配变量及简单路由功能示例
2018/06/11 PHP
Laravel框架路由设置与使用示例
2018/06/12 PHP
ExtJS 设置级联菜单的默认值
2010/06/13 Javascript
js对象之JS入门之Array对象操作小结
2011/01/09 Javascript
兼容ie、firefox的图片自动缩放的css跟js代码分享
2013/08/12 Javascript
基于 Node.js 实现前后端分离
2016/04/23 Javascript
jQuery Ajax 异步加载显示等待效果代码分享
2016/08/01 Javascript
vue router-link传参以及参数的使用实例
2017/11/10 Javascript
基于input动态模糊查询的实现方法
2017/12/12 Javascript
基于百度地图api清除指定覆盖物(Overlay)的方法
2018/01/26 Javascript
React Native 图片查看组件的方法
2018/03/01 Javascript
深入了解JavaScript 私有化
2019/05/30 Javascript
vue-simple-uploader上传成功之后的response获取代码
2020/09/07 Javascript
vue穿梭框实现上下移动
2021/01/29 Vue.js
python利用sklearn包编写决策树源代码
2017/12/21 Python
django模板加载静态文件的方法步骤
2019/03/01 Python
python爬虫 基于requests模块的get请求实现详解
2019/08/20 Python
Python使用GitPython操作Git版本库的方法
2020/02/29 Python
Python猴子补丁Monkey Patch用法实例解析
2020/03/23 Python
浅谈tensorflow使用张量时的一些注意点tf.concat,tf.reshape,tf.stack
2020/06/23 Python
HTML5移动开发图片压缩上传功能
2016/11/09 HTML / CSS
CK美国官网:Calvin Klein
2016/08/26 全球购物
美国眼镜网站:EyeBuyDirect
2017/04/13 全球购物
英国豪华家具和经典家居饰品购物网站:OKA
2020/06/05 全球购物
秋季运动会加油稿200字
2014/01/11 职场文书
光荣入党自我鉴定
2014/01/22 职场文书
2015年专项整治工作总结
2015/04/03 职场文书
家长意见书
2015/06/04 职场文书
《家庭教育》读后感3篇
2019/12/18 职场文书
python for循环赋值问题
2021/06/03 Python
关于ObjectUtils.isEmpty() 和 null 的区别
2022/02/28 Java/Android
python实现会员信息管理系统(List)
2022/03/18 Python
源码分析Redis中 set 和 sorted set 的使用方法
2022/03/22 Redis