诗海

我们越谦卑,就离真理越近

0%

这篇文章跟我的上一篇"使用牛顿法解决开平方问题"直接相关,当时在书写牛顿法的迭代代码时,需要判断循环终止的条件。Princeton大学的版本使用的是while (Math.abs(t - a / t) > EPSILON * t)这样的语句,初看貌不惊人,实际上思考起来却大有玩味。不要看就这简简单单的几行程序,我相信会有很多人在第一次写的时候,会像我一样写成while (Math.abs(a - t * t) > EPSILON)或者是比较当前值和下一次运算迭代值的while (Math.abs(a / t - t) / 2.0 > EPSILON)这个样子。实际上,后两种的写法都是有问题的。那么这里面的学问是什么呢?这就需要我们对于计算机的浮点数运算有深入的理解才能进行回答。

阅读全文 »

这个问题的起因是我在做leetcode上的一道题延伸出来的,原题目是Leetcode 69. Sqrtx。不过这道题目还是做了很大的简化,它只让我们找出符合要求的整数解。在实际运算中,我们显然希望获得一个开平方的精确小数值,比如说像 \(\sqrt{2} = 1.414214, \sqrt{3} = 1.732051\) 这个样子。这里就需要使用牛顿法来进行求解了。这也是目前计算机学科中进行开平方运算的标准方法。下面我就来详细说说对这一算法的分析。

阅读全文 »

长期以来购买的国外VPS只是在进行代理转发的服务,然而现在DigitalOcean的最低价格的服务器配置也相当可以了。因此最近想来再多利用一下花钱买到的资源,就有了搭建个人博客的想法。希望能通过这种方式,同时勉励一下自己养成学习记录的好习惯吧。(CS知识真的是博大精深,有时候看一遍过段时间就忘了)

阅读全文 »