0%

周谈(10)-数学与算法

前言

在工作中,每周都会遇到一些问题,这些问题在大家工作中可能会有许多共性,于我也是一种经验的积累小结。我觉得花一些时间整理一下,跟粉丝读者们分享一下日常工作遇到的问题,这是一个很好的互动和文章分享的痛点。

这是第十篇。

数学与算法

最近看了一篇文章,讲的是使用牛顿迭代用O(1)的时间复杂度求解平方根的。文章先是讲了使用二分法不断迭代求解方程的根,具体的就是每次获取到一个中间值之后,就取它的平方与目标值比较,直到获取到符合误差的结果为止。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
float bi_sqrt(float x) {
float l = 0.0f, r = x;
float mid = (l+r)/2.0f;
float last = 0;
while (abs(mid - last) > eps) {
last = mid;
if (mid * mid > x) {
r = mid;
} else {
l = mid;
}
mid = (l+r)/2.0f;
}

return mid;
}

使用二分法是可以求得一个近似值的,但是有可能需要迭代次数较多。然后文章就引入了牛顿迭代法。

牛顿迭代法,把求平方根的方程式,映射到对应的函数曲线上,然后使用几何的方法,用导数及切线的方程不断逼近求解。结果就是可以很快的求得一个近似值。呵呵,这边具体数学的知识我已经基本还给老师了。

通过对比牛顿迭代法和二分法,可以明显感觉到大部分情况下牛顿迭代法的运算更快一些。看来数学在求解某些问题的时候,是很有裨益的。前年的时候,看过一本书叫做《数学之美》,里面也涉及了大量使用数学方法解决实际问题的案例,数学真的是一门很美妙的学科。如果当初选择数学作为专业研究,应该很有趣吧。

最近很火的机器学习,人工智能,也是数学在实际问题中的应用,数学专业的人在这个方面有很大的优势,算法其实也就是问题解法的抽象,然后使用代码来实现。

更多

上周日一个人自驾到了长沙,早上7点多出发,到下午六点多到达。中间在服务区休息了好几次,每次10分钟以上,总计大概一个半小时吧。一个人开车的话,精神清醒是比较重要的,我就买了几罐红牛还有一瓶雀巢咖啡,一路喝过来。没有很困的时候。一路上车不是很多,一直在下着小雨。中午的时候,就吃了几个自带的水煮蛋。开车刚开始还是比较悠哉,福建和江西限速一般都是100,110. 后面到湖南境内,限速都是120了,速度也就提了上来。这是第二次开这么远了,比上一次快了三个多小时,主要是因为没有带小孩,服务区停的少了,时间也更短一些。

到长沙后,住的是民宿。后面的事情主要就是租房子了。

第二天就开始去租房了。用的贝壳找房,上面的房源基本都是真实的。在上面问了几个中介,然后第二天下午去看房子,看了一个下午没有找到心仪的房源。晚上回去之后,总结了一下各个房源的缺点吧。第二天早上梳理了一下自己的租房需求,初步确认一下租房的区域,再到贝壳上面找了几个中介。下午继续去看房了。这次找的中介是贝壳app推荐的,却还是个未毕业的实习生,是很不专业的。我跟他约好了时间地点了,然后我早早的就到了,给他发消息回复总是很慢,在贝壳上面已经给过他电话,他也不舍得给我打个电话(我不知道他号码,不然我就打给他了),然后他还迟到了半个小时,让我在那边干等了半小时。他给我发了几套房源,我看中了一套,结果他没有那个房源的钥匙,看不了。在带看了一套之后,我就赶紧撤了,不然一个下午就白费了。 再后面,在贝壳上面又约了一个资深的中介,跟他讲了需求,很快就推荐了几套过来,有几套看起来都比较中意。很快的约了时间,马上就安排了带看。晚上回去后,再考虑了一下就确定一套下来了。

看来每一个行业有经验和没经验差别真的很大。新手抓不住用户的需求,做起事情来慢吞吞的,没有一套行之有效的方法。资深人员,一眼就可以确定用户的需求,精准定位,可以很快的响应,做起事情有条理,办成事的概率更大。然后,我作为用户,刚开始需求都是比较模糊的,在被带看了一个下午之后,经过梳理之后才得出了一个比较精确的需求,第二天再去看房,发了条件给中介,中介就可以很快的匹配好房源,而不需要再盲看了。

行动,才不会被动!

欢迎关注个人公众号 微信 -> 搜索 -> fishmwei,沟通交流。