程序员数学基础

程序员数学基础

图5 新垣结衣3
图6 新垣结衣3
1 一、递归(recursion) 重复直接或间接调用自己,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。 在函数里面调用自身。 eg: 斐波那契数列(Fibonacci sequence),又称黄金分割数列、“兔子数列”。0、1、1、2、3、5、8、13、21、34、……是一个线性递归数列 F(1)=1,F(2)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 3,n ∈ N*) 前后两数的比例不断逼近黄金分割0.618。 eg: 汉诺塔问题、背包问题、全排列

二、迭代 重复调用前面得到的最新结果,每一次迭代得到的结果会作为下一次迭代的初始值。
eg:1.斐波那契数列(没错,又是我) 2.汉诺塔问题(这不巧了么) 3.背包问题

递归中一定有迭代,但是迭代中不一定有递归,大部分可以相互转换。能用迭代的不用递归,递归调用函数,浪费空间,并且递归太深容易造成堆栈的溢出。迭代与普通循环的区别是:迭代时,循环代码中参与运算的变量同时是保存结果的变量,当前保存的结果作为下一次循环计算的初始值。递归与普通循环的区别是:循环是有去无回,而递归则是有去有回(因为存在终止条件)。在循环的次数较大的时候,迭代的效率明显高于递归。

三、数学归纳法 这种方法的原理在于:首先证明在某个起点值时命题成立,然后证明从一个值到下一个值的过程有效。当这两点都已经证明,那么任意值都可以通过反复使用这个方法推导出来。
最简单和常见的数学归纳法是证明当n等于任意一个自然数时某命题成立。证明分下面两步:证明当n= 1时命题成立。假设n=m时命题成立,那么可以推导出在n=m+1时命题也成立。(m代表任意自然数)
递归调用的代码和数学归纳法的逻辑是一致的。只要数学归纳证明的逻辑是对的,递归调用的逻辑就是对的,我们没有必要纠结递归函数是如何嵌套调用和返回的。

四、余数 余数的特性:整数是没有边界的,它可能是正无穷,也可能是负无穷。余数却总是在一个固定的范围内。生活中,余数可以用来算星期,web编程中可以用在分页中。 同余定理:两个整数 a 和 b,如果它们除以正整数 m 得到的余数相等,我们就可以说 a 和 b 对于模 m 同余。 哈希(Hash):每个编程语言都有对应的哈希函数。哈希有的时候也被翻译为散列,简单来说就是将任意长度的输入,通过哈希算法压缩为某一固定长度的输入。

五、动态规划 动规解题的一般思路 1. 将原问题分解为子问题 把原问题分解为若干个子问题,子问题和原问题形式相同或类似,只不过规模变小了。子问题都解决,原问题即解决(数字三角形例)。 子问题的解一旦求出就会被保存,所以每个子问题只需求 解一次。 2.确定状态 在用动态规划解题时,我们往往将和子问题相关的各个变量的一组取值,称之为一个“状 态”。一个“状态”对应于一个或多个子问题, 所谓某个“状态”下的“值”,就是这个“状 态”所对应的子问题的解。 所有“状态”的集合,构成问题的“状态空间”。“状态空间”的大小,与用动态规划解决问题的时间复杂度直接相关。 3.确定一些初始状态(边界状态)的值 以“数字三角形”为例,初始状态就是底边数字,值就是底边数字值。 4. 确定状态转移方程 定义出什么是“状态”,以及在该“状态”下的“值”后,就要找出不同的状态之间如何迁移――即如何从一个或多个“值”已知的 “状态”,求出另一个“状态”的“值”(递推型)。状态的迁移可以用递推公式表示,此递推公式也可被称作“状态转移方程”。

六、线性回归线性回归是利用数理统计中回归分析,来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法。其表达形式为y = w’x+e,e为误差服从均值为0的正态分布。
回归分析中,只包括一个自变量和一个因变量,且二者的关系可用一条直线近似表示,这种回归分析称为一元线性回归分析。如果回归分析中包括两个或两个以上的自变量,且因变量和自变量之间是线性关系,则称为多元线性回归分析。
线性回归模型经常用最小二乘逼近来拟合,但他们也可能用别的方法来拟合,比如用最小化“拟合缺陷”在一些其他规范里(比如最小绝对误差回归),或者在桥回归中最小化最小二乘损失函数的惩罚.相反,最小二乘逼近可以用来拟合那些非线性的模型.因此,尽管“最小二乘法”和“线性模型”是紧密相连的,但他们是不能划等号的。一般来说,线性回归都可以通过最小二乘法求出其方程,可以计算出对于y=bx+a的直线。

七、二进制
十进制使用 10 作为基数,x 进制使用 x 作为基数, x 进制的数位>就是 x^n 的形式
计算机为什么使用二进制?二进制的数据表达具有抗干扰能力强、可靠性高的优点;二进制非常适>合逻辑运算
二进制的位操作二进制左移一位,就是将数字翻倍。二进制右移一位,就是将数字除以2并求整数商。或:参与操作的位中,只要有一个是1,最终结果就是1与:参与操作的位中,必须全都是1,最终结果才是1异或:参与操作的位相同,最终结果就为0,否则为1同或:参与操作的位相同,最终结果为1,否则为0

八、卷积1 卷积的定义我们称为的卷积其连续的定义为:其离散的定义为:这两个式子有一个共同的特征:这个特征有什么意义?我们令,那么就是下面这些直线:如果遍历这些直线,就好比,把毛巾沿着角卷起来:此处受到 荆哲:卷积为什么叫「卷」积? 答案的启发。只看数学符号,卷积是抽象的,不好理解的,但是,我们可以通过现实中的意义,来习惯卷积这种运算,正如我们小学的时候,学习加减乘除需要各种苹果、糖果来帮助我们习惯一样。
2 离散卷积的例子:丢骰子我有两枚骰子,把这两枚骰子都抛出去,这里问题的关键是,两个骰子加起来要等于4,这正是卷积的应用场景。我们把骰子各个点数出现的概率表示出来:那么,两枚骰子点数加起来为4的情况有:

因此,两枚骰子点数加起来为4的概率为:符合卷积的定义,把它写成标准的形式就是:

高频信号,就好像平地耸立的山峰:平滑这座山峰的办法之一就是,把山峰刨掉一些土,填到山峰周围去。用数学的话来说,就是把山峰周围的高度平均一下。平滑后得到:卷积可以帮助实现这个平滑算法。有噪点的原图,可以把它转为一个矩阵:然后用下面这个平均矩阵(说明下,原图的处理实际上用的是正态分布矩阵,这里为了简单,就用了算术平均矩阵)来平滑图像:

写成卷积公式就是:这样相当于实现了g, 这个矩阵在原来图像上的划动(准确来说,下面这幅图把g 矩阵旋转了180°):九、最小二乘法最小二乘法(又称最小平方法)是一种数学优化技术。它通过最小化误差的平方和寻找数据的最佳函数匹配。利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小 。最小二乘法还可用于曲线拟合,其他一些优化问题也可通过最小化能量或最大化熵用最小二乘法来表达 。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值