向量空间简介
创始人
2024-11-14 19:05:55
0

向量空间

定义1

向量空间是一个集合 V V V,该集合的元素都是向量,定义了加法和标量乘法,则向量空间满足:

  • 集合 V V V对加法运算封闭,即集合 V V V中的任意向量 P P P和 Q Q Q,它们的和 P + Q P+Q P+Q也是集合 V V V的向量
  • 集合 V V V对标量乘法运算封闭,即对于任意实数 a a a和集合 V V V中的任意向量 P P P,它们的积 a P aP aP也是集合 V V V的向量
  • 集合 V V V中存在0向量,即对于集合 V V V中的任意向量 P P P,有 P + 0 = 0 + P = P P+0 = 0+P= P P+0=0+P=P成立
  • 对于集合 V V V中的任意向量 P P P,在集合 V V V中存在向量 Q Q Q,使 P + Q = 0 P+Q = 0 P+Q=0
  • 集合 V V V中的向量满足结合律,即对于集合 V V V中的任意向量 P P P, Q Q Q和 R R R, ( P + Q ) + R = P + ( Q + R ) (P+Q)+R = P+(Q+R) (P+Q)+R=P+(Q+R)成立
  • 标量乘法满足结合律,即对于任意实数 a a a和 b b b,以及集合 V V V中的任意向量 P P P, a b P = a ( b P ) abP = a(bP) abP=a(bP)成立
  • 标量与向量和的乘法满足分配律,即对于任意实数 a a a,以及集合 V V V中的任意向量 P P P和 Q Q Q, a ( P + Q ) = a P + a Q a(P+Q) = aP+aQ a(P+Q)=aP+aQ成立
  • 标量和与向量的乘法满足分配律,即对于任意实数 a a a和 b b b,以及集合 V V V中的任意向量 P P P, ( a + b ) P = a P + b P (a+b)P = aP+bP (a+b)P=aP+bP成立

定义2

对于含有 n n n个向量的集合 { e 1 , e 2 , ⋯   , e n } \{e_1,e_2,\cdots,e_n\} {e1​,e2​,⋯,en​},如果不存在不全为0的数 a 1 , a 2 , ⋯   , a n a_1,a_2,\cdots,a_n a1​,a2​,⋯,an​,使等式
a 1 e 1 + a 2 e 2 + ⋯ + a n e n = 0 a_1e_1+a_2e_2+\dots+a_ne_n=0 a1​e1​+a2​e2​+⋯+an​en​=0
成立,则称向量集合线性无关,否则称为线性相关

一个 n n n维向量空间可以由 n n n个线性无关向量的集合生成,生成向量空间的线性无关向量的集合称为线性空间的基

定义3

向量空间 V V V的基 B \mathcal{B} B是 n n n个线性无关向量的集合, B = { e 1 , e 2 , ⋯   , e n } \mathcal{B}=\{e_1,e_2,\cdots,e_n\} B={e1​,e2​,⋯,en​},对于向量空间中的任意向量 P P P,存在一组实数 a 1 , a 2 , ⋯   , a n a_1,a_2,\cdots,a_n a1​,a2​,⋯,an​,使
P = a 1 e 1 + a 2 e 2 + ⋯ + a n e n P =a_1e_1+a_2e_2+\dots+a_ne_n P=a1​e1​+a2​e2​+⋯+an​en​
成立

一个 n n n维向量空间有无穷多个基,每个基中有且仅有 n n n个向量

定义4

向量空间的基 B \mathcal{B} B中,如果任意两个向量 e i e_i ei​和 e j e_j ej​, i ≠ j i\neq j i=j,且 e i ⋅ e j = 0 e_i\cdot e_j=0 ei​⋅ej​=0,则基 B \mathcal{B} B称为向量空间的正交基

对于向量空间的正交基,如果其中每个向量的长度都为1,则称为规范正交基

规范正交基使用克罗内克函数函数表示

在数学中,克罗内克函数(又称克罗内克 δ \delta δ函数、克罗内克 δ \delta δ)是一个二元函数,得名于德国数学家利奥波德·克罗内克。克罗内克函数的自变量(输入值)一般是两个整数,如果两者相等,则其输出值为1,否则为0。

克罗内克函数使用符号 δ i j \delta_{ij} δij​表示
δ i j = { 1 ,如果 i = j 0 ,如果 i ≠ j \delta_{ij}= \begin{cases} 1,如果i=j\\ 0,如果i\neq j \end{cases} δij​={1,如果i=j0,如果i=j​

定义5

向量空间的基 B = { e 1 , e 2 , ⋯   , e n } \mathcal{B}=\{e_1,e_2,\cdots,e_n\} B={e1​,e2​,⋯,en​}中,如果任意两个向量 e i e_i ei​和 e j e_j ej​, i ≠ j i\neq j i=j,且 e i ⋅ e j = δ i j e_i\cdot e_j=\delta_{ij} ei​⋅ej​=δij​,则基 B \mathcal{B} B称为向量空间的规范正交基

基到正交基的变换

最后给出向量空间基到正交基的Gram-Schmidt 正交化算法
向量空间的基 B = { e 1 , e 2 , ⋯   , e n } \mathcal{B}=\{e_1,e_2,\cdots,e_n\} B={e1​,e2​,⋯,en​},计算后的向量空间的基 B ′ = { e 1 ′ , e 2 ′ , ⋯   , e n ′ } \mathcal{B}^{'}=\{e_1^{'},e_2^{'},\cdots,e_n^{'}\} B′={e1′​,e2′​,⋯,en′​}

  1. 令 e 1 ′ = e 1 e_1^{'} = e_1 e1′​=e1​
  2. i i i=2
  3. 从向量 e i e_i ei​中减去向量在 e 1 ′ , e 2 ′ , ⋯   , e i − 1 ′ e_1^{'},e_2^{'},\cdots,e_{i-1}^{'} e1′​,e2′​,⋯,ei−1′​上的投影,结果保存到 e i ′ e_{i}^{'} ei′​中
  4. 如果 i < n i

向量 e i e_i ei​在向量 e ′ e^{'} e′上的投影利用点乘即可计算
e i ′ = e i ⋅ e ′ ∣ e ′ ∣ e ′ ∣ e ′ ∣ = e i ⋅ e ′ e ′ ⋅ e ′ e ′ e_{i}^{'} = \frac{e_i\cdot e^{'}}{|e^{'}|}\frac{e^{'}}{|e^{'}|} = \frac{e_i\cdot e^{'}}{e^{'}\cdot e^{'}}e^{'} ei′​=∣e′∣ei​⋅e′​∣e′∣e′​=e′⋅e′ei​⋅e′​e′

我们以三维空间为例,给出基到正交基的C语言实现

#include  #include  // 向量点乘,n表示维度 float dot(const float* v1, const float* v2, int n);  // 向量相加:desm表示des的系数,srcm表示src的系数,n表示维度 void add(float* des, float desm, const float* src, float srcm, int n);  //Gram-Schmidt算法,n表示维度 void gramSchmidt(float* des, const float* src, int n);  int main(void) {     float a1[9] = {1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0, 1.0};     float a2[9] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};     gramSchmidt(a2, a1, 3);     return 0; }  float dot(const float* v1, const float* v2, int n) {     // 这里应该使用simd运算     float res = 0;     for(int i = 0; i < n; i++)     {         res += (*(v1 + i)) * (*(v2 + i));     }     return res; }  void add(float* des, float desm, const float* src, float srcm, int n) {     for(int i = 0; i < n; i++)     {         *(des + i) = (*(des + i)) * desm +  (*(src + i)) * srcm;     } }  void gramSchmidt(float* des, const float* src, int n) {     int perSize = n * sizeof(float);     memcpy(des, src, perSize);     if(n <= 1)     {         return;     }     for(int i = 1; i < n; i++)     {         memcpy(des + n * i, src + n * i, perSize);         for(int j = 0; j < i; j++)         {             float a1 = dot(des + n * i, des + n * j, n);             float a2 = dot(des + n * j, des + n * j, n);             add(des + n * i, 1, des + n * j, -(a1 / a2), n);         }     } } 

我们使用三维向量
[ 1.0 , 0.0 , 0.0 ] [1.0, 0.0, 0.0] [1.0,0.0,0.0]
[ 1.0 , 1.0 , 0.0 ] [1.0, 1.0, 0.0] [1.0,1.0,0.0]
[ 1.0 , 1.0 , 1.0 ] [1.0, 1.0, 1.0] [1.0,1.0,1.0]

经过算法后得到三维正交基向量
[ 1.0 , 0.0 , 0.0 ] [1.0, 0.0, 0.0] [1.0,0.0,0.0]
[ 0.0 , 1.0 , 0.0 ] [0.0, 1.0, 0.0] [0.0,1.0,0.0]
[ 0.0 , 0.0 , 1.0 ] [0.0, 0.0, 1.0] [0.0,0.0,1.0]

相关内容

热门资讯

二分钟分钟!富豪麻将其实确实是... 二分钟分钟!富豪麻将其实确实是有挂,小程序家乡大贰辅助工具,详细教程(2020已更新)(哔哩哔哩);...
7分钟大厅!(pokerwor... 7分钟大厅!(pokerworld)其实真实是有挂的,pokerworld软件透明挂,详细教程(有挂...
九分钟辅助!(新版Wepoke... 相信很多朋友都在电脑上玩过新版Wepoke吧,但是很多朋友都在抱怨用电脑玩起来不方便。为此小编给大家...
九分钟分钟!青龙大厅牛牛透视辅... 九分钟分钟!青龙大厅牛牛透视辅助,葫芦娃三宝外挂透视辅助挂,详细教程(2022已更新)(哔哩哔哩);...
一分钟安卓版本!(Wepoke... 大家肯定在之前Wepoke控制或者Wepoke控制中玩过一分钟安卓版本!(Wepoke控制)其实是有...
两分钟分钟!新世界其实确实用用... 两分钟分钟!新世界其实确实用用挂的,新世界2023已更新详细教程(2023已更新)(哔哩哔哩)是一款...
六分钟开挂!(Wepoke打法... 六分钟开挂!(Wepoke打法)确实真的是有挂吗,Wepoke打法详细教程(有挂技巧)-哔哩哔哩;W...
一分钟机器人!(飞禽走兽)其实... 一分钟机器人!(飞禽走兽)其实是确实有挂,飞禽走兽是有挂的吗,详细教程(有挂详细)-哔哩哔哩;亲,有...
7分钟透明挂!微扑克ai辅助器... 您好,WPK辅助挂这款游戏可以开挂的,确实是有挂的,需要了解加微【757446909】很多玩家在这款...
6分钟分钟!盛欣茶馆确实是有挂... 6分钟分钟!盛欣茶馆确实是有挂吗,盛欣茶馆2024已更新详细教程(2024已更新)(哔哩哔哩);1、...