Fenrier Lab

瑞利商与极值计算

对于一个埃尔米特矩阵 \(M\) 及非零向量 \(x\),定义瑞利商 \[R(M, x) = \frac{x^* M x}{x^* x}\] 这里的 \(x^* {}\) 是 \(x\) 的共轭转置矩阵,如果 \(M,x\) 都由实数元素组成,那么瑞利商可以写成 \[R(M, x) = \frac{x^T M x}{ x^T x}\] 设 \(M\) 的特征值与特征向量分别为 \(\lambda_1, \lambda_2,,,\lambda_n\),\(v_1, v_2,,,v_n\) ,并且有 \[\lambda_{min} =\lambda_1 \le \lambda_2 \le ... \le \lambda_n = \lambda_{max}\] 下面将证明,在 \...
点我阅读更多...

感知器

线性分类观点 考虑数据集 \(S = \{x^{(i)}\in R^d\mid i=1,2,,,n\}\) ,其中的样本可以被线性分割成两个类别:\(\mathcal{C}_1, \mathcal{C}_2\) ,然后我们再为每一个 \(x\) 分配一个类别标签值 \(y\),当 \(x^{(i)}\) 属于类别 \(\mathcal{C}_1\) 时,\(y_i=1\) ,否则 \(y_i=-1\) 。定义分割超平面为 \[\omega^T x + b = 0\] 其中 \(\omega, x\) 都是 d 维向量。然后对任意的 \(x \in S\) ,定义函数 \[r(x) = \frac{\omega^T}{\|\omega\|} x+ \frac b{\|\omega...
点我阅读更多...

C 语言指针详解

理解指针这一概念是学习 C 语言和 C++ 的重中之重,对于编程初学者,由于不熟悉计算机程序的运行原理,如果用 C 语言作为入门,将会在指针的理解上陷入泥潭。所以尽管现在的大学教育都纷纷将 C 语言作为通识课程,但是我还是认为这门语言并不适合刚接触编程的同学。 不过话又说回来,C 是一门非常值得掌握的语言,原因就在于它足够接近底层,它能让程序员对硬件有足够的掌控,却又不似汇编那样太过底层。 这篇文章的目的就是记录下个人对于指针的理解,并希望能对后人以启发帮助。 基本类型 首先看如下一段代码 //c1.c #include <stdio.h> int main() { int a = 1; printf("%d\n", a); printf("%d\n"...
点我阅读更多...

算法题:零钱兑换

问题描述与分析 感觉是一道经典的算法题,笔试面试屡试不爽。如果想把一些钱换成零钱,请问有多少兑换种方法?当然可以具体点,比如有 w 元钱,想用 k 种面额的币来兑换(k种面额可以不全部用完)。如果没有掌握一定的技巧,拿到这题是一脸蒙蔽的。首先我们需要将问题表述数学化一点: 设共有 k 种面额的纸币,分别值 \(v_i, (i = 1,,k)\),需要兑换的钱为 w ,求总的兑换方法数量 \(N_{k,w}\)。 这道题的关键是将 \(N_{k,w}\) 拆分成两个部分: 一部分是使用 \(k-1\) 种纸币兑换 \(w\) 元钱的方法数量 \(N_{k-1,w}\) 另一部分用 \(k\) 种纸币兑换成 \(w-v_k\) 这么多钱的方法数量 \(N_{k, w-v_...
点我阅读更多...

笔记-Java(JDK 1.9) StringBuffer 与 StringBuilder 的区别

StringBuffer 与 StringBuilder 都是为了更高效的操纵字符串而生,原因在于 String 类是不可变量,对其进行任何修改都会产生新的对象,而 StringBuffer 和 StringBuilder 则能够有效避免这一问题。但既然区分了两个类,就说明它们之间存在差别。 查看源码,发现 StringBuffer 与 StringBuilder 都继承 AbstractStringBuilder。下面从源码层面来对比两者 StringBuffer StringBuilder public StringBuffer(int capacity) public Strin...
点我阅读更多...