基础数学课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;

}

}

根据这个二分法,我们进行了计算机中迭代的讲解。

其实迭代是计算中很常见的思想,我们可以根据迭代,不断的更新变量值或者获取到最终的解决。

发表评论

邮箱地址不会被公开。 必填项已用*标注