数学、计算机与算法
2018年 研一上学期学完《数值积分》的感想,今天翻简书突然看到,顺手一发布哈哈哈
作为一个头发长见识短程序媛,之前一直都听说,学数学的人比学计算机的人算法搞得好,就很懵,从大学时候学习的c语言,java语言,写些简单的小算法程序,比如写个计算阶乘的递归函数,用j2ee做个网站等,竟然觉得计算机语言之间相通呀,只要知道语法规范,谁都可以编程序。
天真,真是对算法一无所知。尽管学习深度学习算是感受到了数学在算法方面的重要性,但是深度学习的大神们已经把该用的公式,梯度下降用到的导数都已经给好了公式,搞懂梯度下降也没花时间深究,还是对数学与算法之间有个很浅的意识。研究生面试碰到过一个题,应该说在不知觉中感受到了算法与编程是两回事,题目是计算100的阶乘,好像很简单哎,不就是写个递归函数嘛。写完函数,不到最后一刻不交试卷的性格使我多想了两遍,一定有坑,怎么会考我这么简单的内容。果不其然,经过查阅一下,计算机对于100的阶乘结果根本无法计算,因为内存溢出,无法表示这么大的数字,最后需要用到什么移位,使用加法来完成,这就很神奇了。
所以为什么要写这一篇感想,因为在研一数值微分的课程中,将数学和计算机紧紧绑在一起,对于一个具体的实际问题,我们需要一个数学模型,然后利用计算机去求解,可能只是近似解。所以,对于一个计算公式,都需要计算机来计算,对于一个只需要近似解的复杂计算,简化计算公式,减少计算次数可以有效的提高计算效率,减少时间复杂性和控件复杂性。
以计算多项式的值为例:
所以算法,计算的方法,不仅是解决一个具体问题提出一系列数学公式来解决,计算机编程还包括具体的计算机编程实现是如何计算的,比如计算上面的多项式的值,采用第二种算法明显可以减少计算次数以及在内存中存放变量需要的空间。
所以,数学学得好人比较很适合计算机搞算法也不是没有道理的,数学是计算机的灵魂貌似很有道理,数值积分值得学习!!!如果我以后成了个算法面试官,就考,编写一个函数来计算多项式的值,如果靠自己想象出来这样计算,小伙子很有设计算法的天赋呀。