php - 关于将数学方程式写入代码的建议

标签 php algorithm math

我是一名自学成才的开发人员(大约 3 年了),我想通过学习如何将数学方程式写入代码来提高我的开发技能。

这一直困扰着我,我看到许多书籍和文章都附有发光的数学方程式,看起来真的很有趣。我可以读懂其中的一部分(乘法、除法、小数、西格玛、变量),但在用代码实现它们时遇到了麻烦。

例如,如何开始理解这些方程式:http://en.wikipedia.org/wiki/Manhattan_distance然后开始用代码编写它们?

有什么地方可以推荐吗?这不是代码问题,而是缺乏基本的数学理解吗?我愿意听和读,因为我觉得这种能力对于开发人员来说非常重要。

最佳答案

I can read parts of them (multiplication, division, decimals, sigma, variables)
but I have troubles when going off to implement them in code.

嗯,我想关键是你需要能够将你感兴趣的公式分解成它的组成部分,如果你能理解如何单独编码这些部分,那么你就可以以代码的形式将它们粘合在一起。

让我们以固定(x, y) 坐标系的二维空间中两点之间的曼哈顿距离为例。您想要编写一个函数,该函数将获取两个点并为您提供这些点之间的曼哈顿距离。让我们在这里放弃使用面向对象的概念,假设您有四个输入变量:

x1, the x-coordinate of the first point
y1, the y-coordinate of the first point
x2, the x-coordinate of the second point
y2, the y-coordinate of the second point

所以我们的函数会像

function mdistance (x1, y1, x2, y2) {
    ???
}

函数的内部(函数体)应该是什么样的?现在我们检查要重写为代码的数学公式。维基百科的版本(在“正式描述”下)处理任意维度的情况——我们也可以这样做,但现在我们只考虑二维情况。所以他们的 n 就我们而言是 2,我们想要计算 |x1 - x2| + |y1 - y2|。这是失去 sigma 符号的结果,取而代之的是用两个被加数描述总和的表达式。但是我们还没有弄清楚|a - b|是如何用计算机代码来表达的。

所以现在函数看起来像

function mdistance (x1, y1, x2, y2) {
    return bars(x1, x2) + bars(y1, y2);
}

就目前而言,这很好,因为我们已经将我们还不知道如何做的事情隔离为另一个函数,称为 bars()。一旦我们定义了 bars(),函数 mdistance() 就会正常工作,当然假设我们对 bars() 的定义是合理的.所以问题只是定义bars()。通过将问题分解成它的组成部分,我们使工作变得更容易,因为我们只需要让每个部分都工作 - 这比让所有部分同时工作更简单。

那么bars()应该怎么定义呢?好吧,|a - b| 只是表达了“a - b 的绝对值”的想法。 PHP 有一个求实数绝对值的内置函数;它是 abs()。所以我们这样定义bars():

function bars (a, b) {
    return abs(a - b);
}

现在我们的函数 mdistance() 将按照我们想要的方式工作。

关于php - 关于将数学方程式写入代码的建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6892269/

相关文章:

php - HTML 解析器的 Git 补丁

php - 如何删除 20 16 child 主题 Wordpress 下不可阻挡的链接下划线

php - 为财务打印机解码自定义 CRC 算法

php - 使用开始和结束日期/时间计算事件数的算法

java - 使用java图形沿着圆弧路径移动对象

java - 开关、if-else 和数学

javascript - THREE.js 光线转换对单个> 500k 多边形(面)对象非常慢,线与地球相交

php - 将框架从 mcrypt 转换为 openssl

php - 正则表达式删除外括号

javascript - 你能在javascript中的字符串数组中进行二进制搜索吗