矩阵运算与方程组求解
(2012-10-10 14:07:20)
标签:
杂谈 |
实验1
实验目的
掌握矩阵的输入方法. 掌握利用Mathematica (4.0以上版本) 对矩阵进行转置、加、减、
数乘、相乘、乘方等运算, 并能求矩阵的逆矩阵和计算方阵的行列式.
基本命令
在Mathematica中, 向量和矩阵是以表的形式给出的.
1. 表在形式上是用花括号括起来的若干表达式, 表达式之间用逗号隔开.
如输入
{2,4,8,16}
{x,x+1,y,Sqrt[2]}
则输入了两个向量.
2. 表的生成函数
(1)
Range[正整数n]—生成表{1,2,3,4,…,n};
Range[m, n]—生成表{m,…,n};
Range[m, n, dx]—生成表{m,…,n}, 步长为dx.
(2) 通用表的生成函数Table. 例如,输入命令
Table[n^3,{n,1,20,2}]
则输出
输入
Table[x*y,{x,3},{y,3}]
则输出
3. 表作为向量和矩阵
一层表在线性代数中表示向量, 二层表表示矩阵. 例如,矩阵
可以用数表{{2,3},{4,5}}表示.
输入
A={{2,3},{4,5}}
则输出
命令MatrixForm[A]把矩阵A显示成通常的矩阵形式. 例如, 输入命令:
MatrixForm[A]
则输出
但要注意, 一般地, MatrixForm[A]代表的矩阵A不能参与运算.
输入
B={1,3,5,7}
输出为
{1,3,5,7}
输入
MatrixForm[B]
输出为
虽然从这个形式看向量的矩阵形式是列向量, 但实质上Mathematica不区分行向量与列向量. 或者说在运算时按照需要, Mathematica自动地把向量当作行向量或列向量.
下面是一个生成抽象矩阵的例子.
输入
Table[a[i,j],{i,4},{j,3}]
MatrixForm[%]
则输出
注:这个矩阵也可以用命令Array生成,如输入
Array[a,{4,3}]//MatrixForm
则输出与上一命令相同.
4. 命令IdentityMatrix[n]生成n阶单位矩阵.
例如,输入
IdentityMatrix[5]
则输出一个5阶单位矩阵(输出略).
5. 命令DiagonalMatrix[…]生成n阶对角矩阵.
例如,输入
DiagonalMatrix[{b[1],b[2],b[3]}]
则输出
它是一个以b[1], b[2], b[3]为主对角线元素的3阶对角矩阵.
6. 矩阵的线性运算:A+B表示矩阵A与B的加法;k*A表示数k与矩阵A的乘法; A.B或
Dot[A,B]表示矩阵A与矩阵B的乘法.
7. 求矩阵A的转置的命令:Transpose[A].
8. 求方阵A的n次幂的命令:MatrixPower[A,n].
9. 求方阵A的逆的命令:Inverse[A].
10.求向量a与b的内积的命令:Dot[a,b].
实验举例
矩阵A的转置函数Transpose[A]
例1.1 求矩阵的转置.
输入
ma={{1,3,5,1},{7,4,6,1},{2,2,3,4}};
Transpose[ma]//MatrixForm
输出为
如果输入
Transpose[{1,2,3}]
输出中提示命令有错误. 由此可见, 向量不区分行向量或列向量.
矩阵线性运算
例1.2 设 求
输入
A={{3,4,5},{4,2,6}};
B={{4,2,7},{1,9,2}};
A+B//MatrixForm
4B-2A//MatrixForm
输出为
如果矩阵A的行数等于矩阵B的列数, 则可进行求AB的运算. 系统中乘法运算符为“.”, 即用A.B求A与B的乘积, 也可以用命令Dot[A,B]实现. 对方阵A, 可用MatrixPower[A,n]求其n次幂.
例1.3 设 求矩阵ma与mb的乘积.
输入
Clear[ma,mb];
ma={{3,4,5,2},{4,2,6,3}};
mb={{4,2,7},{1,9,2},{0,3,5},{8,4,1}};
ma.mb//MatrixForm
输出为
矩阵的乘法运算
例1.4 设 求AB与 并求
输入
Clear[A,B];
A={{4,2,7},{1,9,2},{0,3,5}};
B={1,0,1};
A.B
输出为
{11,3,5}
这是列向量B右乘矩阵A的结果. 如果输入
B.A
输出为
{4,5,12}
这是行向量B左乘矩阵A的结果 这里不需要先求B的转置. 求方阵A的三次方, 输入
MatrixPower[A,3]//MatrixForm
输出为
例1.5 (教材 例1.1) 设 求 及
输入
MatrixForm[A]
B={{3,2,1},{0,4,1},{-1,2,-4}}
MatrixForm[B]
3A.B-2A//MatrixForm
Transpose[A].B//MatrixForm
则输出 及 的运算结果分别为
求方阵的逆
例1.6 (教材 例1.2) 设 求
输入
Clear[ma]
ma={{2,1,3,2},{5,2,3,3},{0,1,4,6},{3,2,1,5}};
Inverse[ma]//MatrixForm
则输出
注: 如果输入
Inverse[ma//MatrixForm]
则得不到所要的结果, 即求矩阵的逆时必须输入矩阵的数表形式
例1.7 求矩阵 的逆矩阵.
解
MatrixForm[A]
Inverse[A]//MatrixForm
例1.8 设 求
输入
Clear[A,B];
A={{3,0,4,4},{2,1,3,3},{1,5,3,4},{1,2,1,5}};
B={{0,3,2},{7,1,3},{1,3,3},{1,2,2}};
Inverse[ma].B//MatrixForm
输出为
对于线性方程组 如果A是可逆矩阵, X,b是列向量, 则其解向量为
例1.9 解方程组
输入
Clear[A,b];
A={{3,2,1},{1,-1,3},{2,4,-4}};
b={7,6,-2};
Inverse[A].b
输出为
{1,1,2}
求方阵的行列式
例1.10
输入
Clear[A];
A={{3,1,-1,2},{-5,1,3,-4},{2,0,1,-1},{1,-5,3,-3}};
Det[A]
输出为
40
例1.11 (教材 例1.3) 求
输入
Clear[A,a,b,c,d];
A={{a^2+1/a^2,a,1/a,1},{b^2+1/b^2,b,1/b,1},
{c^2+1/c^2,c,1/c,1},{d^2+1/d^2,d,1/d,1}};
Det[A]//Simplify
则输出
例1.12 计算范德蒙行列式
输入
Clear[x];
Van=Table[x[j]^k,{k,0,4},{j,1,5}]//MatrixForm
输出为
再输入
Det[van]
则输出结果比较复杂(项很多)若改为输入
Det[van]//Simplify
或
Factor[Det[van]]
则有输出
(x[1]-x[2])(x[1]-x[3])(x[2]-x[3])(x[1]-x[4])
(x[2]-x[4])(x[3]-x[4])(x[1]-x[5])(x[2]-x[5])
(x[3]-x[5])(x[4]-x[5])
例1.13 (教材 例1.4) 设矩阵
输入
MatrixForm[A]
Det[A]
Tr[A]
MatrixPower[A,3]//MatrixForm
则输出 分别为
11592
3
向量的内积
向量内积的运算仍用“.”表示, 也可以用命令Dot实现
例1.14 求向量 与 的内积.
输入
u={1,2,3};
v={1,-1,0};
u.v
输出为
-1
或者输入
Dot[u,v]
所得结果相同.
实验习题
1.设 求 及
2.设 求 一般地
3.求 的逆.
4.设 且 求
5.利用逆矩阵解线性方程组
实验2
实验目的
基本命令
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}}]
则输出
实验举例
求矩阵的秩
例2.1 (教材 例2.1) 设
输入
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.2 已知矩阵 的秩等于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}}
当 时, 所有的三阶子式都等于0. 此时矩阵的秩等于2.
例2.3 (教材 例2.2) 求矩阵 的行最简形及其秩.
输入
MatrixForm[A]
RowReduce[A]//MatrixForm
则输出矩阵A的行最简形
根据矩阵的行最简形,便得矩阵的秩为3.
矩阵的初等行变换
命令RowfReduce[A]把矩阵A化作行最简形. 用初等行变换可以求矩阵的秩与矩阵的逆.
例2.4 设 求矩阵A的秩.
输入
Clear[A];
A={{2,-3,8,2},{2,12,-2,12},{1,3,1,4}};
RowReduce[A]//MatrixForm
输出为
因此A的秩为2.
例2.5 (教材 例2.3) 用初等变换法求矩阵 的逆矩阵.
输入
MatrixForm[A]
Transpose[Join[Transpose[A],IdentityMatrix[3]]]//MatrixForm
RowReduce[%]//MatrixForm
Inverse[A]//MatrixForm
则输出矩阵A的逆矩阵为
向量组的秩
矩阵的秩与它的行向量组, 以及列向量组的秩相等, 因此可以用命令RowReduce求向量组的秩.
例2.6 求向量组 的秩.
将向量写作矩阵的行, 输入
Clear[A];
A={{1,2,-1,1},{0,-4,5,-2},{2,0,3,0}};
RowReduce[A]//MatrixForm
则输出
这里有两个非零行, 矩阵的秩等于2. 因此, 它的行向量组的秩也等于2.
例2.7 (教材 例2.4) 向量组 是否线性相关?
输入
Clear[A];
A={{1,1,2,3},{1,-1,1,1},{1,3,4,5},{3,1,5,7}};
RowReduce[A]//MatrixForm
则输出
向量组包含四个向量, 而它的秩等于3, 因此, 这个向量组线性相关.
例2.8 向量组 是否线性相关?
输入
Clear[A];
A={{2,2,7},{3,-1,2},{1,1,3}};
RowReduce[A]//MatrixForm
则输出
向量组包含三个向量, 而它的秩等于3, 因此, 这个向量组线性无关.
向量组的极大无关组
例2.9 (教材 例2.5) 求向量组
的极大无关组, 并将其它向量用极大无关组线性表示.
输入
Clear[A,B];
A={{1,-1,2,4},{0,3,1,2},{3,0,7,14},{1,-1,2,0},{2,1,5,0}};
B=Transpose[A];
RowReduce[B]//MatrixForm
则输出
在行最简形中有三个非零行, 因此向量组的秩等于3. 非零行的首元素位于第一、二、
四列,因此 是向量组的一个极大无关组. 第三列的前两个元素分别是3,1,于是
第五列的前三个元素分别是 于是
向量组的等价
可以证明:两个向量组等价的充分必要条件是: 以它们为行向量构成的矩阵的行最简形具有相同的非零行, 因此, 还可以用命令RowReduce证明两个向量组等价.
例2.10 设向量
求证:向量组 与 等价.
将向量分别写作矩阵A, B的行向量, 输入
Clear[A,B];
A={{2,1,-1,3},{3,-2,1,-2}};
B={{-5,8,-5,12},{4,-5,3,-7}};
RowReduce[A]//MatrixForm
RowReduce[B]//MatrixForm
则输出
与
两个行最简形相同, 因此两个向量组等价.
实验习题
1.求矩阵 的秩.
2.求t, 使得矩阵 的秩等于2.
3.求向量组 的秩.
4.当t取何值时, 向量组 的秩最小?
5.向量组 是否线性相关?
6.求向量组 的最大线性无关组. 并用极大无关
组线性表示其它向量.
7.设向量 求证:向量组
与 等价.
实验3
实验目的
组的解. 理解计算机求解的实用意义.
基本命令
1.命令NullSpace ,给出齐次方程组 的解空间的一个基.
2.命令LinearSolve ,给出非齐次线性方程组 的一个特解.
3.解一般方程或方程组的命令Solve见Mathematica入门.
实验举例
求齐次线性方程组的解空间
设 为 矩阵, 为 维列向量,则齐次线性方程组 必定有解. 若矩阵 的
秩等于 ,则只有零解;若矩阵 的秩小于 ,则有非零解,且所有解构成一向量空间. 命令
NullSpace给出齐次线性方程组 的解空间的一个基.
例3.1 (教材 例3.1) 求解线性方程组
输入
Clear[A];
A={{1,1,-2,-1},{3,-2,-1,2},{0,5,7,3},{2,-3,-5,-1}};
NullSpace[A]
则输出
{{-2,1,-2,3}}
说明该齐次线性方程组的解空间是一维向量空间,且向量(-2,1,-2,3)是解空间的基.
例3.2
输入
Clear[A];
A={{1,1,2,-1},{3,-2,-3,2},{0,5,7,3},{2,-3,-5,-1}};
Nullspace[A]
输出为
{
因此解空间的基是一个空集,说明该线性方程组只有零解.
例3.3 (教材 例3.2) 向量组 是否线性相关?
根据定义, 如果向量组线性相关, 则齐次线性方程组
有非零解.
输入
Clear[A,B];
A={{1,1,2,3},{1,-1,1,1},{1,3,4,5},{3,1,5,7}};
B=Transpose[A];
NullSpace[B]
输出为
{{-2,-1,0,1}}
说明向量组线性相关,且
非齐次线性方程组的特解
例3.4 (教材 例3.3) 求线性方程组
输入
Clear[A,b];
A={{1,1,-2,-1},{3,-2,-1,2},{0,5,7,3},{2,-3,-5,-1}};
b={4,2,-2,4}
LinearSolve[A,b]
输出为
{1,1,-1,0}
注: 命令LinearSolve只给出线性方程组的一个特解.
例3.5 求线性方程组
输入
Clear[A,b];
A={{1,1,2,-1},{3,-2,-1,2},{0,5,7,3},{2,-3,-5,-1}};
b={4,2,2,4}
Linearsolve[A,b]
输出为
Linearsolve::nosol:Linear equation encountered which has no solution.
说明该方程组无解.
例3.6 向量 是否可以由向量
, ,
线性表示?
根据定义, 如果向量 可以由向量组 线性相关, 则非齐次线性方程组
有解.
输入
Clear[A,B,b];
A={{1,2,-3,1},{5,-5,12,11},{0,5,7,3},{1,-3,6,3}};
B=Transpose[A];
b={2,-1,3,4};
Linearsolve[B,b]
输出为
{ , ,0}
说明 可以由 线性表示,且
例3.7 (教材 例3.4) 求出通过平面上三点(0,7),(1,6)和(2,9)的二次多项式 并画出其图形.
根据题设条件有
Clear[x];
A={{0,0,1},{1,1,1},{4,2,1}}
y={7,6,9}
p=LinearSolve[A,y]
Clear[a,b,c,r,s,t];{a,b,c}.{r,s,t}
f[x_]=p.{x^2,x,1};
Plot[f[x],{x,0,2},GridLines->Automatic,PlotRange->All];
则输出 的值为
并画出二次多项式 的图形(略).
非齐次线性方程组的通解
用命令Solve求非齐次线性方程组的通解.
例3.8 求出通过平面上三点(0,0),(1,1),(-1,3)以及满足 的4次多项式
解
输入
Clear[a,b,c,d,e];q[x_]=a*x^4+b*x^3+c*x^2+d*x+e;
eqs=[q[0]= =0,q[1]= =1,q[-1]= =3,q’[-1]= =20,q’[1]= =9];
{A,y}=LinearEquationsToMatrice
p=LinearSolve[A,y];f[x_]=p.{x^4,x^3,x^2,x,1};
Plot[f[x],{x,-1,1},GridLines->Automatic,PlotRange->All];
则输出所求多项式
非齐次线性方程组的通解
用命令solve求非齐次线性方程组的通解.
例3.9解方程组
输入
输出为
{{x 2-w+z,y 1+3z}}
即 , .于是,非齐次线性方程组的特解为(2,1,0,0).对应的齐次线性方程组的基础解系为(1,3,1,0)与(-1,0,0,1).
例3.10解方程组
解法1
输入
输出为
{{x -8,y 3, z 6, w 0}}
即有唯一解 , , , .
解法2
输入
Clear[A,b,x];
A={{1,-2,3,-4},{0,1,-1,1},{1,3,0,1},{0,-7,3,1}};
b={4,-3,1,-3};
输出为
{-8,3,6,0}
解法3
输入
Clear[a,b,c,d,e];
a={1,0,1,0};
b={-2,1,3,-7};
c={3,-1,0,3};
d={-4,1,1,1};
e={4,-3,1,-3};
Det[{e,b,c,d}]/ Det[{a,b,c,d}]
Det[{a,e,c,d}]/ Det[{a,b,c,d}]
Det[{a,b,e,d}]/ Det[{a,b,c,d}]
Det[{a,b,c,e}]/ Det[{a,b,c,d}]
输出为
-8
3
6
0
例3.10 (教材 例3.5) 当 为何值时,方程组无解、有唯一解、有无穷多解?当方程组有
解时,求通解.
先计算系数行列式,并求 ,使行列式等于0.
输入
Clear[a];
Det[{{a,1,1},{1,a,1},{1,1,a}}];
Solve[%==0,a]
则输出
{{a -2},{a 1},{a 1}}
当 , 时,方程组有唯一解.输入
Solve[{a*x+y+z==1,x+a*y+z==1,x+y+a*z==1},{x,y,z}]
则输出{{x
当 =-2时,输入
Solve[{-2x+y+z==1,x-2y+z==1,x+y-2z==1},{x,y,z}]
则输出
{
说明方程组无解.
当 =1时,输入
Solve[{x+y+z==1,x+y+z==1,x+y+z==1},{x,y,z}]
则输出
{{x 1-y-z}}}
说明有无穷多个解.非齐次线性方程组的特解为(1,0,0),对应的齐次线性方程组的基础解
系为为(-1,1,0)与(-1,0,1).
例3.11 (教材 例3.6) 求非齐次线性方程组 的通解.
解法1 输入
A={{2,1,-1,1},{3,-2,1,-3},{1,4,-3,5}};b={1,4,-2};
particular=LinearSolve[A,b]
nullspacebasis=NullSpace[A]
generalsolution=t*nullspacebasis[[1]]+k*nullspacebasis[[2]]+Flatten[particular]
generalsolution//MatrixForm
解法2 输入
B={{2,1,-1,1,1},{3,-2,1,-3,4},{1,4,-3,5,-2}}
RowReduce[B]//MatrixForm
根据增广矩阵的行最简形, 易知方程组有无穷多解. 其通解为
实验习题
1.解方程组
2.解方程组
3. 解方程组
4.解方程组
5.用三种方法求方程组 的唯一解.
6.当 为何值时,方程组 有唯一解、无解、有无穷多解?对后
者求通解.
实验4
实验目的
模型. 掌握线性代数在交通规划方面的应用.
应用举例
假设某城市部分单行街道的交通流量(每小时通过的车辆数)如图4.1所示.
试建立数学模型确定该交通网络未知部分的具体流量.
假定上述问题满足下列两个基本假设
(1)全部流入网络的流量等于全部流出网络的流量;
(2)全部流入一个节点的流量等于流出此节点的流量.
于是, 根据图4.1及上述基本两个假设, 可建立该问题的线性方程组
即
若将上述矩阵方程记为 ,则问题就转化为求 的全部解. 下面我们利用
Mathmatica软件来求解
1、输入矩阵A,并利用RowReduce[A]命令求得A的秩为8.
RowReduce[A]//MatrixForm
Out[2]//MatrixForm=
则输出
2、应用命令NullSpace[A]求出齐次线性方程组 的基础解系.
In[3]:=NullSpace[A]//MatrixForm
Out[3]//MatrixForm=
则输出
由此即得到所求齐次线性方程组的基础解系:
, ( 为任意常数).
3、输入增广阵(A b),求出其秩为8, 由 知方程组有无穷多个解.
输入
RowReduce[Ab]//MatrixForm
Out[5]//MatrixForm=
则输出
4、应用命令LinearSolve[A, b],求得非齐次线性方程组 的一个特解.
输入
LinearSolve[A,b]
Out[9]={{800},{0},{200},{500},{0},{800},{1000},{0},{400},{600}}
则得到所求非齐次线性方程组的一个特解:
综上所述,我们就得到了非齐次线性方程组 的全部解为
在解的表示式中, 的每一个分量即为交通网络中未知部分的具体流量, 该问题有无穷
多解(为什么? 并思考其实际意义).
本模型具有实际应用价值, 求出该模型的解, 可以为交通规划设计部门提供解决交通堵
塞、车流运行不畅等问题的方法, 知道在何处应建设立交桥, 那条路应设计多宽等, 为城镇
交通规划提供科学的指导意见. 但是,在本模型中,我们只考虑了单行街道这样一种简单情形,
更复杂的情形留待读者在更高一级的课程中去研究. 此外,本模型还可推广到电路分析中的
网络节点流量等问题中.
实验报告
请读者应用本模型的思想方法, 为你所在或你熟悉的城镇建立一个区域的交通流量模
型. 并提供一个具体的解决方案, 即从无穷多个解中根据具体限制确定出一个具体的解决方
案.