当前位置:文档之家› 向量与矩阵

向量与矩阵

向量与矩阵
向量与矩阵

向量与矩阵

在许多科学和工程技术应用中,数组用于表示数学对象向量和矩阵。本节我们将学习如何在C中表示向量和矩阵,以及如何编写C函数实现对这些对象的操作。

向量的表示

向量是由一个数的序列(向量的分量)构成的数学对象。若向量由n个分量构成,则称向量是n维的。遗憾的是,“维”在C中的含义与向量的标准数学术语不一致。图8.8中的数组C是一维(在C的术语中)的,而它所表示的向量却是三维(在数学术语中)的。一个n一维向量在C中表示为一个长度为n的一维数组。也许你会注意到向量分量的符号标识与C中也不尽相同。向量X的第三个分量(4)在数学中记为x3,但它在C中被称为x[2],因为C数组的下标总是从0开始的。

C数组x[0] x[1] x[2]

向量的x1x2x3

分量

图8.8 向量在C中的表示:C数组x;向量X

标量积

分量个数相同的两个向量可以相乘,将对应分量的乘积求和,所得结果为标量(点或内)积。因此,若X=<1,2,4>且W=<2,3,1>,它们的标量积为

X·W==1*2+2*3+4*1=12

通常,若X=与W=是两个n维的向量,则它们的标量积

k n

k k

w x

*1

∑=

式中,x k 与w k 分别表示向量X 和W 的第k 个分量。

编写计算两个n 维向量X 和W 的程序很简单。需要一个循环计数器逐一遍历各个分量,变量sum_prod 用于累加求和。计算标量积的C 程序如下:

sum_prod=0; for(k=0;k

下面我们将逐步编写的许多函数中都需要类似标量积这样的求和计算。表示求和的标记符号可以通过一个相当机械化的过程翻译为C 的语句。图8.9中的求和符号如果按字面直译应当是

for(k=1;k<=n;++k)

但考虑到向量的分量1至n 是用数组的元素0到n-1表示的,我们必须对for 循环的起点稍做改动,新的循环边界为

for(k=0;k

X ·W=k n

k k

w x

*1

∑=

变量 for 语句 和变量 sum_prod 及有关 sum_prod 保存和 变量 中的累加值

图8.9 求和符号与for 循环参数

矩阵的表示

矩阵是由矩形数字阵列构成的一种数学对象,矩形阵列中的数称为矩阵的元素。一个m

×n 矩阵由m 行n 列构成,每行为一个n 维向量,每列是一个m 维向量。第i 行第j 列元素记为a ij ,在C 语言中(设C 中i 和j 的初值为0)表示为a[i][j]。故一个m ×n 矩阵在C 语言中用一个m 行n 列的二维数组表示。

图8.10(a )是一个m ×n (此处为4×3

形式。

A=??

?

??

?

??????--210

1111321

1

1

(a) (b)

图8.10 (a) 4×3矩阵 (b) 矩阵的二维数组表示

矩阵与向量的乘法

如果A 是一个m ×n 的矩阵且X 是一个n 维向量,那么我们把A 与X 的乘积记为A*X ,得到的是一个m 维的向量V 。一个由m 行n 列的矩阵只能在右边与n 维向量相乘。如果A 是一个m ×n 的矩阵且W 是一个m 维的向量,那么我们可以计算W 和A 的乘积,记为W*A ,结果为一个n 维的向量Z 。一个m 行n 列的矩阵只能与一个m 维的向量左乘。图8.11(a)是一个4×3矩阵A 的右乘,图8.11(b) 是矩阵的左乘。下面我们对图8.11(a)进行详细讨论。 A

* X = V W * A = Z

????????????--210111132111 *??????????221=?????

???????-63105 []1102- *?

?

??????????--21011113211

1=

[]103-

图8.11(a )中结果向量中的分量究竟是如何计算的呢?V 中的第i 个分量v[i] 是矩阵A 的

第i 行与向量X 的标量积。记住,在C 中总是从零开始计数的。如v (l )(向量V 的第二个分量)是A 的行1(第二行)(可以视为一个向量)与向量X 的标量积。这些向量在图8.11中以彩色标出。具体计算如下:

v[1]=〈2,3,1〉*〈1,2,2>=2*1+3*2+1*2=10

m*n 矩阵A 和n 维向量X 相乘计算vi 的数学通项公式是 vi =

=n

k 1

a i k * x k

将求和公式转化为C 语句,并根据组下标从零开始的规定适当调整,计算v i 的代码如下:

V[i]+=a[i][k]*x[k];

掌握了矩阵中的一个元素的计算方法,编程计算整个向量就是一件轻而易举的事情了 。我们所要做的就是把一个元素v[i]的计算嵌入到一个for 的循环中,i 充当循环变量。图8.12的C 函数mat_vec_prod 希望调用自己的函数能够提供空间用来存储结果向量。我们一贯采用大写字母表示数组的行数和列数,暗示已经把它们定义为常量。虽然我们的函数可以允许m(行数)的变化,但考虑到列数必须为常数,两个维数我们均选择使用常数。 /*

● 计算M*N 矩阵a 与N 维向量x 的乘积。 ● 结果存储在输出变量v ,一个M 维向量中。 ● / ● Void

● Mat_vec_prod(double v[], /*输出M 维乘积向量*/ Double a[m][n] /*输入M 行N 列矩阵*/ Double x[]) /*输入N 维向量*/ {

int i, k;

for (i=1;i

for (k=0;k

}

图8.12 计算矩阵与向量乘积的函数的mat_vec_prod

矩阵乘法

矩阵与向量相乘仅是矩阵与矩阵相乘的一种特例,因为一个n维向量可以看作是一个n行1列的矩阵。我们现在来编写两个矩阵相乘,返回值为乘积矩阵的C函数。

两个矩阵A和B相乘,将产生一个新的矩阵C=A*B,只要A的列数与B的行数相同。我们说符合这一条件的矩阵A和B是“适合”相乘的,若A是一个m*n的矩阵,B是一个n*p 的矩阵,则乘积矩阵C就是一个m*p的矩阵。这个结果与我们讨论过的矩阵(m*n)与向量(n*1)相乘结果为新向量(m*1)是一致的。

再计算两个矩阵的乘积时,首先考虑一个一般性元素是如何计算的。例如,乘积矩阵C 中的一个一般性元素是位于i行j列的一个元素,记为c[i][j]。一旦我们知道如何计算c[i][j],那么计算矩阵的其余元素就轻而易举了。我们只需要将c[i][j]的计算嵌入到适当的循环机制中,令和已辞去有关数值即可 :

for(i=1;i〈m ;++i〉{

for (j=0;j

…计算C[i][j] …

}

}

现在我们分析乘积矩阵C=A*B中通项c[i][j]的计算。元素c[i][j]恰是A的第i行B 的第j列的标量积。图8.13 所示的两个方阵A和B的相乘(若矩阵的行数与列数相同则称之为方阵)。例如,在计算图8.13中的C 的彩色元素是将A(可视为一个向量)中彩色的一列相乘。

将A 的第i行B的第j列相乘计算c[i][j]的C语句如下:

C[i][j]=0;

For(k=0; k

C[i][j]+=a[i][k]*b[k][j];

将上述计算嵌入到一个适当的嵌套for的循环结构,即可得到整个矩阵相乘的计算结果。如图8.14函数mat_prod所示。

图8.14中采用+=运算符,因为它既简洁又高效。在任何ASNSIC的实际环境中,必须确保执行语句

c[i][j]+=a[i][k]*b[k][j];

时只计算一次c[i][j]的内存地址。相比之下,下面的语句则需计算两次

c[i][j]=c[i][j]+a[i][k]*b[k][j];

A *

B = C

??????????--111132111 * ??

??

??????--113011102 = ??????????--2021210006

图8.13 矩阵A 与矩阵B 相乘

/*

*矩阵A 与矩阵B 相乘,结果为矩阵C */ void

mat_prod(doule c[M][P], /*输出M 行P 烈矩阵*/ Double a[M][N] /*输入M 行N 列矩阵*/ Double b[N][P]) /*输入N 行P 列矩阵*/ { {

int i,j, k; for (i=1;i

c[i][j]=0;

for (k=0;k

c[i][j]+=a[i][k]*b[k][j]; }

}

}

图8。14 两个矩阵相乘的函数mat_prod 8.4 线性方程组的求解

在8.3节我们看到矩阵

A= ??

??

??????--11113211

1

与向量

X=????

??????121

右乘时,结果为向量

Y=????

??????-294 现在我们来考虑下面的问题。假设我们知道矩阵A 和向量Y ,但不知道向量X 。我们想知道哪个向量X 与矩阵A 右乘时能得到向量Y 。这个问题就是求出下面方程中的三个未知数x 1, x 2 和 x 3 , :A * X = Y

??

??

??????--11113211

1 * ??????????321x x x =??????????-294 要计算x 1,x 2,和x 3 的值,我们必须求解包含三个未知数的三个线性方程组。为了说明这个问题,我们来看在下面的式子中向量Y 的每一个分量是如何由矩阵A 和未知向量X 计算的

y 1=a 1,1 * x 1 +a 1,2*x 2+a 1,3*x 3

将数值代入矩阵元素a ij,我们即可得到含三个未知数的x1,x2和x3的三个线性方程所构成的方程组:

x1+x2+x3+4

2x1+3x2+x3=9

x1-x2-x3=-2

这样的方程组可以用于描述很多类问题。例如,假设一艘飞船由三个助推器分别指向不同的方向,我们需要对助推器进行校准。我们可以根据记录的飞船的实际加速度进行计算,已知

力=质量* 加速度

我们还知道若有一个三维系统,力的方程对每三个正交分量都适用。这样我们就可以计算出使飞船加速的力的大小并由此推导出每个助推器.

矩阵等价与向量组等价的关系

矩阵等价与向量组等价的关系矩阵是指排成n行m列的一个数表。在线性代数中矩阵是一个重要而有力的工具,应用于线性代数的始末,与线性代数的每一章节内容都有牵连。 向量是一个数组。如果向量仅有一个分量,它就是通常意义上的数;如果向量的分量有两个或三个,在解析几何中,它表示平面或空间的有向线段。在几何上与线性代数中向量的运算具有相同或相应的法则。向量可以作为特殊的矩阵,也可作为矩阵的一部分。n个m维列向量组成的向量组即可作成一个m×n矩阵。 所以矩阵与向量组之间有着千丝万缕的联系。例如矩阵与其行向量组及列向量组均有相同的秩,方阵可逆的充要条件是其行(列)向量组线性无关等。但是矩阵的等价与向量组的等价却没有任何必然的联系! 矩阵等价的定义:如果矩阵A可以经过有限次初等变换成为矩阵B,就称矩阵A与矩阵B等价。矩阵等价的两个充要条件:存在可逆矩阵P、Q,使得PAQ =B;A与B同型,且r(A)=r(B)。 向量组的等价,是指两个向量组能相互线性表示。 矩阵等价与向量组等价有如下关系: 1.两矩阵等价,它们的行向量组与列向量组不一定等价!(《2012考研数学复习大全》理工类338页有说明及具体反例) 2.两个向量组等价,它们作成的矩阵不一定等价!(向量组等价,两向量组中所含向量个数可以不同,但矩阵等价,两矩阵必定具有相同的行数与列数) 在什么情况下矩阵等价其行向量组或列向量组等价呢? 1.若矩阵A经初等列变换成为矩阵B,即存在可逆矩阵Q,使AQ=B,也可以写为 (α1,α2,…,αn)Q=(β1,β2,…,βn),

此时可知B的列向量组可以由A的列向量组线性表示,因为Q为初等矩阵的乘积,所以可逆,对AQ=B两边右乘Q-1,有A=BQ-1,故A的列向量组可以由B的列向量组线性表示。此时可得A的列向量组与B的列向量组等价。 2.同理可知:若矩阵A经初等行变换成为矩阵B,则A的行向量组与B的行向量组等价。 3.矩阵进行初等行变换后,其列向量组不一定等价!矩阵进行初等列变换后,其行向量组不一定等价!(见《2012考研数学复习大全》理工类312页注) 在什么情况下向量组等价其对应的矩阵也等价呢? 1.若向量组A与向量组B均有n个列(行)向量,且两个向量组等价,则这两个向量组所作成的矩阵A与B等价!(因向量组A与向量组B等价,则它们有相同的秩,又A与B 作成的矩阵A与B有相同的行与列,且秩相等,故矩阵A与B等价) 2.要求两个向量组有相同个数的向量,是因为矩阵等价的首要条件是两矩阵具有相同的行数与列数,故只有对于均有n个向量的两个m维向量组A与B,才有可能讨论其对应的矩阵A与B是否等价。

MATLAB中的矩阵与向量运算

4.1 数组运算和矩阵运算 从外观形状和数据结构来看,二维数组和数学中的矩阵没有区别.但是,矩阵作为一种变换或映射算符的体现,矩阵运算有着明确而严格的数学规则.而数组运算是MATLAB软件所定义的规则,其目的是为了数据管理方面,操作简单,指令形式自然和执行计算有效.所以,在使用MATLAB时,特别要明确搞清数组运算和矩阵运算的区别.表 4.1.1 数组运算和矩阵运算指令形式和实质内涵 数组运算矩阵运算 指令含义指令含义 A.'非共轭转置A'共轭转置 A=s把标量s赋给数组A的每个元素 s+B把标量s分别与数组B的每个元素相加s-B, B-s标量s分别与数组B的元素之差 s.*A标量s分别与数组A的元素之积s*A标量s分别与矩阵A的元素之积 s./B, B.\s标量s分别被数组B的元素除s*inv(B)矩阵B的逆乘标量s A.^n数组A的每个元素的n次方A^n A为方阵时,矩阵A的n次方 A+B数组对应元素的相加A+B矩阵相加 A-B数组对应元素的相减A-B矩阵相减 A.*B数组对应元素的相乘A*B内维相同矩阵的乘积 A./B A的元素被B的对应元素除A/B A右除B B.\A一定与上相同B\A A左除B(一般与右除不同) exp(A)以e为底,分别以A的元素为指数,求幂expm(A) A的矩阵指数函数 log(A) 对A的各元素求对数logm(A) A的矩阵对数函数 sqrt(A) 对A的积各元素求平方根sqrtm(A) A的矩阵平方函数 从上面可以看到,数组运算的运算如:乘,除,乘方,转置,要加"点".所以,我们要特别注意在求"乘,除,乘方,三角和指数函数"时,两种运算有着根本的区别.另外,在执行数组与数组运算时,参与运算的数组必须同维,运算所得的结果数组也是总与原数组同维. 4.2 数组的基本运算 在MATLAB中,数组运算是针对多个数执行同样的计算而运用的.MATLAB以一种非常直观的方式来处理数组. 4.2.1 点转置和共轭转置 . ' ——点转置.非共轭转置,相当于conj(A'). >> a=1:5; >> b=a. ' b = 1 2 3 4 5 >> c=b. ' c = 1 2 3 4 5 这表明对行向量的两次转置运算便得到原来的行向量. ' ——共轭转置.对向量进行转置运算并对每个元素取其共轭.如: >> d=a+i*a

矩阵的秩与向量组的秩一致

矩阵的“秩”,是线性代数第一部分的核心概念。 “矩阵的秩与向量组的秩一致。矩阵的秩就是其行(或列)向量组的秩。”怎样证明?就当做习题练一练。 设矩阵A的秩为r ,则A必有一个r 阶子式不为0,而所有 r + 1阶子式全为 0 逻辑1——r 阶子式不为0,则 r个r 维向量线性无关。 分析这是格莱姆法则推论,带来的直接判别方法。 (画外音:r个未知量 r个方程的齐次线性方程组仅有0 解的充分必要条件是其系数行列式不为0) 逻辑思维链——这r 个r 维向量与A 的行(或列)向量组有何关系? 逻辑2——(“线性无关,延长无关。”定理)—— 已知一个n 维向量组线性无关,如果在相同的位置,给组内每个向量都增加一个分量,则所得的n + 1维向量组也线性无关。 分析不妨认为给线性无关的n 维向量组a1,a 2,…,a k 的每个向量都加上第n + 1个分量,形成一个n + 1 维向量组b1,b 2,…,b k

若有一组不全为零的数c1,c2,…,c k ,使得c1b1+ c2b 2+ ---+ c k b k = 0 ,如何证明“这组常数只能全为0”? 每个向量有n + 1 分量,向量“线性组合为0”实际上是n + 1个等式。前n 个等式即 c1 a1+ c2a2+ ---+ c k a k = 0 由已知线性无关即得,这组常数只能全为0,而最后那个(第n + 1个)等式自然成立。 逻辑3 ——将线性无关的 r个r 维向量,逐次延长为矩阵A 的r 个行向量(或列向量),它们线性无关。 (潜台词:简而言之,不为0的r阶子式所在的r个行向量(或列向量)线性无关。) 逻辑思维链(关键问题)——这r 个行向量是行向量组的最大无关组吗? 唯一信息——A的所有r + 1阶子式全为0 分析不妨设不为0 的r 阶子式就由这r 个行的左起前r 个分量排成。(画外音:画个示意图最好。)

矩阵等价与向量组等价的关系

矩阵等价与向量组等价的关系 向量组等价 12 ,,, n ααα ???和 12 ,,, n βββ ???可以相互线性表示. 记作:()() 1212 ,,,,,, n n αααβββ ???=??? % 矩阵等价(必须含有相同的行数m,相同的列数n,即必为同型矩阵) 矩阵的等价与向量组的等价没有任何必然的联系! 如果两个n维向量组等价(说明矩阵有相同的行数),则以它们为列向量组成的矩阵A,B的秩相等,但是不一定等价, 因为这两个矩阵的列数可能不同.比如,一个3行1列的矩阵与一个 3行2列的矩阵根本谈不上等价与不等价.(如果A,B 的列数相同,则它们等价)例如向量组I: 1 ?? ? ? ? ?? 与向量组II: 21 0,0 00 ???? ? ? ? ? ? ? ???? 等价,但变为矩阵就不等价。 两向量组等价是指两向量组可以互相线性表示,应注意两向量组等价他们所含向量个数可以不一样的!!! 但矩阵等价,两矩阵必定具有相同的行数与列数!!! 如果矩阵A,B等价,则它们的行向量组与列向量组也未必等价.比如,4阶单位矩阵从中间划一竖线分成两个矩阵A,B,这两个矩阵是等价的,但是它们的列向量组不是等价的.

看一个具体的例子: 3131100100101010010010000100101A r r B c c C ?????? ? ? ?=+=+= ? ? ? ? ? ??????? u u u u u r u u u u u u r 矩阵A 经初等行变换化为矩阵B ,矩阵,A B 行等价,,A B 的行向量组等价,但列向量组不等价! 矩阵B 经初等列变换化为矩阵C ,矩阵,B C 列等价,,B C 的列向量组等价,但行向量组不等价! 矩阵A 经初等变换(包含行变换和列变换)化为矩阵C ,矩阵A,C 等价,但他们的行、列向量组均不等价! 所以,矩阵进行初等行变换后,其列向量组不一定等价!矩阵进行初等列变换后,其行向量组不一定等价! 显然,两矩阵,A B 等价,不能推出他们的行向量组一定等价或者列向量组一定等价。 在什么情况下矩阵等价其行向量组或列向量组等价呢? 若矩阵A 经初等列变换成为矩阵B ,即存在可逆矩阵Q ,使AQ =B ,也可以写为 (α1,α2,…,αn )Q =(β1,β2,…,βn ),此时可知B 的列向量组可以由A 的列向量组线性表示,因为Q 为初等矩阵的乘积,所以可逆,对AQ =B 两边右乘Q -1,有A =BQ -1 ,故A 的列向量组可以由B 的列向量组线性表示。此时可得A 的列向量组与B 的列向量组等价。 同理可知:若矩阵A 经初等行变换成为矩阵B ,则A 的行向量组与B 的行向量组等价。 在什么情况下向量组等价其对应的矩阵也等价呢? 若m 维向量组A 与向量组B 均有n 个列(行)向量,且两个向量组等价,则这两个向量组所作成的矩阵A 与B 等价!(因向量组A 与向量组B 等价,所以它们有相同的秩,则以它们为列(行)向量组成的矩阵A,B 的秩相等,因向量组A 与B 作成的矩阵A 与B 有相同的行与列,且秩相等,故矩阵A 与B 等价),要求两个向量组有相同个数的向量,是因为矩阵等价的首要条件是两矩阵具有相同的行数与列数,故只有对于均有n 个向量的两个m 维向量组A 与B ,才有可能讨论其对应的矩阵A 与B 是否等价。

实验矩阵的秩与向量组的极大无关组

项目五 矩阵运算与方程组求解 实验2 矩阵的秩与向量组的极大无关组 实验目的 学习利用Mathematica 求矩阵的秩,作矩阵的初等行变换; 求向量组的秩与极大无关组. 基本命令 1. 求矩阵M 的所有可能的k 阶子式组成的矩阵的命令:Minors[M,k]. 2. 把矩阵A 化作行最简形的命令:RowReduce[A]. 3. 把数表1,数表2, …,合并成一个数表的命令:Join[list1,list2,…]. 例如输入 Join[{{1,0,-1},{3,2,1}},{{1,5},{4,6}}] 则输出 {{1,0,-1},{3,2,1},{1,5},{4,6}} 实验举例 求矩阵的秩 例2.1 (教材 例2.1) 设,815073*********???? ? ??-------=M 求矩阵M 的秩. 输入 Clear[M]; M={{3,2,-1,-3,-2},{2,-1,3,1,-3},{7,0,5,-1,-8}}; Minors[M,2] 则输出 {{-7,11,9,-5,5,-1,-8,8,9,11},{-14,22,18,-10,10,-2, -16,16,18,22},{7,-11,-9,5,-5,1,8,-8,-9,-11}} 可见矩阵M 有不为0的二阶子式. 再输入 Minors[M,3] 则输出 {{0,0,0,0,0,0,0,0,0,0}} 可见矩阵M 的三阶子式都为0. 所以.2)(=M r

例2.2 已知矩阵???? ? ??----=1t 0713123123M 的秩等于2, 求常数t 的值. 左上角的二阶子式不等于0. 三阶子式应该都等于0. 输入 Clear[M]; M={{3,2,-1,-3},{2,-1,3,1},{7,0,t,-1}}; Minors[M,3] 输出为 {{35-7t,45-9t,-5+t}} 当5=t 时, 所有的三阶子式都等于0. 此时矩阵的秩等于2. 例2.3 (教材 例2.2) 求矩阵???????? ??-----322 4211631095114047116的行最简形及其秩. 输入 A={{6,1,1,7},{4,0,4,1},{1,2,-9,0},{-1,3,-16,-1},{2,-4,22,3}} MatrixForm[A] RowReduce[A]//MatrixForm 则输出矩阵A 的行最简形 ???????? ??-0000000010000510 01 01 根据矩阵的行最简形,便得矩阵的秩为3. 矩阵的初等行变换 命令RowfReduce[A]把矩阵A 化作行最简形. 用初等行变换可以求矩阵的秩与矩阵的逆. 例2.4 设,41311221222832A ???? ? ??--=求矩阵A 的秩. 输入

矩阵与向量的运算及操作

%MATLAB支持教学中的矩阵类型P18 A=[123;456]%变量名=[第一行元素;第二行元素;……;第m行元素] A=ones(2,3)%ones(m,n)创建m*n阶全1矩阵 A=ones(3)%ones(n)创建n*n阶全1(方)矩阵 A=zeros(3,4)%zeros(m,n)创建m*n阶全0矩阵 A=zeros(4)%zeros(m,n)创建m*n阶全0方阵 A=eye(1)%eye(n)创建n阶单位矩阵 B=eye(2)%eye(n)创建n阶单位矩阵 C=eye(4)%eye(n)创建n阶单位矩阵 A=rand(2,3)%rand(m,n)创建m*n阶随机矩阵元素是(0,1)区间上均匀分布的伪随机实数 A=rand(1,1)%rand(m,n)创建m*n阶随机矩阵元素是(0,1)区间上均匀分布的伪随机实数 A=rand(1,3)%rand(m,n)创建m*n阶随机矩阵元素是(0,1)区间上均匀分布的伪随机实数 A=rand(1)%rand(m,n)创建n*n阶随机方阵元素是(0,1)区间上均匀分布的伪随机实数 A=rand(2)%rand(m,n)创建n*n阶随机方阵元素是(0,1)区间上均匀分布的伪随机实数 A=rand(3)%rand(m,n)创建n*n阶随机方阵元素是(0,1)区间上均匀分布的伪随机实数 %MATLAB矩阵的运算及操作P16 clc A=[123;456]; B=[222;333]; C=[1423;2501;3612]; A1=1:49 y=reshape(A1,7,7)' %取矩阵A中的行下标=i,列下标=j的元素A(行下标i,列下标j) A(1,1) A(2,3) %取矩阵A中的第i行元素返回值为行向量A(行下标i;:) A(1,:) A(2,:) %取矩阵A中的第j列元素返回值为列向量A(:;列下标j)

矩阵与向量

矩阵与向量 矩阵是现代数学的一个强有力的工具,应用非常广泛。一般来说,方阵能描述任意线性变换。线性变换保留了直线和平行线,但原点没有移动。线性变换保留直线的同时,其他的几何性质如长度、角度、面积和体积可能被变换改变了。从非技术意义上说,线性变换可能“拉伸”坐标系,但不会“弯曲”或“卷折坐标系。这其中就描述了矩阵与向量的极其微妙的关系。 在我们学习矩阵之初,就给出行矩阵 11121()n A a a a = 与列矩阵 11121n b b B b ?? ? ?= ? ??? A 与 B 也叫行向量与列向量,这里行向量与列向量仅仅是个名称问题. 但为我们今后讲向量空间埋下伏笔,这样做很有好处 . 其实对于矩阵和向量的变化我们也并不陌生。向量在几何上能被解释成一系列与轴平行的位移,一般来说,任意向量v 都能写成“扩展”形式:

也就是说分别将p、q、r定义为指向+x,+y和+z方向的单位向量,v = x p + y q + z r 现在,向量v就被表示成向量p,q,r的线性变换了,向量p,q,r 称作基向量。这里基向量是笛卡尔坐标轴,但事实上,一个坐标系能用任意3个基向量定义,当然这三个基向量要线性无关(也就是不在同一平面上)。用一个向量乘以该矩阵,得到: 如果把矩阵的行解释为坐标系的基向量,那么乘以该矩阵就相当于执行了一次坐标转换,如果aM=b,我们就可以说,M将a转换到b。从这点看,术语“转换”和“乘法”是等价的。 其实说到这些变换,我们不得不想到我们刚到的线性变化,这是矩阵与向量之间最为微妙的。在数学上,如果满足下式,那么映射F(a)就是线性的: F(a + b) = F(a) + F(b) 以及F(k a) = k F(a) 如果映射F保持了基本运算:加法和数量乘,那么就可以称该映射为线性的。在这种情况下,将两个向量相加然后再进行变换得到的结果和先分别进行变换再将变换后的向量相加得到的结果相同。同样,将一个向量数量乘再进行变换和先进行变换再数量乘的结果也是一样

向量与矩阵

向量与矩阵 在许多科学和工程技术应用中,数组用于表示数学对象向量和矩阵。本节我们将学习如何在C中表示向量和矩阵,以及如何编写C函数实现对这些对象的操作。 向量的表示 向量是由一个数的序列(向量的分量)构成的数学对象。若向量由n个分量构成,则称向量是n维的。遗憾的是,“维”在C中的含义与向量的标准数学术语不一致。图8.8中的数组C是一维(在C的术语中)的,而它所表示的向量却是三维(在数学术语中)的。一个n一维向量在C中表示为一个长度为n的一维数组。也许你会注意到向量分量的符号标识与C中也不尽相同。向量X的第三个分量(4)在数学中记为x3,但它在C中被称为x[2],因为C数组的下标总是从0开始的。 C数组x[0] x[1] x[2] 向量的x1x2x3 分量 图8.8 向量在C中的表示:C数组x;向量X 标量积 分量个数相同的两个向量可以相乘,将对应分量的乘积求和,所得结果为标量(点或内)积。因此,若X=<1,2,4>且W=<2,3,1>,它们的标量积为 X·W==1*2+2*3+4*1=12 通常,若X=与W=是两个n维的向量,则它们的标量积

为 k n k k w x *1 ∑= 式中,x k 与w k 分别表示向量X 和W 的第k 个分量。 编写计算两个n 维向量X 和W 的程序很简单。需要一个循环计数器逐一遍历各个分量,变量sum_prod 用于累加求和。计算标量积的C 程序如下: sum_prod=0; for(k=0;k

向量组及其线性组合分布图示n维向量的概念向量组与矩阵

第一节 向量组及其线性组合 分布图示 ★ n 维向量的概念 ★ 向量组与矩阵 ★ 向量的线性运算 ★ 例1 ★ 例2 ★ 线性方程组的向量形式 ★ 向量组的线性组合 ★ 例3 ★ 例4 ★ 例5 ★ 定理1 ★ 例6-8 ★ 例9 ★ 向量组间的线性表示 ★ 内容小结 ★ 课堂练习 ★ 习题3-2 内容要点 一、n 维向量及其线性运算 定义 1 n 个有次序的数n a a a ,,,21 所组成的数组称为n 维向量, 这n 个数称为该向量的n 个分量, 第i 个数i a 称为第i 个分量. 注:在解析几何中,我们把“既有大小又有方向的量”称为向量,并把可随意平行移动的有向线段作为向量的几何形象. 引入坐标系后,又定义了向量的坐标表示式(三个有次序实数),此即上面定义的3维向量. 因此,当3≤n 时,n 维向量可以把有向线段作为其几何形象. 当3>n 时,n 维向量没有直观的几何形象. 若干个同维数的列向量(或行向量)所组成的集合称为向量组. 例如,一个n m ?矩阵 ????? ?? ??=mn m m n n a a a a a a a a a A 21222 2111211 每一列 ???? ?? ? ??=mj j j j a a a 21α),2,1(n j = 组成的向量组n ααα,,,21 称为矩阵A 的列向量组,而由矩阵A 的的每一行 ),,2,1(),,,(21m i a a a in i i i ==β 组成的向量组m βββ,,,21 称为矩阵A 的行向量组. 根据上述讨论,矩阵A 记为 ),,,(21n A ααα = 或 ???? ?? ? ??=n A βββ 21. 这样,矩阵A 就与其列向量组或行向量组之间建立了一一对应关系. 矩阵的列向量组和行向量组都是只含有限个向量的向量组. 而线性方程组 0=?X A n m 的全体解当n A r <)(时是一个含有无限多个n 维列向量的向量组.

矩阵与线性方程组

第1 章矩阵与线性方程组 矩阵是描述和求解线性方程组最基本和最有用的工具。本章涉及向量和矩阵的基本 概念,归纳了向量和矩阵的基本运算。 1.1 主要理论与方法 1.1.1 矩阵的基本运算 一、矩阵与向量 a11x1 + a12x2 + ¢ ¢ ¢+ a1n x n = b1 a21x1 + a22x2 + ¢ ¢ ¢+ a2n x n = b2 ... a m1x1 + a m2x2 + ¢ ¢ ¢+ a mn x n = b m 9> >>>=>>>>; (1.1) 它使用m个方程描述n个未知量之间的线性关系。这一线性方程组很容易用矩阵||向量 形式简记为 Ax = b (1.2) 式中 A =26664 a11 a12 ¢ ¢ ¢ a1n a21 a22 ¢ ¢ ¢ a2n ... ... ... a m1 a m2 ¢ ¢ ¢ a mn 37775 (1.3) 称为m £ n矩阵,是一个按照长方阵列排列的复数或实数集合;而 x =26664 x1 x2 ... x n 37775 ; b =26664 b1 b2 ... b m 37775 (1.4) 分别为n £1向量和m£1向量,是按照列方式排列的复数或实数集合,统称列向量。类似地,按照行方式排列的复数或实数集合称为行向量,例如 a = [a1; a2; ¢ ¢ ¢ ; a n] (1.5) 是1 £ n向量。 二、矩阵的基本运算 1. 共轭转置:若A = [a ij ]是一个m£ n矩阵,则A的转置记作A T,是一个n £m矩阵, 定义为[A T]ij = a ji;矩阵A的复数共轭A¤定义为[A¤]ij = a¤ji;复共轭转置记作A H,定义 为 A H =26664 a¤11 a¤21 ¢ ¢ ¢ a¤m1 a¤12 a¤22 ¢ ¢ ¢ a¤m2 ...

相关主题
文本预览
相关文档 最新文档