用Matlab学习线性代数_行列式
matlab中的 线性代数

A= 10 01
B=eye(2,3)
% B= eye (m,n)创建m×n的
单位矩阵
B= 010 100
A=[1 3 5;2 4 6;9 8 7] size(A ) %给出矩阵A的大小(几行、几列) zeros(size(A)) %产生与矩阵A同样大小的零矩阵 ans = 0 0 0 0 0 0 0 0 0 同样可得:ones(size(A)); eye(size(A)) length(d) %给出行数和列数中的较大者 ndims(A) %给出A的维数。
全0阵
B= 000 000
ones函数是形成元素皆为 1 的矩阵 A=ones(2), %A= ones (n) 创建n×n全1 的矩阵 A= 11 11 B=ones(2,3) B= 111 111
% B= ones (m,n)
创建m×n全1的矩阵
eye则是产生一个单位矩阵
A= eye (2),
例3 在例1的基础上,完成下列运算: 1)由A的1、3、5行,2、4列交叉点上的元素生成A的子矩 阵A1; 2)生成一个10阶矩阵A2,其左上角为A,右上角为5阶单 位阵,左下角为5阶零矩阵,右下角为B; 3)完成以下初等变换: 将A的第一、四行互换,再将其第三列乘以6,再将其第一行 的10倍加至第五行; 4)提取例1中矩阵A的主对角线元素、上次对角线及下第2 条对角线元素分别赋予a1、a2、a3。 5)提取例1中矩阵A的下第2条对角线以上元素和上第1条对 角线以下的元素,其余元素为“0”,分别赋予A3、A4。 6)计算a1的转置和a2的转置对应向量的卷积。 7) 求例1中矩阵A的列向量组的一个极大线性无关组
Matlab命令
A’ A+B A-B k*A A*B det(A)
用matlab解决线性代数的问题

生成向量(1)
• 初值:步长:终值 生成从初值开始、以步长为间隔、小于或等于终值的行向量 如果不设步长,则默认步长为1
x是行向量;x’是其转置,为列向量
节约计算时间的技巧
对于需要对其元素循环赋值的矩阵,可预先对整个矩阵赋值,例如赋值为零矩阵。 以某20X500个循环的 脚本为例:
提示:循环越多,矩阵越大, 节约计算时间就越重要。
利用函数生成矩阵(2)
• eye(n)生成n×n的单位矩阵; eye (m,n)生成m×n的单位矩阵; eye(size(A))生成与A同维数的单位矩阵
– AX=B的解是X=A\B,等价于inv(A)*B – XA=B的解是X=B/A,等价于B*inv(A)
• • • • • • • •
方矩阵A的行列式:det(A) 方矩阵A的逆:inv(A) 矩阵A的共轭转置:A’ 矩阵A的转置:conj(A’) 方矩阵A的乘方:A^n 方矩阵A的迹:trace(A) 矩阵A的秩:rank(A) 方矩阵A的特征向量(矩阵)v和特征值(对角矩阵) d : [v d]=eig(A) • 对矩阵A作行初等变换化为行最简矩阵:rref(A) • 对矩阵A作奇异值分解:svd(A)
用matlab解决线性代数的问题
张宏浩
Matlab的一些常识
• • • • • • • • pi表示圆周率π=3.14159… i或j表示虚数单位sqrt(-1) conj(x):取x的复共轭 log(x):以e为底的对数函数ln(x) log10(x):以10为底的对数函数 exp(x):指数函数e^x sin(x),cos(x),tan(x),cot(x):三角函数 asin(x),acos(x),atan(x),acot(x):反三角函数
【学习】用Matlab学习线性代数行列式

【关键字】学习用Matlab学习线性代数__行列式实验目的理解行列式的概念、行列式的性质与计算Matlab函数det实验内容前面的四个练习使用整数矩阵,并演示一些本章讨论的行列式的性质。
最后两个练习演示我们使用浮点运算计算行列式时出现的不同。
理论上将,行列式的值应告诉我们矩阵是否是奇异的。
然而,如果矩阵是奇异的,且计算其行列式采用有限位精度运算,那么由于舍入误差,计算出的行列式的值也许不是零。
一个计算得到的行列式的值很接近零,并不能说明矩阵是奇异的甚至是接近奇异的。
此外,一个接近奇异的矩阵,它的行列式值也可能不接近零。
1.用如下方法随机生成整数元素的5阶方阵:A=round(10*rand(5)) 和B=round(20*rand(5))-10用Matlab计算下列每对数。
在每种情况下比较第一个是否等于第二个。
(1)det(A) ==det(A T) (2)det(A+B) ;det(A)+det(B)(3)det(AB)==det(A)det(B) (4)det(ATBT) ==det(AT)det(BT)(5)det(A-1)==1/det(A) (6)det(AB-1)==det(A)/det(B)> A=round(10*rand(5));>> B=round(20*rand(5))-10;>> det(A)ans =5972>> det(A')ans5972>> det(A+B)ans =36495>> det(A)+det(B)ans =26384>> det(A*B)ans =4>> det(A)*det(B)ans =4>> det(A'*B')ans =4>> det(A')*det(B')ans =4>> det(inv(A))ans =0.00016745>> 1/det(A)ans =0.00016745>> det(A*inv(B))ans =0.29257>> det(A)/det(B)ans =0.29257>>2.n阶的幻方阵是否奇异?用Matlab计算n=3、4、5、…、10时的det(magic(n))。
用MATLAB计算矩阵与行列式教材

运行结果: C= -1 -2 1 2 4 -1 2 3 -1 程序说明:
如果矩阵不可逆,则运行结果会给出警告信息.
练习3 利用矩阵的初等行变换求上例矩阵的逆. 程序设计: 矩阵A的增广矩阵 >> clear >> B=[1 –1 2 1 0 0;0 1 –1 0 1 0;2 1 0 0 0 1]; >> format rat 以有理格式输出 >> C=rref (B) 给出矩阵B的行最简形 C= 1 0 0 1 0 0
x1 2 x2 4 x3 0 2 x1 x2 x3 0 x x x 0 2 3 1
பைடு நூலகம்
练习2 求解方程组 解
,b AX
>> clear >> A=[2 1 2;2 1 4;3 2 1]; >> b=[3 1 7]’; >> X=A\b X= 2 1 -1
程序设计: >> clear >> A=[1 2 3;2 1 2;3 3 1]; >> B=[3 2 4;2 5 3;2 3 1];
>> C=A*B , D=B*A
运行结果: C= 13 21 13 12 15 13 17 24 22 D= 19 20 17 21 18 19 11 10 13
例题分析: 比较C和D,可以看出A*B和B*A的结果完全不同.
0 0 1
-1 -2 1 2 4 -1 2 3 -1
>> D=C(:,4:6) D= -1 -2 1 2 4 -1 2 3 -1
取矩阵C的4到6列, D即为矩阵A的逆矩阵
例题说明: 由线性代数的知识可知,矩阵 A 和其同型的单 位矩阵 E 组成增广矩阵 B ,对 B 进行初等行变换, 当矩阵 A 变为单位阵时,单位矩阵 E 变为矩阵 A 的 逆.
matlab中矩阵的行列式

matlab中矩阵的行列式矩阵的行列式是线性代数中一个重要的概念,它可以用于求解矩阵的逆、判断线性方程组的解的唯一性等问题。
本文将介绍矩阵的行列式的定义、性质及其应用。
一、定义对于一个n阶方阵A,定义其行列式为:|A| = ∑(-1)^k*a1k*M1k其中k为1到n,a1k为A的第1行第k列元素,M1k为A去掉第1行第k列后形成的(n-1)阶子阵的行列式。
二、性质1. 行列式与转置矩阵的行列式相等,即|A|=|A^T|。
2. 互换矩阵的两行或两列,行列式变号。
3. 矩阵的某一行(列)乘以一个数k,行列式也乘以k。
4. 交换矩阵的任意两行或两列,行列式变号。
5. 矩阵某一行(列)的所有元素乘以一个数k,等价于该行(列)对应的代数余子式乘以k。
6. 对于任意两个矩阵A和B,有|AB|=|A|*|B|。
三、应用1. 矩阵的逆设A为n阶矩阵,若|A|≠0,则A可逆,且其逆矩阵为:A^-1 = (1/|A|)*adj(A)其中adj(A)为A的伴随矩阵,即A的每个元素的代数余子式组成的矩阵的转置矩阵。
2. 线性方程组的解对于一个n元线性方程组Ax=b,若|A|≠0,则该线性方程组有唯一解。
若|A|=0,则该线性方程组无解或有无穷多组解。
3. 矩阵的秩对于一个n阶矩阵A,其秩r等于A的非零行列式的个数,即r=rank(A)=非零行列式的个数。
4. 矩阵的特征值和特征向量对于一个n阶矩阵A,若存在一个非零向量x,使得Ax=λx(其中λ为常数),则λ称为A的特征值,x称为A的对应于特征值λ的特征向量。
五、结论矩阵的行列式是线性代数中一个重要的概念,它在求解矩阵的逆、判断线性方程组的解的唯一性、矩阵的秩、特征值和特征向量等方面都有重要的应用。
同时,矩阵的行列式具有一些特殊的性质,如行列式与转置矩阵的行列式相等、互换矩阵的两行或两列,行列式变号等,这些性质也为我们在求解问题时提供了便捷的方法。
用MATLAB做线性代数实验

【2】参数方程解的判别 【注意】 :含有参数情况的线性方程组的解的情况讨论,不能直接使用 Matlab 中 的函数:rank,rref,因为 Matlab 会默认这些参数及其表达式不等于零。因此,应 该编写独立的过程加以讨论。 试就参数 s 的各种情况,讨论下述线性方程组的解的情况:
sx y z 1 x sy z s 。 2 x y sz s
p1 ( x ) q( x ) p2 ( x ) r ( x ) , d (r ( x )) d ( p2 ( x ))
例如,求多项式 f ( x ) x 3 6 x 2 11 x 6 , g( x ) x 5 2 x 2 1 的最大公因式和最小公倍 式。 p=[1 -6 11 -6]; q=[1 0 0 -2 0 1]; [q1,r1]=deconv(q,p) [q2,r2]=deconv(p,r1(4:6)) %注意保证第一个分量不能为零 [q3,r3]=deconv(r1(4:6),r2(3:4))
x2 x3 2 x2 3 x 2
分解为最简分式之和的程序如下:
-0.5000 - 1.3229i -1.0000 r = [] 结果表示出来即是:
f ( x)
如果是在实数范围内分解:
0.25 0.4725 i x 0.51.3229 i
0.25 0.4725 i x 0.51.3229 i
用 MATLAB 做线性代数实验
1. 多项式运算
【1】表示方法与根 表示方法:降幂,向量形式. 例如, p( x ) 2 x x 3 x5 被表示为向量 p=[-1 0 1 0 2 0] 而不是 p=[0 2 0 1 0 -1] 或者 p=[2 1 -1]. 相关 MATLAB 函数 函数名 含义 %注意保证第一个分量不能为零
Matlah软件在线性代数教学中的应用举例

Matlah软件在线性代数教学中的应用举例作者:屠小明冯元珍来源:《科技视界》 2012年第31期屠小明1 冯元珍2(1.南京医科大学基础医学院江苏南京210029;2.南京人口管理干部学院基础部江苏南京210042)【摘要】结合线性代数教学中的几个知识点,介绍了Matlab软件在线性代数教学中的应用,将Matlab引入到线性代数教学过程中可以激发学生学习线性代数的兴趣,提高课堂教学质量。
【关键词】Matlab;线性代数;应用实例0 引言线性代数作为讨论有限维空间线性关系理论的一门经典课程,由于其与实际问题的密切联系,在自然科学、社会科学,工程科学和军事技术中已得到广泛应用[1]。
由于线性代数知识体系具有较强的抽象性,不少同学在线性代数的学习过程觉得课程过于抽象难于理解,因此有必要对常规的线性代数教学进行一定的改革。
通过引入数学软件,可以一定在程度上帮助学生直观深入地了解知识点,辅助课堂教学,提高线性代数的课堂教学质量,同时也可以提高学生分析实际问题,解决实际问题的能力[2-3]。
Matlab(Matrix Laboratory的简称)软件是在20世纪80年代由Mathworks软件公司开发的一款数值计算软件,该软件以矩阵为基本运算单元,具有较强的科学计算功能和可视化功能[4]。
借助Matlab,用户可以进行数值计算、符号计算、数学建模和数值仿真并将计算结果通过友好的图形界面进行显示,方便用户对计算过程和结果进行分析和观察。
本文将结合线性代数中的几个知识点[5],介绍Matlab软件在线性代数教学中的应用。
1 Matlab在线性代数教学中的应用1.1 Matlab在行列式求解中的应用关于行列式的计算,在线性代数教材中给出了定义法,按行(列)展开法或利用行列式性质求解等计算方法。
实际上,对于低阶行列式很容易通过这些方法求解求其值,但对于高阶行列式,人工计算不但耗时,而且容易出错,使用Matlab可以很容易地解决这一问题。
多媒体MatLab在中学数学教学中的应用

多媒体MatLab在中学数学教学中的应用MatLab是一种由美国MathWorks公司开发的数学软件,它因其强大的计算能力和可视化效果而在数学、工程、物理等领域中被广泛使用。
在中学数学教学中,MatLab的多媒体功能可以帮助学生更好地理解各种数学概念和解题方法。
本文将介绍MatLab在中学数学教学中的应用。
线性代数线性代数是中学数学中的重要内容之一,它涉及到向量、矩阵、行列式等概念。
MatLab提供了丰富的线性代数计算工具,可以帮助学生更好地理解各种线性代数概念。
例如,在MatLab中可以使用以下命令定义向量和矩阵:v = [1234]; %定义一个行向量w = [5;6;7;8]; %定义一个列向量A = [12;34]; %定义一个2x2的矩阵通过这些命令,学生可以直观地理解向量和矩阵的定义。
MatLab还提供了行列式、逆矩阵等计算工具,可以帮助学生更好地理解线性代数的运算规律。
函数和图像在中学数学中,函数和图像是重要的概念。
MatLab提供了丰富的函数计算和图像绘制工具,可以帮助学生更好地理解各种函数和图像。
例如,在MatLab中可以使用以下命令绘制函数图像:x = -5:0.1:5;y = sin(x);plot(x,y);通过这些命令,学生可以看到sin函数的图像,并直观地理解函数的周期、振幅等概念。
MatLab还提供了三角函数、指数函数、对数函数等丰富的函数库,可以帮助学生更好地理解各种函数。
数据分析和统计在中学数学中,数据分析和统计是重要的内容之一。
MatLab提供了丰富的数据分析和统计工具,可以帮助学生更好地理解各种数据分析和统计概念。
例如,在MatLab中可以使用以下命令读取数据文件并进行统计分析:data = csvread('data.csv');mean(data) %计算平均值std(data) %计算标准差hist(data) %绘制直方图通过这些命令,学生可以直观地了解数据的分布情况,进而深入理解以及应用到相关数学知识中去。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
用Matlab学习线性代数__行列式实验目的理解行列式的概念、行列式的性质与计算Matlab函数det实验内容前面的四个练习使用整数矩阵,并演示一些本章讨论的行列式的性质。
最后两个练习演示我们使用浮点运算计算行列式时出现的不同。
理论上将,行列式的值应告诉我们矩阵是否是奇异的。
然而,如果矩阵是奇异的,且计算其行列式采用有限位精度运算,那么由于舍入误差,计算出的行列式的值也许不是零。
一个计算得到的行列式的值很接近零,并不能说明矩阵是奇异的甚至是接近奇异的。
此外,一个接近奇异的矩阵,它的行列式值也可能不接近零。
1.用如下方法随机生成整数元素的5阶方阵:A=round(10*rand(5)) 和B=round(20*rand(5))-10用Matlab计算下列每对数。
在每种情况下比较第一个是否等于第二个。
(1)det(A) ==det(A T) (2)det(A+B) ;det(A)+det(B)(3)det(AB)==det(A)det(B) (4)det(A T B T) ==det(A T)det(B T)(5)det(A-1)==1/det(A) (6)det(AB-1)==det(A)/det(B)> A=round(10*rand(5));>> B=round(20*rand(5))-10;>> det(A)ans =5972>> det(A')ans5972>> det(A+B)ans =36495>> det(A)+det(B)ans =26384>> det(A*B)ans =4>> det(A)*det(B)ans =4>> det(A'*B')ans =4>> det(A')*det(B')ans =4>> det(inv(A))ans =0.00016745>> 1/det(A)ans =0.00016745>> det(A*inv(B))ans =0.29257>> det(A)/det(B)ans =0.29257>>2.n阶的幻方阵是否奇异?用Matlab计算n=3、4、5、…、10时的det(magic(n))。
看起来发生了什么?验证当n=24和25时,结论是否仍然成立。
【当n为奇数时,det(magic(n))不为0;当n为偶数时,det(magic(n))为0;】>> det(magic(3))ans =-360>> det(magic(4))ans =>> det(magic(5))ans =5070000>> det(magic(6))ans =>> det(magic(7))ans =-3.4805e+011>> det(magic(8))ans =>> det(magic(9))ans =7.5036e+016>> det(magic(10))ans =>> det(magic(24))ans =>> det(magic(25))ans =3.9506e+069>>3.令A=round(10*rand(6))。
下列每种情形下,用Matlab计算给出的另一个矩阵。
说明第二个矩阵和矩阵A之间的关系,并计算两个矩阵的行列式。
这些行列式之间有什么关联?(1)B=A;B(2,:)=A(1,:);B(1,:)=A(2,:); 【A与B行换了一次】(2)C=A;C(3,:)=4*A(3,:); 【B的第三行为A的四倍】(3)D=A;D(5,:)=A(5,:)+2*A(4,:) 【B的第五行等于A的第五行加上A的第四行的二倍】>> A=round(10*rand(6));>> B=A;B(2,:)=A(1,:);B(1,:)=A(2,:);>> det(A)ans =4636>> det(B)ans =-4636>> C=A;C(3,:)=4*A(3,:);>> det(C)ans =18544>> D=A;D(5,:)=A(5,:)+2*A(4,:);>> det(D)ans =4636>>4.我们可以通过如下方法随机生成一个全部元素为0和1的6阶方阵A:A=round(rand(6)(1)这些0-1矩阵奇异的百分比是多少?【61%】可以用Matlab命令估计这个百分比:y=zeros(1,100);然后生成100个测试矩阵,并且若第j个矩阵是奇异的,令y(j)=1,否则为0。
这可以通过Matlab中的for循环容易地实现。
循环如下:for j=1:100A=round(rand(6));y(j)=(det(A)==0);end为了确定生成了多少奇异矩阵,使用Matlab命令sum(y)。
生成的矩阵中,奇异矩阵的百分比是多少?>> A=round(rand(6));>> y=zeros(1,100);>> for j=1:100A=round(rand(6));y(j)=(det(A)==0);end>> yy =Columns 1 through 180 1 1 1 0 0 1 0 1 1 1 1 0 0 1 1 1 1Columns 19 through 360 1 1 1 0 0 1 0 0 0 0 1 0 0 1 1 1 1Columns 37 through 541 0 0 0 1 1 1 1 0 0 0 1 0 1 1 0 1 1Columns 55 through 721 1 1 0 0 1 1 1 1 1 1 1 1 0 1 1 1 1Columns 73 through 901 1 0 0 1 1 1 1 0 1 1 1 0 0 0 0 0 0Columns 91 through 1001 1 0 1 1 0 1 1 0 0>> sum(y)ans =61>>(2)对任意正整数n,可以通过下面命令随机生成元素为从0—n的整数的矩阵A:A=floor((n+1)*rand(6))若n=3,采用这种方法生成的矩阵中奇异矩阵的百分比是多少?n=6呢?n=10呢?我们可以采用Matlab对这些问题进行估计。
对每种情况,生成100个矩阵,并确定其汇总多少矩阵是奇异的。
(n=3)>> A=floor(4*rand(6));>> y=zeros(1,100);>> for j=1:100 A=round(rand(6)); y(j)=(det(A)==0);end>> sum(y)ans =59(n=6)>> A=floor(7*rand(6));>> y=zeros(1,100);>> for j=1:100 A=round(rand(6)); y(j)=(det(A)==0);end>> sum(y)ans =55(n=10)>> A=floor(11*rand(6));>> y=zeros(1,100);>> for j=1:100 A=round(rand(6)); y(j)=(det(A)==0);end>> sum(y)ans =57>>5.若一个矩阵对舍入误差敏感,则计算得到的行列式将会与真实值有极大的不同。
作为这个问题的例子,令U=round(100*rand(10));U=triu(U,1)+0.1*eye(10)理论上,det(U)=det(U T)=10-10且det(UU T)=det(U)*det(U T)=10-20用Matlab计算det(U)、det(U’)和det(U*U’)。
计算结果和理论值是否相同?【不相同】>> U=round(100*rand(10));>> U=triu(U,1)+0.1*eye(10);>> det(U)ans =1e-010>> det(U')ans =1.8222e-006>> det(U*U')ans =1.0245e+0116.用Matlab构造矩阵A:A=vander(1:6);【>> A=vander(1:6)A =1 1 1 1 1 132 16 8 4 2 1243 81 27 9 3 11024 256 64 16 4 13125 625 125 25 5 17776 1296 216 36 6 1】A=A-diag(sum(A’))(1)由构造,A的每一行所有元素的和均为零。
为检测结论,令x=ones(6,1),并用Matlab计算乘积Ax。
矩阵A应为奇异的。
为什么?【diag(sum(A’)表示的是A 的每一行的元素的和值组成的对角阵】试说明理由。
用Matlab 函数det 和inv 计算det(A)和A -1。
哪一个Matlab 函数作为奇异的指示器更合理? >> A=vander(1:6);>> x=ones(6,1);>> A=A-diag(sum(A'));>> det(A)ans =10>> A*xans =>> inv(A')Warning: Matrix is close to singular or badly scaled.Results may be inaccurate. RCOND = 5.223485e-021.ans =9.8091e+015 9.8091e+015 9.8091e+015 9.8091e+015 9.8091e+015 9.8091e+0153.9591e+014 3.9591e+014 3.9591e+014 3.9591e+014 3.9591e+014 3.9591e+0144.1906e+013 4.1906e+013 4.1906e+013 4.1906e+013 4.1906e+013 4.1906e+0138.8054e+012 8.8054e+012 8.8054e+012 8.8054e+012 8.8054e+012 8.8054e+0122.7604e+012 2.7604e+012 2.7604e+012 2.7604e+012 2.7604e+012 2.7604e+012 1.0995e+012 1.0995e+012 1.0995e+012 1.0995e+012 1.0995e+012 1.0995e+012比较上述,inv(A')更合理(逆矩阵太大,相应近似||*A A 中的|A|趋近于0)>>(2)用Matlab 计算det(A T )。