实验13向量行列式矩阵与线性方程组实验2.docx

上传人:b****5 文档编号:7482885 上传时间:2023-01-24 格式:DOCX 页数:15 大小:132.17KB
下载 相关 举报
实验13向量行列式矩阵与线性方程组实验2.docx_第1页
第1页 / 共15页
实验13向量行列式矩阵与线性方程组实验2.docx_第2页
第2页 / 共15页
实验13向量行列式矩阵与线性方程组实验2.docx_第3页
第3页 / 共15页
实验13向量行列式矩阵与线性方程组实验2.docx_第4页
第4页 / 共15页
实验13向量行列式矩阵与线性方程组实验2.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

实验13向量行列式矩阵与线性方程组实验2.docx

《实验13向量行列式矩阵与线性方程组实验2.docx》由会员分享,可在线阅读,更多相关《实验13向量行列式矩阵与线性方程组实验2.docx(15页珍藏版)》请在冰豆网上搜索。

实验13向量行列式矩阵与线性方程组实验2.docx

实验13向量行列式矩阵与线性方程组实验2

实验13向量行列式矩阵与线性方程组实验

[学习目标]

1.会用Mathematica进行向量的计算;

2.能用Mathematica进行行列式的计算;

3.会利用Mathematica进行矩阵的运算与初等变换;

4.能利用Mathematica解线性方程组。

线性代数的数值计算程序并不稀奇,早有大量的算法和软件。

然而这里是进行准确的符号运算,学习了本节以后,就可以摆脱繁琐的矩阵运算了。

本节介绍用Mathematica实现线性代数运算的各种专用函数,它们基本上满足了线性代数计算的需求。

读者将会看到,以下的一些计算功能是十分出色的。

但从我国的教材来看,还有个别计算功能没有涉及,留有继续开发的余地。

一、矩阵的输入与输出

在Mathematica中向量和矩阵就是一个表。

{a1,a2,…,an}表示一个向量。

{{a11,a12,…,a1n},{a21,a22,…,a2n},…,{am1,am2,…,amn}}表示一个m行n列的矩阵,其中每一个子表表示矩阵的一行。

1.直接输入矩阵

直接输入矩阵的方法有3种,如下所述。

(1)按表的形式输入矩阵

既然矩阵和向量都是表,表的一般操作对于矩阵和向量仍然适用。

但是,按表的格式键入矩阵和向量,会让人很不习惯。

因此,Mathematica也提供了矩阵和向量的常规形式的输入、输出方法。

(2)由模板输入矩阵

基本输入模板中有输入2阶方阵的模板,单击该模板输入一个空白的2阶方阵。

按“Ctrl+”使矩阵增加一列,按“Ctrl+Enter”使矩阵增加一行。

如果矩阵不大,此法较方便。

(3)由菜单输入矩阵

如果输入行、列数较多的矩阵,可以打开主菜单的Input项,其中CreateTable/Matrix/Palette可用于建立一个矩阵,单击该项出现一个的对话框。

选择Make:

Matrix,再输入行数和列数,单击OK按钮,于是一个空白矩阵被输入到工作区窗口。

空白矩阵的每个小方块代表一个元素的位置,光标所在的小方块与众不同,可以用Tab键将光标从一个方块跳到下一个方块,也可以用鼠标选中一个方块。

2.以矩阵形式输出矩阵

不管用何种方法输入矩阵,矩阵总是按表的形式输出。

这既违背常规,又难于阅读。

因此,Mathematica提供了以矩阵形式输出矩阵的函数:

MatrixForm[list]将表list按矩阵的形式输出。

例1观察下面矩阵的输出。

In[1]:

=a={{1,2,3},{4,5,6}}

Out[1]={{1,2,3},{4,5,6}}

In[2]:

=MatrixForm[a]

Out[2]//MatrixForm=

In[3]:

=a={{1,2,3},{4,5,6}}//MatrixForm

Out[3]//MatrixForm=

In[4]:

=

Out[4]={{1,2},{3,4},{5,6}}

In[5]:

=%//MatrixForm

Out[5]//MatrixForm=

说明:

由上例可以看出,不管输入的形式是否为矩阵,必须使用MatrixForm才能使输出为矩阵形式。

这不合习惯且费事,解决的方法是自制一个模板:

//MatrixForm,以便快速输入。

使用函数MatrixForm又会出现另一个问题,可以通过以下例子来说明。

例2观察下面矩阵的输出。

In[1]:

=a=

Out[1]={{1,2},{3,4}}

In[2]:

=b=

//MatrixForm

Out[2]//MatrixForm=

In[3]:

=Inverse[a]//MatrixForm

Out[3]//MatrixForm=

In[4]:

=Inverse[b]//MatrixForm

Out[4]//MatrixForm=

Inverse

说明:

以上In[3]和In[4]是求逆矩阵,Mathematica求出a的逆矩阵,对b却失败!

变量a形式上是表,但能被Mathematica作为矩阵处理。

而变量b虽然表示常规形式的矩阵,但不能对b进行各种矩阵计算,务必注意。

技巧:

使用括号能够改变表达式的含义,解决上述问题。

例3观察下面矩阵的输出

In[1]:

=

//MatrixForm

Out[1]//MatrixForm=

In[2]:

=Inverse[b]//MatrixForm

Out[2]//MatrixForm=

应该特别注意Mathematica不区分行向量与列向量,在运算时会自动处理。

可以通过函数ColumnForm[list]将一个向量显示成列向量。

3.用函数建立矩阵

也可以通过函数建立一些有规律的矩阵,除了在讲表时已经介绍过的函数Table外,还有以下专用函数:

Array[a,{m,n}]创建一个m行、n列的矩阵,元素为a[i,j]。

IdentityMatrix[n]创建一个n阶单位矩阵。

DiagonalMatrix[list]创建一个对角线上为表list的元素的方阵。

例4观察下面矩阵的输出。

In[1]:

=Array[a,{2,3}]//MatrixForm

Out[1]//MatrixForm=

In[2]:

=Array[a,{2,3},{0,0}]//MatrixForm

Out[2]//MatrixForm=

In[3]:

=IdentityMatrix[3]//MatrixForm

Out[3]//MatrixForm=

In[4]:

=DiagonalMatrix[{1,2,3}]//MatrixForm

Out[4]//MatrixForm=

说明:

函数Array加上第三个参数用于规定起始下标,起始下标可以取任何整数。

此外Array可以类似创建有任意层数的表,其调用格式如下:

Array[a,n]创建一个元素为a[i]的有n个元素的表(向量)。

Array[a,{n1,n2,n3}]创建一个元素为a[i1,i2,i3]的有n1×n2×n3个元素的3层表。

例5观察下面矩阵的输出。

In[1]:

=Array[a,5]

Out[1]={a[1],a[2],a[3],a[4],a[5]}

In[2]:

=Array[a,{2,2,2}]

Out[2]={{{a[1,1,1],a[1,1,2]},{a[1,2,1],a[1,2,2]}},

{{a[2,1,1],a[2,1,2]},{a[2,2,1],a[2,2,2]}}}

4.提取矩阵的元素

提取或引用矩阵的元素的方法与函数,都已经在表的操作中介绍过,只要注意矩阵是一个2层表而每行是一个子表。

还有三个矩阵专用的函数,如下所示:

M[[All,j]]提取矩阵M的第j列元素组成一个表。

Tr[M,List]提取矩阵M的主对角线元素组成一个表。

Dimensions[M]求矩阵M的行、列数。

例6观察下面矩阵运算。

In[1]:

=a=

b=

In[3]:

=b[[All,3]]//MatrixForm

Out[3]//MatrixForm=

In[4]:

=Tr[a,List]

Out[4]={1,4}

In[5]:

=Dimensions[a]

Out[5]={2,2}

In[6]:

=Dimensions[b]

Out[6]={2,3}

二、矩阵、向量的运算

1.加法与数乘

除两个矩阵相加外,还有一个数与矩阵相加,都使用加号。

一个数与矩阵相加就是矩阵的每个元素都加上该数,一个数与矩阵相乘就是矩阵的每个元素都乘上该数。

例7已知A=

,B=

,求

(1)A+B,

(2)2+A,(3)2A。

解:

In[1]:

=a=

b=

a+b//MatrixForm

Out[3]//MatrixForm=

In[4]:

=2+a//MatrixForm

Out[4]//MatrixForm=

In[5]:

=2a//MatrixForm

Out[5]//MatrixForm=

2.乘法

句号作为两个矩阵相乘或两个向量内积的运算符。

例8已知A=

,B=

,C=(1,2,3),D=(1,-1,1),求

(1)AB,

(2)CD,(3)AD。

解:

In[1]:

=a=

b=

a.b//MatrixForm

Out[3]//MatrixForm=

In[4]:

=c={1,2,3};

d={1,-1,1};

c.d//MatrixForm

Out[6]//MatrixForm=

2

In[7]:

=a.d//MatrixForm

Out[7]//MatrixForm=

说明:

上例中求a.d时,Mathematica会自动将d理解为列向量。

下面是求两个向量的向量积的函数,其调用格式如下:

Cross[a,b]求a×b。

例9已知向量a={2,1,-1},b={1,-1,2},求a×b。

解:

In[1]:

=a={2,1,-1};

b={1,-1,2};

Cross[a,b]

Out[3]={1,-5,-3}

In[4]:

=a×b

Out[4]={1,-5,-3}

提示:

求向量积也可以使用基本输入模板上的小乘号。

模板上有两个乘号,容易搞错,大乘号是将对应的元素相乘。

3.矩阵的转置

矩阵的转置操作使用函数:

Transpose[M]将矩阵M转置。

提示:

可以将此函数自制成模板。

4.求行列式

求一个方阵的行列式使用函数:

Det[A]求方阵A的行列式。

例10计算行列式:

(1)

(2)

解:

In[1]:

=a=

Det[a]

Out[2]=-18

In[3]:

=b=

Det[b]

Out[3]=5+9λ+3λ2-λ3

5.求逆矩阵

求一个方阵的逆矩阵使用函数:

Inverse[A]求A的逆矩阵,自动判断是否可逆。

例11已知A=

,求A的逆矩阵。

解:

In[1]:

=a=

b=Inverse[a]

Out[2]=

In[3]:

=a.b//MatrixForm

Out[3]//MatrixForm=

In[4]:

=a-1

Out[4]=

注意:

a-1不表示逆矩阵。

还有函数:

MatrixPower[A,n]求An(其中n为整数),当n=-1时即求逆矩阵。

例12已知A=

,求

(1)A5,

(2)A-1,(3)A0。

解:

In[1]:

=a=

MatrixPower[a,5]//MatrixForm

Out[2]//MatrixForm=

In[3]:

=MatrixPower[a,-1]//MatrixForm

Out[3]//MatrixForm=

In[4]:

=Inverse[a]//MatrixForm

Out[4]//MatrixForm=

In[5]:

=MatrixPower[a,0]//MatrixForm

Out[5]//MatrixForm=

注意:

在Mathematica中直接输入符号An是将矩阵A的每个元素求n次幂。

6.特征值与特征向量

求矩阵的特征值与对应的特征向量的函数是:

Eigenvalues[A]求方阵A的全部特征值。

Eigenvectors[A]求方阵A的一组线性无关的特征向量。

Eigensystem[A]求全部特征值和对应的线性无关的特征向量组。

例13求矩阵A=

的特征值和特征向量。

解:

In[1]:

=a=

Eigenvalues[a]

Out[2]={-1,-1,5}

In[3]:

=Eigenvectors[a]

Out[3]={{-1,0,1},{-1,1,0},{1,1,1}}

In[4]:

=Eigensystem[a]

Out[4]={{-1,-1,5},{{-1,0,1},{-1,1,0},{1,1,1}}}

In[5]:

=Eigensystem[a]//MatrixForm

Out[5]//MatrixForm=

提示:

由上例可知,函数Eigensystem最好用,输出的结果含义十分清楚,通常使用这个函数就足够了。

如果输入A的元素时使用了小数点,或者参数改为N[A],则求近似解。

例14求矩阵A=

和B=

的特征值和特征向量。

解:

In[1]:

=a=

Eigensystem[a]//MatrixForm

Out[2]//MatrixForm=

In[3]:

=Eigensystem[N[a]]//MatrixForm

Out[3]//MatrixForm=

In[4]:

=Eigensystem[

]//MatrixForm

Out[3]//MatrixForm=

还有以下特殊情况应当说明,示例如下:

In[1]:

=Eigensystem[

]//MatrixForm

Out[1]//MatrixForm=

注意:

这个例子中属于特征值1的线性无关的特征向量只有一个,这时不能找到n个线性无关的特征向量(不相似于对角矩阵)。

遇到这种情况,Mathematica总是补上零向量!

但零向量不是特征向量,与常规不一致,不要产生误解。

三、解线性方程组

专门用于解线性方程组的函数有3个:

RowReduce[M]消元得到矩阵M的行最简形矩阵。

NullSpace[M]求齐次线性方程组Mx=0的一个基础解系。

LinearSolve[M,b]求线性方程组Mx=b的一个特解。

例15求解线性方程组:

解:

In[1]:

=ab=

a=Take[ab,{1,3},{1,4}];

b=ab[[All,5]];

RowReduce[ab]//MatrixForm

Out[4]//MatrixForm=

In[5]:

=NullSpace[a]

Out[5]={{1,0,2,1},{1,1,0,0}}

In[6]:

=LinearSolve[a,b]

Out[6]=

说明:

在上例的In[1]中首先给出了一个线性方程组的增广矩阵ab,再提取前4列得到系数矩阵a,提取第5列得到常数项b。

然后利用这三个函数分别求出:

行最简形矩阵、导出组的基础解系、非齐次方程组的一个特解,于是给出了线性代数课中人工求解线性方程组的关键结果。

提示:

从线性代数的内容知道,最有用的是RowReduce,由它的计算结果就能得到所有答案,不必再使用后两个函数。

这个函数还能用于求矩阵的秩和一个极大线性无关部分组。

当然也可以用解一般方程组的函数Solve解线性方程组,当方程组有自由未知量时,输出答案时用自由未知量表示其余未知量,也很实用。

习题十三

1.已知a={4,-2,4},b={6,-3,2},试求:

(1)a•b;

(2)(3a-2b)•(a+2b)。

2.求下列行列式的值:

(1)

(2)

3.已知A=

,B=

,求AB和BA。

4.已知A=

,I=

,求2A2+3A+5I。

5.求下列矩阵的秩。

(1)

(2)

6.解下列方程组。

(1)

(2)

7.求下列矩阵的特征值和特征向量。

(1)

(2)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1