线性代数的编程实现.doc_第1页
线性代数的编程实现.doc_第2页
线性代数的编程实现.doc_第3页
线性代数的编程实现.doc_第4页
线性代数的编程实现.doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第二篇数学实验 第2章数学实验 2.3实验3 线性代数的编程实现 10莁蚈袀膄蒃袃螆芃薅蚆肅节芅袂羁芁蒇蚄羇芁蕿羀袃芀蚂螃膁艿莁薅肇芈蒄螁羃莇薆薄衿莆芆蝿螅莅莈薂肄莅薀螈肀莄蚃蚀羆莃莂袆袂莂蒅虿膀莁薇袄肆蒀虿蚇羂葿荿袂袈肆蒁蚅螄肅蚃袁膃肄莃螄聿肃蒅罿羅肂薈螂袁肂蚀薅膀肁莀螀肆膀蒂薃羂腿薄螈袈膈芄薁袄膇蒆袇膂膆蕿虿肈膆蚁袅羄膅莁蚈袀膄蒃袃螆芃薅蚆肅节芅袂羁芁蒇蚄羇芁蕿羀袃芀蚂螃膁艿莁薅肇芈蒄螁羃莇薆薄衿莆芆蝿螅莅莈薂肄莅薀螈肀莄蚃蚀羆莃莂袆袂莂蒅虿膀莁薇袄肆蒀虿蚇羂葿荿袂袈肆蒁蚅螄肅蚃袁膃肄莃螄聿肃蒅罿羅肂薈螂袁肂蚀薅膀肁莀螀肆膀蒂薃羂腿薄螈袈膈芄薁袄膇蒆袇膂膆蕿虿肈膆蚁袅羄膅莁蚈袀膄蒃袃螆芃薅蚆肅节芅袂羁芁蒇蚄羇芁蕿羀袃芀蚂螃膁艿莁薅肇芈蒄螁羃莇薆薄衿莆芆蝿螅莅莈薂肄莅薀螈肀莄蚃蚀羆莃莂袆袂莂蒅虿膀莁薇袄肆蒀虿蚇羂葿荿袂袈肆蒁蚅螄肅蚃袁膃肄莃螄聿肃蒅罿羅肂薈螂袁肂蚀薅膀肁莀螀肆膀蒂薃羂腿薄螈袈膈芄薁袄膇蒆袇膂膆蕿虿肈膆蚁袅羄膅莁蚈袀膄蒃袃螆芃薅蚆肅节芅袂羁芁蒇蚄羇芁蕿羀袃芀蚂螃膁艿莁薅肇芈蒄螁羃 2.3实验3 线性代数的编程实现【实验目的与要求】实验目的:熟悉用Mathematic进行线性代数计算的编程方法。先修内容:第一篇 计算机数学 第3章行列式、第4章矩阵和第5章线性方程组。实验要求:掌握数学表达式的正确书写格式;熟悉Mathematic有关线性代数的常用命令、常用数学函数。【实验原理】Mathematic的基本语法、数学表达式的正确书写格式;有关线性代数的常用命令、常用数学函数。2.3.1 行列式 行列式在线性代数中有相当广泛的应用。它不仅可以用来解方程组,同时还可以用来计算矩阵的逆矩阵。我们首先对行列式做简单的回顾,在实例应用中,我们再用Mathematica所提供的命令验证一些数学上的定理,同时熟悉一下Mathematica的语法。 对于行列式的计算我们应该不会感到陌生,除了可以套用公式进行计算之外,还可以利用余子式展开(cofactor expansion)式计算。余子式的定义为:矩阵移去第i列与j行之后所得的行列式的值,再乘以(-1)i+j次方。如果用Mathematica语法表示,则MapReverse,Minorsm,0,1ij我们可以用于行列式导出A的伴随矩阵adjoint(A)(adjoint matrix),其定义为由余子式所组成矩阵的转置矩阵,详细的定义请参阅线性代数相关书籍。伴随矩阵可以用来求解矩阵A的逆矩阵,其公式为 Mathematica并没有直接提供余子式和伴随矩阵的计算命令,但我们可以很容易地根据它们的数学定义式求得。命令MatrixFormlist:将表list按矩阵形式输出。 (2.3.1)例2.3.1 定义A为3x3的矩阵。Int1:=MatrixForm A=3,0,2,4,3,0,0,1,2Outl= MatrixForm =说明:由上例2.3.1可以看出,不管输入的形式是否为矩阵,必须使用MatrixForm才能使输出矩阵形式。这不合习惯且费事,解决的方法是自定一个模板:/MatrixForm,以便快速输入。命令DetA:求方阵A的行列式。 (2.3.2)例2.3.2 求出A的行列式,A=。Int2:=DetAOut2=26Int3:=MinorsAOut3= MatrixForm =(这是A的子行列式,其中第i,j个元素是移去第n-i+1列与n-j+1行之后的行列式的值)。Int4:=Map Revers, MinorsA,0,1Out4= MatrixForm =这也是A的子行列式,但第i,j 个元素是移去第i列与第j行之后所得的行列式的值。审稿47-48:这部分删除2.3.2矩阵的定义及矩阵基本运算1.矩阵的定义 在高级语言中和不严格区分的意义下,表与矩阵是同一对象在文字处理或数据库中常称为表,在数学或物理学科中称为矩阵.Mathematica将矩阵和向量看做一类特殊形式的表,即矩阵每行的元素个数相同.因此,除了用制表函数(Table, Range)创建向量或矩阵外,还可用专为矩阵服务的Array建立向量或矩阵,Mathematica中所有标准的表操作函数都可用于矩阵操作,大多数数学函数也可以分别作用于矩阵的每一个元素.定义向量和矩阵, 用Table定义向量或矩阵的方式如下: Table f,循环范围: (2.3.3) (2.3.3)中表达式f表示向量或矩阵元素的通项公式;循环范围定义向量或矩阵的大小,一重循环范围的一般形式为:循环变量名,循环初值,循环终值,循环步长,当循环初值和循环步长为1时可以缺省. 如果(2.3.3)中循环范围为一重循环则Table定义了一个向量;如果循环范围是二重循环则Table定义了一个矩阵向量;如果循环范围是三重或更多重循环则Table定义了一个张量.当向量或矩阵元素能用一个函数表达式表示时,用函数Table在定义向量或矩阵大小的同时也给每个向量或矩阵元素定义了确定的值.Array函数是专为定义向量、矩阵和张量所用,并(缺省)规定矩阵和张量的元素下标从1开始.Array定义的矩阵都可用Table定义.Array的一般形式:Array向量元素名,n, first (2.3.4)(2.3.4)中定义有n个元素的向量,first表示向量的起始下标,当first是1时可省Array矩阵元素名, m, n , m0, n0 (2.3.5)(2.3.5)中定义m行n列的矩阵,m0, n0表示行和列起始下标,当m0, n0是1时可省略.其中:矩阵元素名是一个标识符,表示矩阵元素名,不妨称为矩阵的小名.当循环范围是u, v, w时定义一个张量.注意:Array或Table表示循环范围的形式略有不同.下面的In1和In2分别用Table和Array定义2行2列的矩阵.请在下面的实例中注意比较. 用函数Range只能定义元素为数值的向量.例2.3.3 分别用Table和Array定义2行2列的矩阵。 In1:=Tableai,j,i, 2,j,2 Out1=a1,1,a1,2, a2,1,a(2,2)(*矩阵每一行元素用括起来*) In2:=Array(a,2, 2) Out2=a 1, 1,a 1, 2,a2, 1,a2, 2 In3:=Tablei c,i,3 Out3=c,2c, 3c In4:=Range2,11,2(*生成数值向量*) Out4=2, 4, 6, 8,10 InS:=Array m,1,-1 Out5=m-1, m0, m1,m2 In6:=Array c, 2, 2,1,0 Out6=(c1, 0, c-1, 1 ), (c0, 0, c0, 1日 In7:=tablei+j-1,i, 3,j, 3 Out7=1,2, 3,2, 3, 4,3,4,5综上所述,我们将向量和矩阵定义的常用形式用表2.3.1列出:表2.3.1向量和矩阵定义中常用的命令及说明向量和矩阵定义说明Table f,i, n Table f,i, m ,j, nArraya,n定义元素为f (i)的n个元素的向量定义元素为f(i,j)的m行n列的矩阵定义向量a1, a2anlArray a, n, firstArraya,m, n,m0,n0Array a,m, nRange m Range m, n, d 定义起始下标为first,共有n个元素定义m行n列矩阵ai, j,行列下标从m0和n0开始定义m行n列矩阵ai, j,i=1,m,j=1,n 定义数值为1,2, m,的向量定义数值在m到n的向量,d是步长增量注意:函数Table中的f是一个表达式;函数Array中的a是一个标识符.Matbematica还有一些定义特殊矩阵的函数,例如:定义单位矩阵、上三角矩阵和对角矩阵等.请看下面的特殊矩阵定义形式(表2.3.2)和实例:表2.3.2特殊矩阵定义中常用的命令及说明特殊矩阵定义说明Table 0,m,nTableRandom0,1,m,nTableIf i=j, f, 0,i, m,j. nTableIfi=j, f, 0,i, m ,j. nIdentityMatrix nDiagonalMatrix listColumnForm u MatrixFormMm行n列的零矩阵m行n列的0到1之间的随机数矩阵m行n列的元素是f的下三角矩阵m行n列的元素是f的上三角矩阵n维单位矩阵对角线为表list元素的对角矩阵按向量形式输出向量或矩阵按矩阵形式输出矩阵M例如,例2.3.4就是定义一个对角形矩阵。例2.3.4 定义对角线元素是x,y,z的对角矩阵In1:=DiagonalMatrixx,y, zOut 1=x, 0, 0,0, y, 0,0, 0, z2.矩阵的加法、减法和乘法 矩阵运算是线性代数的基本内容.常规的矩阵运算有矩阵的加法、矩阵的减法、矩阵的乘法、计算矩阵的行列式、计算转置矩阵和计算逆矩阵等在Mathematica中只要一个运算符或调用一个函数即可完成上述运算. 在线性代数中,矩阵的加法(或减法)是指两个行数和列数相同的矩阵的对应元素相加(或相减).在Mathernatica中有两种情况,一种情况是两个同阶矩阵相加,其意义仍然是矩阵的对应元素相加;另一种情况是一个矩阵和一个数值(标量)相加,其意义是矩阵的每个元素和这个数相加.在Mathematica中仍用“+”作为矩阵加法的运算符,用“-”作为矩阵减法的运算符.例如:M+K,当M,K为矩阵时,表示矩阵M和矩阵K的对应元素相加;当M为矩阵而K为一个数值时,表示矩阵M的每个元素和数值K相加.Mathematica中矩阵的乘法和数乘矩阵的意义和表示形式与线性代数的完全相同。表2.3.3给出了矩阵加法和乘法一般形式和实例。 表2.3.3矩阵加法和乘法运算中常用的命令及说明矩阵基本运算说明A+cA+BcA A*BU*V审稿49:乘号为*,修改4处Outer Times, U, VCross U, VA为矩阵,c为标量,c与A中的每个元素相加A,B为同阶向量或矩阵,A与B的对应元素相加A为矩阵,c为标量,c与A中的每个元素相乘矩阵A与矩阵B相乘,要求A的列数等于B的行数U*V审稿49:乘号为*,修改1处向量U与V的内积(行向量乘列向量)列向量U乘行向量V向量U与向量V的外积例2.3.5 构造一个0到6之间的33阶矩阵A,再利用表2.3.3中的指令构造出新的矩阵和向量。 In 1:=A=TableRandomInteger,0 ,6,3,3 Out1=5,3,2 , 5,6,3 , 2,6,4 (*矩阵元素是0到6之间的随机数*) In2: =A+ 3 (*矩阵A的每个元素加3*) Out2=8, 6, 5,8, 9, 6,5, 9,,7 In3:=v=1, 2,1;In4:=v*v 审稿50:V是小写,乘是*Out4=6 (*v*v=11+22+11) In5: =a,b*u,v (*计算向量的内积*)审稿50:乘是*括号内也有改动,为上标* Out5=au+bv In6:=OuterTimes,a, b ,u, v Out6=au, av,bu, bv In7:=v1=a, b,c;v2=d,e,f; Crossvl,v2 (*计算向量的外积*)Out7=-ce+b f, c d-af,-bd+ae2.3.3方程组求解在Mathematica中用LinearSolve A, B ,求解满足方程组AX=B的一个解. 如果A是行列式不为零的方阵,那么这个解是方程组的惟一解;如果方程组有很多解,那么这个解是方程组的一个特解,方程组的全部解由基础解系向量的线性组合加上这个特解组成.NullSpace A提供计算方程组AX=0的基础解系的向量表.这样,LinearSolve A, B和N ullSpace A联手解出方程组AX=B的全部解.Mathematica中还有一个美妙的函数RowReduce A ,它对A的行向量作化简成梯形的初等线性变换.用RowReduce可计算矩阵的秩,判断向量组是线性相关还是线性无关和计算极大线性无关组等线性代数中的许多计算题.表2.3.4列出了解方程组函数的意义和实例.表2.3.4解方程组函数的一些常用的命令及说明解方程组函数说明RowReduce ALinearSolve A, BNullSpace ALUDecomposition AQRDecompoition A 作行的线性变换化简A,A为m行,n列的矩阵求解满足方程组AX=B的一个解,A为m行,n列的矩阵求解方程组AX=0的基础解系,A为m行,n列的矩阵做LU分解后解方程组,详情见矩阵分解做QR分解后解方程组,详情见矩阵分解例2.3.6 已知A=,计算A的秩,计算AX = 0的基础解系。In1:=A =!1, 1, 1, 1, 1, 0,-1, 1, 3, 1-1, 3, 3, 2, 1, 3;In2:=RowReduce AOut 2=1,0,-1, 1, 0, 1, 2, 0,0, 0, 0, 0,0, 0, 0, 0 (*显然,A的秩是2*)In3:=NullSpace AOut3=-1, 0, 0, 1 .,0,1,2,0 (*A的两个线性无关解*)例2.3.7 解方程组 In4:=M1,-3,-1,1,3,-1,-3,4,1,5,-9,-8;In 5

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论