Coding the Matrix (1):向量

 

1. list 画点

>>> from plotting import plot
>>> L = [[2, 2], [3, 2], [1.75, 1], [2, 1], [2.25, 1], [2.5, 1], [2.75, 1], [3, 1], [3.25, 1]]
>>> plot(L)

 

2. 缩放

alpha × vec = [alpha × elem for elem in vec] 编程

>>> def scalar_vector_mult(alpha, v): return [alpha*x for x in v]
...
>>> v = [3, 2]
>>> plot([scalar_vector_mult(i/10., v) for i in range(11)], 5)

 

3. 仿射:加乘组合

获得从 [0, 0] + [0.5,1] 开始到 [3, 2] + [0.5, 1] 结束的线段。 这种表示方法对 端点来讲不具备对称性。如何转换? 加密

如今对于端点来讲就具备对称性了。经过这两个端点的直线包含了两个端点对应向量的 仿射集合。spa

4. GF(2) 加密

a) 要将期中考试的一份试卷交给两个助教,为了防止某一个助教舞弊,发给两我的的加密后的数据必须 合二为一才能进行解密,具体过程以下:scala

b) 电脑认证登录——黑客可能窃听,不适合直接传输用户密码。解决方案:电脑给出一串二进制问题,用户掌握一串二进制密码,在 GF(2) 上点乘(先乘再加),获得输出。code

黑客窃听到数个电脑的问题 alpha 和用户计算后的结果 beta,须要知道用户的密码,须要解方程:blog

 

5. 点乘

两个向量a = [a1, a2,…, an]和b = [b1, b2,…, bn]的点积定义为:class

在欧几里得空间中,点积能够直观理解为:import

用公式能够表示为:音频

直观地说,就是向量 A 在向量 B 方向的投影,再乘以 B 的长度。若是将 B 的长度标准化,那么点乘就能够表示两个向量之间的类似性了。好比在一段长音频中匹配一段短音频,能够把短的音频逐个日后移动,每次移动进行一次点乘计算,值越大,类似性越大,DFT 和 DCT 变换都是基于这种操做求不一样频域的组分大小的。二进制

 

 

编程待续:点乘——用字典类型编写向量类

                             用向量类解三角线性方程组的根

相关文章
相关标签/搜索