Mathematica基础 及其应用 专题2:线性代数 1
表及其操作 2
表的概念 表是由一些元素聚集成的一个整体 形式: {…,…, … } 3
表可以参与数学函数运算 函数作用到表中的每一个元素上 运算后还是一个表 【问题】 %5 * %5 = ? 4
数值表的生成 Range[n] 生成{1,2,…,n} Range[m,n] 生成{m,…,n} Range[m,n,] 步长 5
通用表的生成 Table[expr, { }] expr ——表元素的通项表示,可运算 { } —— 表的生成方式“循环描述” 一般 {var, num1, num2, di} {var, num1, num2} {var, num} {num} 6
Random[数型, {区间}] 产生一个0到1之间的随机实数 7
多重循环 非表! 8
特殊表的生成 Array[f, n] 表元素是函数f分别作用到1, 2, …, n上的值 Array[f, {n1, n2,… }] 9
Array[f, {n1,n2,…}, {ini1, ini2,…}] 生成一个n1n2 …表,其中inii为ni的初始值(缺省为1) 10
递归表的生成 NestList[函数f, 初值x, 递推次数n] 生成{x, f[x], f[f[x]], …}, 有n+1个元素 11
Nest[函数,表达式,n] 12
与Nest有关的函数 FixedPoint[f, x] Fold[f,x,{a,b,…}]给出f[f[x,a], b] FoldList同样可以用来生成列表 Select[列表, 逻辑判断]可以从列表中选取满足逻辑判断的子列表 13
前缀(Prefix)@ f@x即f[x],f@g@x即f[g[x]] 后缀(Postfix)// x//f即f[x] 如果自变量为多个,利用Sequence函数 嵌入(Infix)~ x~f~y~f~z…即f[x, y, z,…] 14
考察表的性质 Length[list] 表list的长度 Count[list, patt] list中patt出现的次数 Position[list, patt] list中patt出现的位置 MemberQ[list, patt] 测试patt 是否是list中的 元素 VectorQ[list] 测试list是否有向量结构 MatrixQ[list] 测试list是否有矩阵结构 15
16
取出表的部分 Frist[list] 取出list的第一个元素 Last[list] 取出list的最后一个元素 list[[n]] 取出list中的第n个元素 list[[-n]] 取出list中倒数第n个元素 17
深层次和组合提取 18
取出一部分的操作: Take[list,n] 从list中拿出前n个元素做成的 一表 Take[list,{m,n}] 从list中拿出第m到第n个元 素做成的一表 Rest[list] 从list去掉第一个元素后的表 Drop[list,n] 得到的表比原表少前n个元素 19
表的改造函数 Prepend[list,expr] 把expr放在list最前 Append[list,expr] 把expr放在list最后 Insert[list,expr,n] 把expr插入list中的第n个 位置 20
表的运算 Plus[a1,…,an] 把a1,…, an全部相加 Times[a1,…,an] 把a1,…, an全部相乘 等效命令: Plus[a1,…, an]=Apply[Plus, list] Times[a1,…, an]= Apply[Times, list] 其中list={a1,…, an} 21
表的应用 排列组合、集合的交、并、余等运算 向量和矩阵的表示 例 求500以内既形如3k+7,又形如5k+2的数字集合 22
InterSection(ESC+inter+ESC) 交集 Union(ESC+un+ESC) 并集 Complement 余 Join 合并 InterSection(ESC+inter+ESC) 交集 Union(ESC+un+ESC) 并集 Complement 余 Tally 统计元素个数 Sort 排序 Entropy 熵 Mean 平均值 23
表作为向量和矩阵 一层表作为向量 两层表作为矩阵——行向量的向量 1. 矩阵的生成 Array[a, {m,n}] Table[ a, {i,m} , {j,n}] 生成一个mn 的矩阵,矩阵元为aij 24
两个特殊矩阵的生成 2. 输出格式 IdentityMatrix [n] n阶单位阵 DiagonalMatrix [list] 生成一n阶对角阵, 对角元依次为表的元素 2. 输出格式 MatrixForm[mat] 把mat输出一矩阵 形式 ColumnForm[vec] 把vec输出一列 25
3. 矩阵内部元素的提取 a[[i,j]] 矩阵a的矩阵元aij a[[i]] 矩阵a的第i行 Transpose[a][[j]] 矩阵a的第j列 Take[a,{i1,i2},{j1,j2}]矩阵a的第i1到i2行, 第j1到 j2列的子矩阵 a[[Range[i1,i2], Range[j1,j2]]] 26
【问题】 B[[3,2]] =? 27
线性代数中的一般问题 28
向量和矩阵的输入 快捷键: 加行 Ctrl+Enter 加列 Ctrl+, 29
30
31
矩阵的表示形式 1. 矩阵的集合形式 如 {{a,b},{c,d}} 2. 矩阵的常规形式 如 32
3. 矩阵形式的转换 Input[m] 矩阵m的输入形式(默认) Output[m] 矩阵m的输出形式(默认) MatrixForm[m] 矩阵m的常规形式 TableForm[m] 矩阵m的表形式 CForm[m] 矩阵m的C语言形式 FortranForm[m] 矩阵m的Fortran形式 TexForm[m] 矩阵m的Tex形式 33
向量的基本运算 k a 数k与向量a的数乘 a.b 或 Dot[a, b] 向量a和b的点积 Sqrt[Apply[plus, a^2]] 向量a的模 Cross[a, b] 向量a和b的叉积 Dot[a, Cross[ b, c]] 混合积 Dot[a, b]=Inner[Times, a, b] 内积 Cross[a, b]=Outer[Times, a, b] 外积 KroneckerProduct[a, b] 直积 34
35
利用直积构造密度矩阵 36
Calculus`VectorAnalysis` 可以方便的计算梯度、散度、旋度等矢量分析 可以方便改变坐标系统 37
矩阵的运算 Det[m] 矩阵的行列式 Inverse[m] 矩阵的逆 Transpose[m] 矩阵的转置 Tr[m] 矩阵的迹 Dimensions[m] 矩阵的维数 MatrixPower[m]矩阵的n次幂 MatrixExp[m] 矩阵的指数 MatrixRank[m] 矩阵的秩 38
SingularValueList 奇异值 Norm[m, p] 范数 PseudoInverse 广义逆 SingularValueList 奇异值 Norm[m, p] 范数 39
注意:“ . ” 或 Dot[ , ]也是矩阵和矢量的乘积运算 加法 “ +” 减法 “ –” 数乘矩阵 k A或k*A 乘法 “ . ” 或 Dot[ , ] 注意:“ . ” 或 Dot[ , ]也是矩阵和矢量的乘积运算 【问题】 如何区分行向量和列向量 ? 40
增加行 增加列 41
42
放在运算命令最后,会给出结果的矩阵形式 43
例 求矩阵A的伴随矩阵 输入 coA=Det[A]*Inverse[A] 即可! 44
coA=Det[yA]*Inverse[yA]/.y->0 问题:如果Det[A]=0,怎么办? 输入: yA= A + y Identity[n] coA=Det[yA]*Inverse[yA]/.y->0 n为A的阶 使得 Det[yA]≠0 45
46
注:对符号矩阵,不必采用这种方法,直接计算 47
求解线性方程组 NullSpace[A] 求Ax=0的基础解系 LinearSolve[A,a] 求Ax=a的特解 Inverse[A].a RowReduce[A] 将A化为最简形式 48
49
50
51
52
53
对比Solve、 LinearSolve、Inverse 当方程存在唯一解时,三种方法等价 系数矩阵不是方阵即使方程有解,Inverse失效,Solve给出通解,LinearSolve给出特解 当方程无解时,Solve给出空集解, LinearSolve指出无解, Inverse失效 54
RowReduce[A] 将A化为最简形,从而判定构成矩阵;A的向量组的线性相关性、求出向量组的最大无关组、向量在基下的坐标等 系数矩阵为 {{2, 3, -9}, {3, 6, -1}} 55
化简后的方程与原方程等价,但更简单——RowReduce的优势所在 【问题】 对比RowReduce和NullSpace 56
结论:A的最简形中非零行的个数为3,知向量组是线性无关的 57
58
特征值问题的计算 Eigenvalues[A] 求矩阵A的特征值 Eigenvectors[A] 求矩阵A的特征向量 Eigensystem[A] 同时给出矩阵A的所有特征 值与特征向量 59
60
61
因A的线性无关特征向量个数等于其阶数,故矩阵A相似于对角矩阵 62
二次型的标准形,判定是否正定 f 的标准形为f =-y12-y22+2y32.由于f的特征值不都大于零,故f不正定 63
随游问题 一个粒子放在平面上的某一点(这点可作为原点)。设该粒子单位时间随机移动一步,这一步在x, y两个方向上分解的值都在-1和1之间,作一个图显示该粒子的轨迹。 64
65
66