单位向量与线性组合
2018字,阅读需时7分钟
来自专栏
课程/专栏

单位向量与线性组合

单位向量

模长为1的向量称为单位向量,例如二维空间的(1,0),(0,1),三维空间的(1,0,0),(0,1,0),(0,0,1),n维空间的(1,0,……,0),(0,1,0,……,0),……,单位向量一般用大写字母I表示。

应用单位向量和向量运算规则可以组合出更多向量。例如二维空间的单位向量为:

二维单位向量

向量A=(3,2)的组合公式为:

向量组合公式

程序清单:

import numpy as np
# 定义单位向量
I1 = np.array([1,0])
I2 = np.array([0,1])
# 信息组合
A = 3*I1 + 2*I2
print(A)

线性组合

类似上面的组合运算称为向量的线性组合,两个向量的线性组合就是纯量a与向量I(1)的乘积,加上纯量b与向量I(2)的乘积,运算结果是一个新的二维向量。纯量a、b可以取任何实数,因此通过单位向量I(1)和I(2)线性组合生成的向量,将会充满整个二维向量空间。

下面给出n维空间线性组合的定义:

假设有非空向量集合V,V中所有向量的维数相同,集合中的向量通过线性运算组合出新的向量,这种组合称为向量的线性组合。

例如集合V有下面的向量:

三维单位向量

V包含了三维空间内的三个单位向量,应用这三个单位向量,V内向量的线性组合会充满整个三维空间R^3,也可以说R^3空间内的所有向量都可以由V内向量的线性组合来表示。

下面给出计算三维空间向量线性组合的程序代码:

import numpy as np
#创建三维单位向量
I1 =  np.array([1,0,03])
I2 =  np.array([0,1,0])
I3 =  np.array([0,0,1])
 
# 定义线性组合函数
def combination(x,y,z):
    return x * I1 + y * I2 + z*I3
 
if __name__ == '__main__':
    # 要求用户输入x,y,z
    x = float(input("请输入实数x:\n"))
    y = float(input("请输入实数y:\n"))
    z = float(input("请输入实数z:\n"))
    # 计算向量的线性组合
    A = combination(x,y,z)
    print(A)

 

在机器学习应用中,经常需要将样本数据进行规范化处理,样本数据一般都是特征向量,计算特征向量的单位向量是对样本数据进行规范化处理的一种方法。

若已知一个非零向量A,如何计算该向量A的单位向量?

计算单位向量

我们知道向量的模是向量的长度,单位向量是长度为1的向量,将非零向量A除以向量A的模长即可得单位向量。下面给出计算已知三维向量,求其单位向量的Python代码:

import numpy  as np
 
#计算向量的模
def norm(x):
    return np.linalg.norm(x)
 
#计算单位向量
def normalize(x):
    return x / norm(x)
 
 
if __name__ == '__main__':
    # 要求用户输入x,y,z三个分量
    x = float(input("请输入实数x:\n"))
    y = float(input("请输入实数y:\n"))
    z = float(input("请输入实数z:\n"))
    # 计算单位向量
    A = normalize(np.array([x,y,z]))
    print(A)
    # 计算向量A的模长
    print(norm(A))

程序运行结果:

请输入实数x:

3

请输入实数y:

2

请输入实数z:

5

A的单位向量:[0.48666426 0.32444284 0.81110711]

A的模长:1.0

从运算结果可以看出,在n维空间内单位向量有无数个,只要向量的模长为1即为单位向量。类似前面非空向量集合V内的单位向量称为标准单位向量,在n维空间内有n个标准单位向量。

我要评论
全部评论