线性代数实验.docx
《线性代数实验.docx》由会员分享,可在线阅读,更多相关《线性代数实验.docx(13页珍藏版)》请在冰豆网上搜索。
![线性代数实验.docx](https://file1.bdocx.com/fileroot1/2022-12/28/fa4c9250-0540-4e93-a693-6b6eaa621fda/fa4c9250-0540-4e93-a693-6b6eaa621fda1.gif)
线性代数实验
第四章线性代数实验
第一节行列式计算
实验目的及要求:
熟练应用Mathematica命令进行行列式基本运算。
实验设备:
数学软件、计算机
实验内容:
1、复习
(1)行列式、
(2)克莱姆法则
2、本实验所用基本命令
(1)MatrixForm[A](将矩阵A由屏幕输入)
(2)Det[A](求方阵A的行列式)
3、简单操作过程
计算方阵的行列式时,除了用表输入方阵外,也可用基本输入模板中的矩阵模块输入后再计算。
例1求行列式
In[1]:
=A={{-2,0,1},{1,2,3},{1,4,2}};
Det[A]
Out[1]=-14
例2求行列式
的值
In[1]:
=Det[
]
Out[1]=12
第二节向量和矩阵运算
实验目的及要求:
熟练应用Mathematica命令进行矩阵乘法,求转置,逆矩阵及求矩阵的秩等运算,掌握与向量和矩阵有关的计算技巧,会使用向量工具处理问题。
实验设备:
数学软件、计算机
实验内容:
1、复习矩阵和向量的基本概念和运算
2、本实验所用基本命令
(1)Transpose[A](求矩阵A的转置)
(2)
(矩阵A与矩阵B对应元素相乘)
(3)Inverse[A](求方阵A的逆矩阵)
(4)a.b(两向量做内积)
3、简单操作过程
在Mathematica中向量和矩阵就是一个表
表示一个向量
表示一个m行n列的矩阵,每一子表表示一行。
矩阵的输入法
(1)按表的形式输入矩阵
既然矩阵和向量都是一个表,那么对表的操作仍然适用。
但是,按表的形式输入会让人很不习惯,因此Mathematica也提供了矩阵和向量的常规形式的输入、输出方法。
(2)由模板输入矩阵
基本输入模板中有输入2阶方阵的模板,单击该模板输入一个空白的二阶方阵,按“ctrl+,”使矩阵增加一列,按“ctrl+Enter”是矩阵增加一行。
如果矩阵不大此法较方便。
(3)由菜单输入矩阵
如果输入行、列数较多的矩阵时,可以打开主菜单栏中的Input项,其中“CreateTable/Matrix/Palette”可用于建立一个矩阵,单击该项会出现一个对话框,选择MakeMatrix,再输入行数和列数,单击ok按钮,一个空白矩阵被输入到工作区。
(4)使用函数建立矩阵
除了前面表的有关操作中介绍的Table函数外,下列函数也可建造表:
Array[a,{m,n}]建造一个m行n列的矩阵,元素为a[i,j]
IndentyMatrix[n]建造一个n阶单位阵
DiagonalMatrix[list]建造一个对角线上为表的元素的方阵如下例:
In[1]:
=Array[a,{2,3}]//MatrixForm
Out[1]//MatrixForm=
In[2]:
=Array[a,{2,3},{0,,0}]//MatrixForm
Out[2]//MatrixForm=
In[3]:
=IndentityMatrix[3]//MatrixForm
Out[3]//MatrixForm=
In[4]:
=DiagonalMatrix[{1,2,3}]//MatrixForm
Out[4]//MatrixForm=
说明:
函数Array加上第三个参数用于规定起始下标,起始下标可以取任意整数。
不管用何种方法输入矩阵,矩阵总是按表的形式输出,这难于阅读,因此Mathematica提供了以矩阵形式输出矩阵的函数:
MatrixForm[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[3]//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形式上是表,能被系统作为矩阵处理,而变量b虽然是常规形式的矩阵表示,系统却不能对b进行各种矩阵运算,务必注意。
注:
使用括号可以改变表达式含义解决上述问题。
例3观察下面矩阵的输出
In[1]:
=
//MatrixForm
Out[1]//MatrixForm=
In[2]:
=Inverse[b]//MatrixForm
Out[2]//MatrixForm=
In[1]:
=A={{3,1,1},{2,1,2},{1,2,3}};
B={{1,1,0},{2,0,2},{2,3,1}};
MatrixForm[A]
MatrixForm[B]
Out[1]=略
In[2]:
=Transpose[A]
Out[2]={{3,2,1},{1,1,2},{1,2,3}}
In[3]:
=Inverse[A]
Out[3]={{
},{
},{
}}
In[4]:
=
Out[4]={{7,6,3},{8,8,3},{11,10,7}}
例5求两向量
In[2]:
=a={2,3,2};
b={1,0,3};
Out[2]=8
本节最后介绍一下有关秩的求法。
矩阵M的秩即M的不为零的子式的最高阶数,命令Minors[M,k]可得M的所有可能的k阶子式组成的矩阵,因此命令Minors[M,k]可以求出矩阵的秩。
例6设
,求矩阵M的秩。
In[1]:
=M={{3,2,-1,-3,-2},{2,-1,3,1,-3},{7,0,5,-1,-8}};
Minors[M,2]
Out[1]={{-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}}
In[2]:
=Minors[M,3]
Out[2]={{0,0,0,0,0,0,0,0,0,0}}
可见M有不为0的二阶子式,而三阶子式为0,所以M的秩为2
第三节线性方程组
实验目的及要求:
熟练应用Mathematica命令进行线性齐次方程组的基础解系和非齐次方程组的通解和特解求法。
实验设备:
数学软件、计算机
实验内容:
1本实验所用基本命令
(1)RowReduce[A](求A的行约化矩阵)
(2)LinearSolve[A,B](计算满足AX=B的一个解,A为方阵)
(3)NullSpace[A](计算方程组AX=O的基础解系向量表,A为方阵)
2、简单操作过程
(1)求齐次线性方程组的解空间
给定线性齐次方程组
(A为
阶矩阵,X为
维列向量)该方程组必定有解。
如果A的秩等于n则只有零解,如果A的秩小于n则有非零解,且所有解构成一个向量空间。
在Mathematica中可利用NullSpace给出齐次方程组的解空间的一个基。
例1求解方程组
In[1]:
=A={{1,1,-2,-1},{3,-2,-1,2},{0,5,7,3},{2,-3,-5,-1}}
NullSpace[A]
Out[1]={{-2,1,-2,3}}(说明向量(-2,1,-2,3)是解空间的基)
例2求解方程组
In[1]:
=A={{1,1,2,-1},{3,-2,-3,2},{0,5,7,3},{2,-3,-5,-1}}
NullSpace[A]
Out[1]={}(解空间的基是空集,说明方程组只有零解)
(2)非齐次线性方程组的特解
使用命令LinearSolve[A,b],即可解出线性方程组
的一个特解。
例3求线性方程组
的特解
In[1]:
=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]
Out[1]={1,1,-1,0}(只是方程组的一个特解)
例4求线性方程组
的特解
In[1]:
=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]
Out[1]=LinearSolve:
:
nosol:
Linearequationencounteredwhichhasnosolution(说明原方程组的无解)
(3)求方程组的通解
使用命令Solve可以求非齐次线性方程组的通解
例5解方程组
In[1]:
=Solve[{x-y+2z+w==1,2x-y+z+2w==3,x-z+w==2,3x-y+w==5},{x,y,z,w}]
Out[1]={{x->2-w+z,y=1+3z}}
即
非齐次线性方程的一个特解为(2,1,0,0),
对应的齐次线性方程组的基础解系为(1,3,1,0),(-1,0,0,1)
例6解方程组
In[1]:
=Solve[{x-2y+3z-4w==4,y-z+w==-3,x+3z+w==1,-7y+3z+w==-3},{x,y,z,w}]
Out[1]={{x->-8,y->3,z->6,w->0}}(说明原方程组有唯一解)
本章最后补充一点有关利用mathematica求解矩阵的特征值与特征向量的方法。
(1)使用Eigenvalues[M],可给出方阵M的特征值
(2)使用Eigenvectors[M],可给出方阵M的特征向量(可能输出有零向量,非零的才是特征向量)
(3)使用Eiginsystem[M],可给出方阵M的特征值和特征向量。
(4)调用线性代数向量组正交化软件包
<下面我们通过几个例子看一下这几个命令的用法。
例7求方阵
的特征值和特征向量
In[1]:
=M={{1,2,3},{2,1,3},{3,3,6};
Eigenvalues[M]
Eigenvectors[M]
Eigensystem[M]
Out[1]={1,0,9}
{{-1,1,0},{-1,-1,1},{1,1,2}}
{{1,0,9},{{-1,1,0},{-1,-1,1},{1,1,2}}}
例8已知2是方阵
的特征值,求t。
In[1]:
=A={{3,0,0},{1,t,3},{1,2,3}};
Q=Det[A];
Solve[q==0,t]
Out[1]={{t->8}}
应用实验
(1)In[1]:
=A={{1,1,1,1},{1,0,-1,1}{3,1,-1,3},{3,2,1,3}}
In[2]:
=RowReduce[A]
Out[2]={{1,0,-1,1},{0,1,2,0},{0,0,0,0},{0,0,0,0}}(*显然,A的秩是2*)
In[3]:
=NullSpace[A]
Out[3]={{-1,0,0,1,},{1,-2,1,0}}(*A的两个线性无关解*)
(2)In[4]:
=M={{1,-3,-1,1},{3,-1,-3,4},{1,5,-9,-8}};
In[5]:
=b={1,4,6};
In[6]:
LinearSolve[M,B]
Out[6]={7/8,1/8,-1/2,0}(*方程组MX=B的一个特解*)
In[7]:
=NullSpace[m]
Out[7]={-21,-1,-10,8}}(*解向量组成一个矩阵,M只有一个解*)
In[8]:
=x=c%[[1]]=%%(*x为MX=B的全部解*)
Out[8]={7/8-21c,1/8-c,-1/2-10c,8c}(*c为任意实数*)
3某农场饲养的动物所能达到的最大年龄为15岁,将其分为三个年龄组:
第一组,0——5岁;第二组6——10岁;第三组成11——15岁。
动物从第二年龄组起开始繁殖后代,经过长期统计,第二年龄组的动物在其年龄段平均繁殖4个后代,第三组在其年龄段平均繁殖3个后代,第一年龄组和第二年龄组的动物能顺利进入下一个年龄组的存活率分别是1/2和1/4。
假设农场现有三个年龄段的动物各1000头,问15年后农场饲养的动物总数及农场三个年龄段的动物各将达到多少头?
指出15年间,动物总增长多少头及总增长率。
1)问题分析
年龄组为5岁一段,故将时间周期也取5年。
15年经过3个周期。
用k=1,2,3分别表示第一、二、三个周期,xi(k)表示第i个年龄组在第k个周期的数量。
由题意,有如下矩阵递推关系:
2)实验操作
In[1]:
=L={{0,4,3},{1/2,0,0},{0,1/4,0}};
x0={1000,1000,1000};
In[2]:
=Do[x0=L.x0;Print[x0],{3}]
Out[2]={7000,500,250}
{2750,3500,125}
{14375,1375,875}
In[3]:
=t=x0.{1,1,1}
Out[3]=16625
In[4]:
=x0/t//N
Out[4]={0.864662,0.0827068,0.0526316}
结果分析:
15年后,农场饲养的动物总数将达到16625头,其中0——5岁的有14375头,占总数的86.47%,6——10岁的有1375头,占8.27%,11——15岁的有875头,占5.226%,15年间,动物总增长13625头,总增长率为13625/3000=454.16%。
4已知某城市部分单行街道的交通流量每小时过车数(如图)
试建立数学模型确定该交通网中未知部分的具体流量
解:
(1)假设全部流入网络的流量等于全部流出网络的流量。
(2)假设全部流入某个节点的流量等于全部流出此结点的流量。
(3)假设每个节点没有车辆停留。
建立模型
请同学们利用mathematica相关函数和命令自行求解
5有甲乙丙三种化肥,甲种化肥每千克含氮70克,磷8克,钾2克;乙种化肥每千克含氮64克,磷10克,钾0.6克;丙种化肥每千克含氮70克,磷5克,钾1.4克.若把此三种化肥混合,要求总重量23千克且含磷149克,钾30克,问三种化肥各需多少千克?
解:
问题分析
设甲、乙、丙三种化肥各须,x1,x2