基础数学课3-迭代
这里我们说下从迭代到二分
首先是迭代,本质上是不断的使用旧的变量值来递推新的变量值。
就好比
x= 0
for i in range(100000):
x += i
而迭代法,在计算机领域常见应用于
求取精确的值或者近似的值,
在一定范围内确认目标值,
机器学习中的迭代
这里我们看下如何求取精确的值
求取精确的值,这个问题可以以求取一个正整数的平方根举例
这里我们以二分法来解决。
如果我们要求取10的平方根,我们可以不断的二分,以中间数字判断是否符合平方为10
就比如先以(1+10)// 2 = 5.5,然后拿5.5的判断平方是否为10,发现大于10 之后
以(1+5.5)// 2 = 3.25 ,以3.25判断平方是否为10,不断的迭代下去,直到发现某个数的平方为10
public class Lesson3_2 {
/** * @Description: 计算大于1的正整数之平方根 * @param n-待求的数, deltaThreshold-误差的阈值, maxTry-二分查找的最大次数 * @return double-平方根的解 */ public static double getSqureRoot(int n, double deltaThreshold, int maxTry) { if (n <= 1) { return -1.0; } double min = 1.0, max = (double)n; for (int i = 0; i < maxTry; i++) { double middle = (min + max) / 2; double square = middle * middle; double delta = Math.abs((square / n) – 1); if (delta <= deltaThreshold) { return middle; } else { if (square > n) { max = middle; } else { min = middle; } } } return -2.0; } } |
根据这个二分法,我们进行了计算机中迭代的讲解。
其实迭代是计算中很常见的思想,我们可以根据迭代,不断的更新变量值或者获取到最终的解决。