用matlab解决线性代数的问题
Matlab在线性代数教学中的应用研究
线性代数作为高等院校一门重要的基础数学课程[1-2],在自然科学、工程技术和管理科学等诸多领域有着广泛的应用.但长时间以来,线性代数课程的重要作用并没有得到充分体现,学生没有认识到线性代数和实际工作的联系,该课程的教学效率低,教学效果差.为提高线性代数课程的教学质量,让学生认识到线性代数和实际应用问题的联系,会用线性代数解决后续课程中出现的一些问题,引入计算机辅助线性代数教学是必要的.本文从传统线性代数教学的不足及Matlab强大功能的介绍入手,阐述在线性代数教学中引入Matlab的必要性,进而通过例题介绍Matlab在解决线性代数中矩阵的行列式、逆、特征值、特征向量以及在解线性方程组和实际问题中的具体应用.1线性代数课程中引入Matlab 教学的必要性传统的线性代数教学以理论为主导,偏重理论的证明和推导,不用计算机解题,不联系实际应用,不能满足后续课程的需求,按所教的方法后续课程无法用来解高阶、复数的矩阵题目,后续课程普遍不用线性代数解题.另外,课程本身所固有的抽象性、逻辑性、人工计算的复杂性,使得学生学习起来费力,学习兴趣不高,学习效果不理想.Matlab是由美国Mathworks公司开发的一种功能强大的科学及工程计算软件,简单易学,具有数值运算、符号运算、计算结果和编程可视化、数学和文字同时处理等功能[3-5].引入Matlab辅助线性代数教学,使得线性代数抽象的概念能从图形的角度进行引入;可以用简单的程序解决线性方程组、行列式、矩阵的逆等问题;用数学建模思想和实例[6]实践线性代数知识的应用,达到理论对实践的指导目的.在线性代数教学中引入Matlab软件能培养学生分析问题和解决问题的能力,改变被动接受式学习的枯燥乏味,有利于调动学生的学习积极性,提高教学质量.2Matlab 解决线性代数课程中的典型问题我们知道,线性代数中行列式、矩阵的逆、特征值、特征向量以及线性方程组等很多方面涉及的计算量是很大的,即占用了学生大量的时间,又因为课时少,使得学生对于理论的学习往往很不到位,教学效果很差.下面通过典型的例题来展示Matlab软件在解决线性代数课程相关问题中的便利.例1求矩阵A=2-375-41-23346-78-23-!"""#$%%%&5的行列式detA.解输入:>>A=[2-375;-41-23;346-7;8-23-5];>>det(A)ans=-235例2求例1中矩阵A的逆.解输入:>>A=[2-375;-41-23;346-7;8-23-5];>>inv(A)ans=0.02131.63830.06380.91490.00432.12770.21280.98300.0809-0.57450.0426-0.32340.08091.42550.04260.6766例3求例1中矩阵A的特征值与特征向量.解输入:>>A=[2-375;-41-23;346-7;8-23-5];>>[V,D]=eig(A)V=0.5967-0.6805-0.68050.54970.30210.2372+0.0127i0.2372-0.0127i0.6659-0.4522-0.0105-0.4929i-0.0105+0.4929i-0.1799-0.5901-0.4830+0.0637i-0.4830-0.0637i0.4712D=-9.767300006.7031+4.6580i00006.7031-4.6580i00000.3611其中V是特征向量矩阵,D是特征值矩阵,并且相互对应.Matlab 在线性代数教学中的应用研究杜玉霞,梁武,段鹏举(宿州学院数学与统计学院,安徽宿州234000)摘要:针对目前线性代数教学效果不够理想的现状,尝试将Matlab引入线性代数教学中,以提高线性代数教学质量,为学生后续课程的学习和实际应用问题的解决打下基础.同时通过几个典型问题来说明Matlab在线性代数教学中的应用.关键词:Matlab ;线性代数;教学;应用中图分类号:O151.2文献标识码:A文章编号:1673-260X(2012)11-0003-02基金项目:安徽省教育厅教学研究项目(20101071);宿州学院教学研究项目(szxyjyxm201143)Vol.28No.11Nov.2012赤峰学院学报(自然科学版)JournalofChifengUniversity(NaturalScienceEdition)第28卷第11期(上)2012年11月3--例4解方程组x1+3x2+x3+2x4=43x1+4x2+2x3-3x4=6-x1-5x2+4x3+x4=112x1+7x2+x3-6x4=-!#####"#####$5解输入:>>A=[1312;342-3;-1-541;271-6];>>B=[4;6;11;-5];>>C=[AB];>>R=rref(C)R=100030100-10010200011第五列为所求解向量,即(x1,x2,x3,x4)=(3,-1,2,1).通过以上的实例,我们可以看出Matlab在解决线性代数典型问题中的优势,可以使得繁琐的计算通过简单的程序语言得以轻松解决,既能提高学生的动手能力,又能引发学生的学习兴趣,从而取得较好的教学效果.另外,在求诸如矩阵的转置、迹、正交矩阵等许多方面,都可以使用Matlab软件得到轻松解决.3Matlab在实际问题中的应用数学来源于现实,并应用于现实.学生在学好理论的同时,还应该学会应用数学去解决问题,下面借助Matlab来解决一个实际问题.例5某车间有Ⅰ、Ⅱ两台车床,可用于加工三种工件.假定这两台车床的可用台时数分别为800和900,三种工件的数量分别为400、600和500,且已知用两种不同车床加工单位数量不同工件所需的台时数和加工费用如下表.问怎样分配车床的加工任务,才能既满足加工工件的要求,又使加工费用最低?解这个问题可以应用线性方程组来描述,设在Ⅰ车车床类型单位工件所需加工台时数单位工件的加工费用可用台时数工件1工件2工件3工件1工件2工件3Ⅰ0.4 1.1 1.013910800Ⅱ0.5 1.2 1.311128900床加工工件1、2、3的数量分别为x1、x2、x3,在Ⅱ车床上加工工件1、2、3的数量分别为x4、x5、x6.可建立以下模型:minz=13x1+9x2+10x3+11x4+12x5+8x6s.t.=x1+x4=400x2+x5=600x3+x6=5000.4x1+1.1x2+x3≤8000.5x4+1.2x5+1.3x6≤900xi≥0,i=1,2,…,!########"########$6我们借助Matlab来求解:输入:>>f=[1391011128];A=[0.41.11000;0000.51.21.3];b=[800;900];Aeq=[100100;010010;001001];beq=[400600500];vlb=zeros(6,1);vub=[];[x,fval]=linprog(f,A,b,Aeq,beq,vlb,vub)>>x=0.0000600.00000.0000400.00000.0000500.0000fval=1.3800e+004即在Ⅰ车床上加工600个工件2,在Ⅱ车床上加工400个工件1、500个工件3,可在满足条件的情况下使总加工费用最少,为13800.4小结与建议在教学实践中,引入Matlab软件解决线性代数问题,把Matlab软件渗透到线性代数的各章节中,使得学生在学习理论知识的同时也学会了应用,为后续专业课奠定了坚实的基础,这样不仅开拓了学生的视野,提高了学习兴趣,获得了良好的教学效果,而且让学生学有所用,用有所值,为数学基础学习和实际计算应用搭建了一座桥梁.但线性代数的教学不应因引入软件而改变其理论体系,只是有些理论可以通过计算机来验证,具体到每一节课该怎么将Matlab软件与线性代数理论很好的结合起来,怎样把握,还是一个值得再继续探讨的话题.不能太向计算机软件靠拢,但是也不该像以前一样排斥数学软件,一定要掌握好计算机软件只是辅助线性代数教学,以达到好的教学效果.应用Matlab软件来辅助线性代数教学可以改变“繁”、“难”的现状,而且可以把大量的应用问题纳入课程的习题中,加强它的工程背景,从而提高学生进行数学建模的能力和解决实际问题的本领.———————————————————参考文献:〔1〕同济大学数学系.线性代数(第五版)[M].北京:高等教育出版社,2007.〔2〕陆剑虹.线性代数[M].北京:航空工业出版社,2002.〔3〕周建兴,岂兴明,矫津毅,等.MATLAB从入门到精通[M].北京:人民邮电出版社,2008.〔4〕巩萍,赵杰.Matlab在数字信号处理中的应用[J].长沙大学学报,2009,23(5):78-79.〔5〕徐小湛.数学软件在国外工科数学教学中的应用[J].高等数学研究,1999,2(4):7-11.〔6〕赵静,但琦.数学建模与数学实验(第2版)[M].北京:高等教育出版社,2003.4--。
用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解决数学问题
如何使用Matlab解决数学问题使用Matlab解决数学问题引言:数学作为一门基础学科,广泛应用于各个学科领域。
而Matlab作为一款数学软件,拥有强大的计算能力和丰富的函数库,成为了数学问题解决的得力工具。
本文将介绍如何使用Matlab解决数学问题,并通过实例来展示其强大的功能和灵活性。
一、Matlab的基本使用方法1. 安装和启动Matlab首先,我们需要从官方网站下载并安装Matlab软件。
安装完成后,打开软件即可启动Matlab的工作环境。
2. 变量和运算符在Matlab中,变量可以用来存储数据。
我们可以通过赋值运算符“=”将数值赋给一个变量。
例如,可以使用“a=5”将数值5赋给变量a。
Matlab支持常见的运算符,如加、减、乘、除等,可以通过在命令行输入相应的表达式进行计算。
3. Matirx和向量的操作Matlab中,Matrix和向量(Vector)是常用的数据结构。
我们可以使用方括号将数值组成的矩阵或向量输入Matlab,比如“A=[1 2; 3 4]”可以创建一个2x2的矩阵。
4. 函数和脚本Matlab提供了丰富的内置函数和函数库,可以通过函数来解决各种数学问题。
同时,我们还可以自己编写函数和脚本。
函数用于封装一段可复用的代码,而脚本则是按照特定的顺序执行一系列的命令。
二、解决线性代数问题1. 线性方程组求解Matlab提供了“solve”函数用于求解线性方程组。
例如,我们可以使用“solve([2*x + y = 1, x + 3*y = 1], [x, y])”来求解方程组2x + y = 1和x + 3y = 1的解。
2. 矩阵运算Matlab提供了丰富的矩阵运算函数,如矩阵的加法、乘法、转置等。
通过这些函数,我们可以快速进行矩阵运算,解决线性代数问题。
三、解决数值计算问题1. 数值积分对于某些无法解析求解的积分问题,Matlab可以通过数值积分方法求得近似解。
Matlab提供了“integral”函数用于数值积分,我们只需要给出被积函数和积分区间即可。
利用Matlab进行线性代数问题求解的方法与案例
利用Matlab进行线性代数问题求解的方法与案例引言线性代数是数学的一个重要分支,广泛应用于工程、物理、计算机科学等领域。
而Matlab作为一种功能强大的数值计算软件,提供了各种实用的工具和函数,可以方便地解决线性代数问题。
本文将介绍一些常用的线性代数问题求解方法,并通过具体的案例来展示Matlab在实际应用中的效果。
一、线性方程组的求解线性方程组是线性代数中最基础的问题之一。
Matlab提供了多种求解线性方程组的函数,如“backslash”操作符(\)和“linsolve”函数等。
下面通过一个实例来说明Matlab的线性方程组求解功能。
案例:假设有以下线性方程组需要求解:2x + 3y - 4z = 53x - 2y + z = 8x + 5y - 3z = 7在Matlab中输入以下代码:A = [2 3 -4; 3 -2 1; 1 5 -3];b = [5; 8; 7];x = A\b;通过以上代码,我们可以得到线性方程组的解x=[1; -2; 3]。
这表明在满足以上方程组的条件下,x=1,y=-2,z=3。
可以看出,Matlab在求解线性方程组时,使用简单且高效。
二、矩阵的特征值和特征向量求解矩阵的特征值和特征向量也是线性代数中的重要概念。
利用特征值和特征向量可以得到矩阵的许多性质和信息。
在Matlab中,我们可以通过“eig”函数来求解矩阵的特征值和特征向量。
案例:假设有一个2x2矩阵A,需要求解其特征值和特征向量。
在Matlab中输入以下代码:A = [2 3; 1 4];[V, D] = eig(A);通过以上代码,我们可以得到矩阵A的特征向量矩阵V和特征值矩阵D。
具体结果如下:特征向量矩阵V = [0.8507 -0.5257; 0.5257 0.8507]特征值矩阵D = [1.5858 0; 0 4.4142]由结果可知,矩阵A的特征向量矩阵V和特征值矩阵D可以提供有关该矩阵的很多信息,如相关线性变换、对称性等。
用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 函数 函数名 含义 %注意保证第一个分量不能为零
MATLAB软件在线性代数教学中的应用
MATLAB软件在线性代数教学中的应用
MATLAB是一个具有强大计算和图形处理功能的数学软件,它广泛应用于各个领域,包括线性代数教学。
在线性代数教学中,MATLAB可以帮助学生更好地理解和应用矩阵和线性方程组等基础概念。
首先,在矩阵的操作方面,MATLAB可以用来进行矩阵的创建、转置、逆矩阵计算、乘法运算、矩阵方程求解等操作。
例如,通过输入命令行“A=[1 2;3 4]”创建一个
$2\times 2$矩阵,通过输入命令行“B=A'”可以得到A的转置矩阵,通过输入命令行
“inv(A)”可以得到A的逆矩阵,通过输入命令行“C=A*B”可以得到A和B的乘积矩阵,在输入命令行“x=A\b”可以求解矩阵方程$Ax=b$。
其次,在解决线性方程组的问题上,MATLAB可以用来求解线性方程组、得到线性方程组解的唯一性和存在性,并且可以比较不同求解方法的效率。
例如,通过输入命令行
“x=A\b”就可以得到线性方程组$Ax=b$的解,通过输入命令行“rank(A)”可以得到矩阵
A的秩,通过输入命令行“cond(A)”可以得到矩阵A的条件数。
此外,在线性代数的复杂问题求解上,MATLAB可以用来进行特征值和特征向量的计算、矩阵的奇异值分解等问题的求解。
例如,通过输入命令行“[V,D]=eig(A)”可以得到矩阵
A的特征值和特征向量,通过输入命令行“[U,S,V]=svd(A)”可以得到矩阵A的奇异值分解。
总之,MATLAB的强大计算和图形处理功能,可以为线性代数教学的理解和应用提供很好的帮助。
通过学生编写MATLAB程序,实现矩阵和线性方程组的数值求解,可以加深对
线性代数基础概念的理解,提高线性代数教学的效果。
利用MATLAB求线性方程组
《MATLAB语言》课成论文利用MATLAB求线性方程组姓名:郭亚兰学号:12010245331专业:通信工程班级:2010级通信工程一班指导老师:汤全武学院:物电学院完成日期:2011年12月17日利用MATLAB求解线性方程组(郭亚兰 12010245331 2010 级通信一班)【摘要】在高等数学及线性代数中涉及许多的数值问题,未知数的求解,微积分,不定积分,线性方程组的求解等对其手工求解都是比较复杂,而MATLAB语言正是处理线性方程组的求解的很好工具。
线性代数是数学的一个分支,它的研究对象是向量,向量空间(或称线性空间),线性变换和有限维的线性方程组。
因而,线性代数被广泛地应用于抽象代数和泛函分析中;由于科学研究中的非线性模型通常可以被近似为线性模型,使得线性代数被广泛地应用于自然科学和社会科学中。
线性代数是数学的一个分支,它的研究对象是向量,向量空间(或称线性空间),线性变换和有限维的线性方程组。
因而,线性代数被广泛地应用于抽象代数和泛函分析中;由于科学研究中的非线性模型通常可以被近似为线性模型,使得线性代数被广泛地应用于自然科学和社会科学中。
线性代数是讨论矩阵理论、与矩阵结合的有限维向量空间及其线性变换理论的一门学科。
【关键字】线性代数MATLAB语言秩矩阵解一、基本概念1、N级行列式A:A等于所有取自不同性不同列的n个元素的积的代数和。
2、矩阵B:矩阵的概念是很直观的,可以说是一张表。
3、线性无关:一向量组(a1,a2,…,an)不线性相关,既没有不全为零的数k1,k2,………kn使得:k1*a1+k2*a2+………+kn*an=04、秩:向量组的极在线性无关组所含向量的个数成为这个向量组的秩。
5、矩阵B的秩:行秩,指矩阵的行向量组的秩;列秩类似。
记:R(B)6、一般线性方程组是指形式:⎪⎪⎩⎪⎪⎨⎧=+++=+++=*+++ssn s s n n n n b a x a x a b x a x a x a b x a x a x n 22112222212111212111x ********a 二、基本理论三种基本变换:1,用一非零的数乘某一方程;2,把一个方程的倍数加到另一方程;3,互换两个方程的位置。
【matlab-7】Matlab与线性代数(一)
【matlab-7】Matlab与线性代数(⼀)⼀、线性代数基本⽅程组基本⽅程组:矩阵表⽰:解决问题的视⾓:1、解联⽴⽅程的视⾓ (⾏阶梯变换 & 矩阵运算)着重研究解x,即研究线性⽅程组的解法。
中学⾥的解⽅程和MATLAB的矩阵除法就是这样。
要点:矩阵的每⼀⾏代表⼀个⽅程,m⾏代表m个线性联⽴⽅程。
n列代表n个变量。
如果m是独⽴⽅程数,根据m<n、m=n、m>n确定⽅程是 ‘⽋定’、‘适定’ 还是 ‘超定’。
对这三种情况都会求解了,研究就完成了。
必须剔除⾮独⽴⽅程。
⾏阶梯形式、⾏列式和秩的概念很⼤程度上为此⽬的⽽建⽴。
2、向量空间中向量的合成的视⾓ (⽤向量空间解⽅程组)把A各列看成n个m维基本向量,线性⽅程组看成基向量的线性合成:要点:解x是这些基向量的系数。
它可能是常数(适定⽅程),也可能成为其中的⼀个⼦空间(⽋定⽅程) 。
要建⽴其⼏何概念,并会求解或解空间。
3、线性变换或映射的视⾓ (线性变换及其特征)把b看成变量y,着重研究把Rn空间的x变换为Rm空间y 的效果,就是研究线性变换系数矩阵A的特征对变换的影响。
要点:就是要找到适当的变换,使研究问题的物理意义最为明晰。
特征值问题就是⼀例。
⼆、线性代数建模与应⽤概述介绍⼀些⼤的系统⼯程中使⽤线性代数的情况,使读者知道为什么线性代数在近⼏⼗年来变得如此的重要。
Leontief教授把美国的经济⽤500个变量的500个线性⽅程来描述,在1949年利⽤当时的计算机解出了42×42的简化模型,使他于1973年获得诺贝尔经济奖,从⽽⼤⼤推动了线性代数的发展。
把飞⾏器的外形分成若⼲⼤的部件,每个部件沿着其表⾯⼜⽤三维的细⽹格划分出许多⽴⽅体,这些⽴⽅体包括了机⾝表⾯以及此表⾯内外的空⽓。
对每个⽴⽅体列写出空⽓动⼒学⽅程,其中包括了与它相邻的⽴⽅体的共同边界变量,这些⽅程通常都已经简化为线性⽅程。
对⼀个飞⾏器,⼩⽴⽅体的数⽬可以多达400,000个,⽽要解的联⽴⽅程可能多达2,000,000个。
MATLAB-平方根法和改进平方根法求解线性方程组例题与程序演示教学
M A T L A B-平方根法和改进平方根法求解线性方程组例题与程序(2)设对称正定阵系数阵线方程组12345678424024000221213206411418356200216143323218122410394334411142202531011421500633421945x x x x x x x x -⎡⎤⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥---⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥----⎢⎥⎢⎥⎢⎥----⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥----⎢⎥⎢⎥⎢⎥----⎢⎥⎢⎥⎢⎢⎥⎢⎥⎢---⎢⎥⎢⎥⎢--⎢⎥⎢⎢⎥⎣⎦⎣⎦⎣⎦⎥⎥⎥⎥ (1,1,0,2,1,1,0,2)T x *=--二、数学原理 1、平方根法解n 阶线性方程组Ax=b 的choleskly 方法也叫做平方根法,这里对系数矩阵A 是有要求的,需要A 是对称正定矩阵,根据数值分析的相关理论,如果A 对称正定,那么系数矩阵就可以被分解为的T A=L L •形式,其中L 是下三角矩阵,将其代入Ax=b 中,可得:T LL x=b 进行如下分解:T L xL by y ⎧=⎨=⎩ 那么就可先计算y,再计算x ,由于L 是下三角矩阵,是T L 上三角矩阵,这样的计算比直接使用A 计算简便,同时你应该也发现了工作量就转移到了矩阵的分解上面,那么对于对称正定矩阵A 进行Cholesky 分解,我再描述一下过程吧: 如果你对原理很清楚那么这一段可以直接跳过的。
设T A=L L •,即1112111112112122221222221212....................................n n n n n n nn n n nn nn a a a l l l l aa a l l l l a a a l l l l ⎡⎤⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦⎣⎦其中,,1,2,...,ij ji a a i j n ==第1步,由矩阵乘法,211111111,i i a l a l l ==g 故求得111111,2,3,...i i a l l i n a === 一般的,设矩阵L 的前k-1列元素已经求出 第k 步,由矩阵乘法得112211k k kk kmkkik im km ik kkm m a l l a l l l l --===+=+∑∑, 于是11(2,3,...,n)1(),1,2,...kk k ik ik im km m kk l k l a l l i k k n l -=⎧=⎪⎪=⎨⎪=-=++⎪⎩∑ 2、改进平方根法在平方根的基础上,为了避免开方运算,所以用TLDL A =计算;其中,11122.........n d D D D d ⎤⎤⎡⎤⎥⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥===⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎢⎢⎥⎣⎦⎣⎣;得1121212212111111n n n n n d l l l d l A l l d ⎡⎤⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦⎣⎦L L M MO O O M L按行计算的L 元素及D 对元素公式 对于n i ,,2,1Λ=11(1,21)j ij ij ik jk k t a t l j i -==-=-∑…,./(1,2,)ij ij j l t d j ==…,i-1.11i i ii ik ikk d a t l -==-∑计算出LD T =的第i 行元素(1,2,i-1)ij t j =…,后,存放在A 的第i 行相置,然后再计算L 的第i 行元素,存放在A 的第i 行.D 的对角元素存放在A 的相应位置.对称正定矩阵A 按T LDL 分解和按T LL 分解计算量差不多,但T LDL 分解不需要开放计算。
matlab中的 线性代数
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),
④也可对先前建立的阵列 进行修改 如A=[1 2 3;4 5 6;7 8 9]
A= 1 4 7 2 5 8 3 6 9
A(2,3) = 5
A= 1 4 7
2 5 8 3 5 9
% 改变位於第二行,第三列的元素值
⑤利用“:”表达式获得子矩阵 A(:,j) % 表示取A矩阵的第j列全部元素; A(i,:) %表示取A矩阵第i行的全部元素; A(i,j) %表示取A矩阵第i行、第j列的元素 A(i:i+m,:) %表示取A矩阵第i~i+m行的全部元素; A(:,k:k+m) %表示取A矩阵第k~k+m列的全部元素 A(i:i+m,k:k+m) %表示取A矩阵第i~i+m行内,并
A与B的对应元素相乘 将非奇异矩阵正交化 两个向量的内积
eig(A) [X,D]=eig(A)
A^n A.*B 第i行与第j行互换
用k乘以A的第i行 A的i行加上第j行k倍
A([i,j],:)=A([j,i],:)
A(i,:)=k*A(i,:) A(i,:)=A(i,:)+k*A(i,:)
例:用LU分解法求解下列方程组的解
12 x 1 3 x 2 3 x 3 15 16 x 1 3 x 2 x 3 13 x1 x 2 x 3 6
线性代数的MATLAB软件实验报告
线性代数的MATLAB 软件实验一、实验目的1.熟悉矩阵代数主要MATLAB 指令。
2.掌握矩阵的转置、加、减、乘、除、乘方、除法等MATLAB 运算。
3.掌握特殊矩阵的MATLAB 生成。
4.掌握MATLAB 的矩阵处理方法。
5.掌握MATLAB 的矩阵分析方法。
6.掌握矩阵的特征值与标准形的MATLAB 验算。
7.掌握线性方程组的MATLAB 求解算法。
二、实验原理1.线性方程组 【基本观点】自然科学和工程实践很多问题的解决都涉及线性代数方程组的求解和矩阵运算.一方面,许多问题的数学模型本身就是一个线性方程组,例如结构应力分析问题、电子传输网分析问题和投入产出分析问题;另一方面,有些数值计算方法导致线性方程组求解,如数据拟合,非线性方程组求解和偏微分方程组数值解等.n 个未知量m 个方程的线性方程组一般形式为⎪⎪⎩⎪⎪⎨⎧=+++=+++=+++.,,22112222212111212111m n mn m m n n n n b x a x a x a b x a x a x a b x a x a x a (3.1) 令,,,2121212222111211⎪⎪⎪⎪⎪⎭⎫ ⎝⎛=⎪⎪⎪⎪⎪⎭⎫ ⎝⎛=⎪⎪⎪⎪⎪⎭⎫⎝⎛=m n mn m m n n b b b b x x x x a a a a a aa a a A则得矩阵形式Ax=b. (3.2)若右端b=0,即Ax=0, (3.3)则称方程组为齐次的.方程组(3.1)可能有唯一解,可能有无穷多解,也可能无解,主要取决于系数矩阵A 及增广矩阵(A,b )的秩.若秩(A )=秩(A,b )=n,存在唯一解,其解理论上用Cramer 法则求出,但由于这种方法要计算n+1个n 阶行列式,计算量太大通常并不采用;若秩(A )=秩(A,b )<n,存在无穷多解,其通解可表示为对应齐次方程组(3.3)的一个基础解系与(3.2)的一个特解的叠加;若秩(A )≠秩(A,b ),则无解,这时一般寻求最小二乘近似解,即求x 使向量Ax-b 模最小.P50矩阵左除的数学思维:恒等变形Ax=b 方程两边的左边同时除以A ,得:b AAx A11=,即:b A b Ax 11-==MATLAB 的实现(左除):x=A\b 2.逆矩阵 【基本观点】方阵A 称为可逆的,如果存在方阵B ,使 AB=BA=E,这里E 表示单位阵.并称B 为A 的逆矩阵,记B=1-A .方阵A 可逆的充分必要条件是A 的行列式det A ≠0.求逆矩阵理论上的公式为*1det 1A AA =-, (3.4)这里*A 为A 的伴随矩阵.利用逆矩阵,当A 可逆时,(3.2)的解可表示为b A x 1-=.由于公式(3.4)涉及大量行列式计算,数值计算不采用.求逆矩阵的数值算法一般是基于矩阵分解的方法.3.特征值与特征向量 【基本观点】对于方阵A ,若存在数λ和非零向量x ,使,x Ax λ= (3.5) 则称λ为A 的一个特征值,x 为A 的一个对应于特征值λ的特征向量.特征值计算归结为特征多项式的求根.对于n 阶实数方阵,特征多项式在复数范围内总有n 个根。
matlab求解数学线性问题
应用开发
Matlab可以用于开发各种应用程序和 软件,如控制系统、信号处理、图像 处理等。
05
04
数据分析
Matlab提供了各种数据分析工具,可 以用于数据清洗、数据挖掘、统计分 析等。
Matlab的应用领域
科学计算
Matlab广泛应用于科学计算领域,如物理、 化学、生物等。
工程应用
Matlab可以用于各种工程应用,如机械、 电子、航空航天等。
特征向量
特征向量是与特征值对应的向量,表示矩阵对某些向量进行变换后得到的方向。特征向量可以通过 Matlab中的`eig`函数计算得到。
03
Matlab求解线性方程组
直接法
ቤተ መጻሕፍቲ ባይዱ
矩阵分解
01
利用矩阵分解技术,如LU分解、QR分解等,将线性方程组转换
为易于求解的形式。
求解单个方程
02
通过矩阵运算,将线性方程组中的每个方程分别求解,得到方
Matlab求解数学线 性问
目录
• Matlab简介 • 线性代数基础知识 • Matlab求解线性方程组 • 线性方程组的优化求解 • Matlab求解线性最小二乘问题 • Matlab求解特征值问题
01
Matlab简介
Matlab的发展历程
1998年
1984年
MathWorks公司成立,开始正式 推广Matlab。
共轭梯度法
共轭梯度法是一种迭代算法,用于求 解大规模稀疏线性方程组。它结合了 梯度法和共轭方向法,利用已知的梯 度和共轭方向来寻找解。
共轭梯度法的优点是收敛速度快,适 用于大规模问题。但它需要计算矩阵 的梯度,计算量较大。
牛顿法
牛顿法是一种基于泰勒级数的迭代算法,用于求解非线性方 程的根。在求解线性方程组时,牛顿法将非线性方程转化为 线性方程,并利用牛顿迭代公式进行求解。
Matlab应用线性代数
矩阵的行列式
可用函数det求矩阵的行列式大小。 例:
a=[1 2 0;2 5 -1;4 10 -1]; b=det(a) b=
1
矩阵的四则运算
❖ 数组和矩阵的加减运算使用加号和减号,即 “+”和“-”。
❖ 矩阵相乘使用“*”运算符。
❖ 如果只是将两个矩阵中相同位置的元素相乘, 使用“.*”运算符。
线性方程组的求解
❖ 方形系统 p135 ❖ 超定系统 ❖ 不定系统
符号矩阵
❖ 符号矩阵的四则运算 ❖ 符号矩阵的转置运算 ❖ 符号矩阵的行列式运算 ❖ 符号矩阵的求逆运算 ❖ 符号矩阵的求秩运算 ❖ 符号矩阵的常用函数运算 ❖ 符号矩阵常用线性方程(组)的求解
符号矩阵运算的函数: symadd(a,d) —— 符号矩阵的加 symsub(a,b) —— 符号矩阵的减 symmul(a,b) —— 符号矩阵的乘 symdiv(a,b) —— 符号矩阵的除 sympow(a,b) —— 符号矩阵的幂运算 symop(a,b) —— 符号矩阵的综合运算
load mri; montage(D,map);
❖ Imwrite;将图像写成图像文件 (bmp,hdf,jpeg,tiff等); imwrite(A,文件名,‘格式’);
❖ Warp 显示图像为纹理映射表面 warp(x,y,z,….) [x,y,z]=sphere; d=imread('test.jpg'); warp(x,y,z,d); warp(x,y,z,X,map);%% load trees; 具有颜色图map的索引图X
0000
矩阵的秩
用函数rank求矩阵的秩。 例:
a=[1 2 0;2 5 -1;4 10 -1]; b=rank(a) b=
Matlab求解线性方程组、非线性方程组
求解线性方程组solve,linsolve例:A=[5 0 4 2;1 -1 2 1;4 1 2 0;1 1 1 1];%矩阵的行之间用分号隔开,元素之间用逗号或空格B=[3;1;1;0]X=zeros<4,1>;%建立一个4元列向量X=linsolve<A,B>diff〔fun,var,n〕:对表达式fun中的变量var求n阶导数.例如:F=sym〔'u<x,y>*v<x,y>'〕; %sym〔〕用来定义一个符号表达式diff<F>; %matlab区分大小写pretty<ans> %pretty〔〕:用习惯书写方式显示变量;ans是答案表达式非线性方程求解fsolve<fun,x0,options>其中fun为待解方程或方程组的文件名;x0位求解方程的初始向量或矩阵;option为设置命令参数建立文件fun.m:function y=fun<x>y=[x<1>-0.5*sin<x<1>>-0.3*cos<x<2>>, ...x<2> - 0.5*cos<x<1>>+0.3*sin<x<2>>];>>clear;x0=[0.1,0.1];fsolve<fun,x0,optimset<'fsolve'>>注:...为续行符m文件必须以function为文件头,调用符为;文件名必须与定义的函数名相同;fsolve〔〕主要求解复杂非线性方程和方程组,求解过程是一个逼近过程.Matlab求解线性方程组AX=B或XA=B在MATLAB中,求解线性方程组时,主要采用前面章节介绍的除法运算符"/"和"\".如:X=A\B表示求矩阵方程AX=B的解;X=B/A表示矩阵方程XA=B的解.对方程组X=A\B,要求A和B用相同的行数,X和B有相同的列数,它的行数等于矩阵A的列数,方程X=B/A同理.如果矩阵A不是方阵,其维数是m×n,则有:m=n 恰定方程,求解精确解;m>n 超定方程,寻求最小二乘解;m<n 不定方程,寻求基本解,其中至多有m个非零元素.针对不同的情况,MATLAB将采用不同的算法来求解.一.恰定方程组恰定方程组由n个未知数的n个方程构成,方程有唯一的一组解,其一般形式可用矩阵,向量写成如下形式:Ax=b 其中A是方阵,b是一个列向量;在线性代数教科书中,最常用的方程组解法有:〔1〕利用cramer公式来求解法;〔2〕利用矩阵求逆解法,即x=A-1b;〔3〕利用gaussian消去法;〔4〕利用lu法求解.一般来说,对维数不高,条件数不大的矩阵,上面四种解法所得的结果差别不大.前三种解法的真正意义是在其理论上,而不是实际的数值计算.MATLAB中,出于对算法稳定性的考虑,行列式与逆的计算大都在lu分解的基础上进行.在MATLAB中,求解这类方程组的命令十分简单,直接采用表达式:x=A\b.在MATLAB的指令解释器在确认变量A非奇异后,就对它进行lu分解,并最终给出解x;若矩阵A的条件数很大,MATLAB会提醒用户注意所得解的可靠性.如果矩阵A是奇异的,则Ax=b的解不存在,或者存在但不唯一;如果矩阵A接近奇异时,MATLAB将给出警告信息;如果发现A是奇异的,则计算结果为inf,并且给出警告信息;如果矩阵A是病态矩阵,也会给出警告信息.注意:在求解方程时,尽量不要用inv<A>*b命令,而应采用A\b的解法.因为后者的计算速度比前者快、精度高,尤其当矩阵A的维数比较大时.另外,除法命令的适用行较强,对于非方阵A,也能给出最小二乘解.二.超定方程组对于方程组Ax=b,A为n×m矩阵,如果A列满秩,且n>m.则方程组没有精确解,此时称方程组为超定方程组.线性超定方程组经常遇到的问题是数据的曲线拟合.对于超定方程,在MATLAB中,利用左除命令〔x=A\b〕来寻求它的最小二乘解;还可以用广义逆来求,即x=pinv<A>,所得的解不一定满足Ax=b,x只是最小二乘意义上的解.左除的方法是建立在奇异值分解基础之上,由此获得的解最可靠;广义逆法是建立在对原超定方程直接进行householder变换的基础上,其算法可靠性稍逊与奇异值求解,但速度较快;[例7]求解超定方程组A=[2 -1 3;3 1 -5;4 -1 1;1 3 -13]A=2 -1 33 1 -54 -1 11 3 -13b=[3 0 3 -6]’;rank<A>ans=3x1=A\bx1=1.00002.00001.0000x2=pinv<A>*bx2=1.00002.00001.0000A*x1-bans=1.0e-014-0.0888-0.0888-0.1332可见x1并不是方程Ax=b的精确解,用x2=pinv<A>*b所得的解与x1相同.三.欠定方程组欠定方程组未知量个数多于方程个数,但理论上有无穷个解.MATLAB将寻求一个基本解,其中最多只能有m个非零元素.特解由列主元qr分解求得.[例8]解欠定方程组A=[1 -2 1 1;1 -2 1 -1;1 -2 1 5]A=1 -2 1 11 -2 1 -11 -2 1 -11 -2 1 5b=[1 -1 5]’x1=A\bWarning:Rank deficient,rank=2 tol=4.6151e-015x1=-0.00001.0000x2=pinv<A>*bx2=-0.00000.00001.0000四.方程组的非负最小二乘解在某些条件下,所求的线性方程组的解出现负数是没有意义的.虽然方程组可以得到精确解,但却不能取负值解.在这种情况下,其非负最小二乘解比方程的精确解更有意义.在MATLAB中,求非负最小二乘解常用函数nnls,其调用格式为:〔1〕X=nnls<A,b>返回方程Ax=b的最小二乘解,方程的求解过程被限制在x 的条件下;〔2〕X=nnls<A,b,TOL>指定误差TOL来求解,TOL的默认值为TOL=max<size<A>>*norm<A,1>*eps,矩阵的-1范数越大,求解的误差越大;〔3〕[X,W]=nnls<A,b> 当x<i>=0时,w<i><0;当下x<i>>0时,w<i>0,同时返回一个双向量w.[例9]求方程组的非负最小二乘解A=[3.4336 -0.5238 0.6710-0.5238 3.2833 -0.73020.6710 -0.7302 4.0261];b=[-1.000 1.5000 2.5000];[X,W]=nnls<A,b>X=0.6563 0.6998 W=-3.6820 -0.0000 -0.0000 x1=A\bx1=-0.3569 0.5744 0.7846A*X-b ans=1.1258 0.1437 -0.1616 A*x1-b ans=1.0e-0.15 -0.2220 0.4441。
线性代数方程组数值解法及MATLAB实现综述
线性代数方程组数值解法及MATLAB 实现综述廖淑芳 20122090 数计学院 12计算机科学与技术1班(职教本科) 一、分析课题随着科学技术的发展,提出了大量复杂的数值计算问题,在建立电子计算机成为数值计算的主要工具以后,它以数字计算机求解数学问题的理论和方法为研究对象。
其数值计算中线性代数方程的求解问题就广泛应用于各种工程技术方面。
因此在各种数据处理中,线性代数方程组的求解是最常见的问题之一。
关于线性代数方程组的数值解法一般分为两大类:直接法和迭代法。
直接法就是经过有限步算术运算,可求的线性方程组精确解的方法(若计算过程没有舍入误差),但实际犹如舍入误差的存在和影响,这种方法也只能求得近似解,这类方法是解低阶稠密矩阵方程组级某些大型稀疏矩阵方程组的有效方法。
直接法包括高斯消元法,矩阵三角分解法、追赶法、平方根法。
迭代法就是利用某种极限过程去逐步逼近线性方程组精确解的方法。
迭代法具有需要计算机的存储单元少,程序设计简单,原始系数矩阵在计算过程始终不变等优点,但存在收敛性级收敛速度问题。
迭代法是解大型稀疏矩阵方程组(尤其是微分方程离散后得到的大型方程组)的重要方法。
迭代法包括Jacobi 法SOR 法、SSOR 法等多种方法。
二、研究课题-线性代数方程组数值解法 一、 直接法 1、 Gauss 消元法通过一系列的加减消元运算,也就是代数中的加减消去法,以使A 对角线以下的元素化为零,将方程组化为上三角矩阵;然后,再逐一回代求解出x 向量。
1.1消元过程1. 高斯消元法(加减消元):首先将A 化为上三角阵,再回代求解。
11121121222212n n n n nn n a a a b a a a b a a a b ⎛⎫ ⎪ ⎪ ⎪ ⎪⎝⎭ (1)(1)(1)(1)11121311(2)(2)(2)(2)222322(3)(3)(3)3333()()000000n n n n n nn n a a a a b a a a b a a b a b ⎛⎫ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪⎝⎭ 步骤如下:第一步:1111,2,,i a i i n a -⨯+=第行第行11121121222212n n n n nnn a a a b a a a b a a a b ⎛⎫⎪ ⎪⎪⎪⎝⎭ 111211(2)(2)(2)2222(2)(2)(2)200n n n n n n a a a b a a b a a b ⎛⎫ ⎪⎪ ⎪ ⎪⎝⎭ 第二步:(2)2(2)222,3,,i a i i n a -⨯+=第行第行111211(2)(2)(2)2222(2)(2)(2)200n nn nnn a a a b a a b a a b ⎛⎫⎪ ⎪ ⎪ ⎪⎝⎭11121311(2)(2)(2)(2)222322(3)(3)(3)3333(3)(3)(3)300000n n n n nn n a a a a b a a a b a a b a a b ⎛⎫ ⎪⎪ ⎪ ⎪ ⎪ ⎪⎝⎭类似的做下去,我们有:第k 步:()()k ,1,,k ikk kka i i k n a -⨯+=+第行第行。
关于MATLAB软件在线性代数教学中的应用探讨
关于MATLAB软件在线性代数教学中的应用探讨关于MATLAB软件在线性代数教学中的应用探讨一、引言线性代数作为数学的一个重要分支,在各个领域都有广泛的应用。
线性代数的教学过程中,理论与实践相结合,能够更好地培养学生的分析和解决问题的能力。
而MATLAB软件作为数学建模、仿真和计算的工具,能够为线性代数的教学提供有力的支持。
本文将探讨MATLAB软件在线性代数教学中的应用。
二、MATLAB软件的介绍MATLAB是一种强大的高级计算机语言和交互式环境,该软件提供了丰富的数学、图形和数据分析工具,适用于各种科学与工程计算。
MATLAB在科研领域有广泛的应用,尤其在线性代数、信号处理和图像处理方面具有突出的优势。
三、MATLAB在线性代数教学中的应用1. 线性方程组的求解线性方程组是线性代数的基本内容之一,而MATLAB提供了直接求解线性方程组的工具。
学生可以通过编程的方式输入线性方程组,使用MATLAB求解方程组,并将结果可视化展示。
这样不仅可以加深学生对线性方程组求解方法的理解,还能提高他们的编程能力。
2. 矩阵运算与特征值分解矩阵运算是线性代数的重要内容,而MATLAB提供了丰富的矩阵运算函数。
学生可以通过编写MATLAB程序,实现矩阵的加减乘除、转置和求逆等操作,并进行相应的结果验证。
此外,MATLAB还能够进行特征值分解,对于矩阵的特征向量和特征值进行计算。
通过这些实践操作,学生可以更好地理解矩阵运算的概念和原理,提高解决实际问题的能力。
3. 图形绘制与可视化MATLAB具备强大的图形功能,能够进行二维和三维图形的绘制。
在线性代数教学中,学生可以通过编写MATLAB程序,将矩阵、向量或线性方程组的解表示为图形,从而更直观地展示线性代数的概念和应用。
这种图形化的可视化方式有助于学生理解和记忆线性代数的重要概念,提高他们的学习兴趣和积极性。
四、MATLAB在线性代数教学中的优势1. 提高学生的编程能力MATLAB作为一种编程语言,可以提高学生的编程能力。
MATLAB在线性代数实际问题中的应用
的 同 学 认 为 通 过 对 该 软 件 的 学 习 收 获 了 自信 心 和 成 就 感 ,
还 有 4 % 的 同 学 认 为 该 软 件 培 养 了 他 们 的动 手 实 践 能 力 , 1 而 在 这 所 有 的收 获 中有 将 近 一 半 的 同 学 认 为 通 过 对 该 软 件 的 学 习 最 重 要 的 收 获 是 培 养 了 他 们 学 习 数 学 的 兴 趣 . 一 这 点 对 高 职 的 学 生 来 说 是 非 常 重 要 的 , 为 他 们 的 数 学 基 础 因 普 遍 较 差 , 易 对 数 学 丧 失 信 心 和兴 趣 , 学 软 件 MA L B 容 数 TA 让 他 们 重 拾 学 习 数 学 的兴 趣 和 信 心 . 数 学 来 源 于 现 实 , 在 于 现 实 , 应 用 于 现 实 . 实 际 存 也 对 问 题 的 研 究 不 仅 可 以 让 学 生 体 会 数 学 的 应 , 价 值 , 会 应 E l j 学 用 数 学 解 决 问 题 , 且 对 数 学 本 身 的 源 头 、 想 方 法 有 更 为 而 思
单 位 食 物 所 含 的 营养 营 养
食 物 一 蛋 白质 脂 肪 3 6 O 食 物 二 5 l 7 食 物 三 1 3 11 . 3 3 3
线 性代 数作 为 高 等 学 校 一 门 重 要 的 基 础 课 程 , 计 算 在
机科学 、 程技术 、 济 管理 等诸 多领域 有着 广 泛 的应用. 工 经
由 以上 的计 算 我 们 可知 : 们 每 天 摄 人 0 27 我 . 7 2个 单 位
的食 物一 ,. 9 9个 单 位 的 食 物 二 ,. 3 2个 单 位 的 食 物 03 1 023 三就 可 以保 证 我们 的健 康 饮 食 了.
线性代数matlab实验指导
实验四 行列式及应用
第1章 矩阵与行列式
实验四 行列式及应用 【实验目的】 1. 了解行列式的概念,掌握行列式的性质 2.掌握行列式的计算方法 3.掌握Gramer法则求解线性方程组 【实验要求】掌握计算行列式det、解线性方程组solve、生成Vandermonde行列式vander等命令 【实验内容】 1.计算下列行列式的值: (1) ;(2) ;
第1章 矩阵与行列式
>> G=inv(A) 运行结果: G = 1/4 1/4 -1/4 1 -2 1 -3/4 5/4 -1/4 >> H=A^5 运行结果: H = 1492 1006 1460 1558 1069 1558 1914 1331 1946
第1章 矩阵与行列式
【矩阵与行列式简介】 在计算机日益发展的今天,线性代数起着越来越重要的作用。线性代数起源于解线性方程组的问题,而利用矩阵来求解线性方程组的Gauss消元法至今仍是十分有效的计算机求解线性方程组的方法。矩阵是数学研究和应用的一个重要工具,利用矩阵的运算及初等变换可以解决求解线性方程组等问题。特殊的矩阵方阵的数字特征之一是方阵的行列式,使用行列式可以描述方阵的一些重要的性质。通过计算行列式可求逆矩阵,n个
第1章 矩阵与行列式
实验三 Gauss消元法
【实验目的】掌握解线性方程组的Gauss消元法 【实验要求】掌握矩阵赋值命令、初等变换相关命令、简化矩阵为阶梯形式rref等命令 【实验内容】
用Gauss消元法解线性方程组:
;
第1章 矩阵与行列式
【实验过程】 1.(1)解法一:Gauss消元法. >>A=[1 2 1 8;1 2 3 10;2 3 1 13;1 2 2 9] ; >>A(2,:)=A(2,:)-A(1,:); >>A(3,:)=A(3,:)-2*A(1,:); >>A(4,:)=A(4,:)-A(1,:) 运行结果: A = 1 2 1 8 0 0 2 2 0 -1 -1 -3 0 0 1 1 >> A([2,3],:)=A([3,2],:) 运行结果: A = 1 2 1 8 0 -1 -1 -3 0 0 2 2 0 0 1 1
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
上式即
上式即
即
可将AX=A+2X化为
因此,
即
即
第二讲
即A的行最简矩阵为
Matlab在日常生活中的应用
显示当前的日期和时间:
floor(now)是 从公元0年到 当前的天数。 floor函数是 往小取整
武打明星李连杰的生日是1963年4月26日, 他至今(2015年10月9日)活了多少天:
一位20岁出头的年轻人(设其生日是1995年 1月1日)至今活了多少天:
矩阵的输入
元素为服从正态分布N(10,8^2)的随机数
用冒号:提取矩阵的某些行和列
令A为3阶幻方矩阵
A的(2,1)元素
提取A的第3行
提取A的第1列
提取A的第2到3行
删除和替换矩阵的某些行和列
[ ]表示空矩阵,可以令矩阵或其中 某部分等于空矩阵实现删除操作
删除A的第2行
替换A的第2行
矩阵的一些运算和函数
• 矩阵A与B相乘:A*B • 矩阵的除法:
例:对于如下定义的A、B, 矩阵的各种乘法如右所示
按shift+Enter时只换行不执行命令 最后一步按Enter键依次执行所有命令
A是3维行向量
B是3×2矩阵
矩阵除法的例子
用matlab画二维图
• 在二维平面上画单条曲线的一般格式是 plot(x, y, ‘cs’) 其中,向量x作为横坐标,向量y作为纵坐标, c和s分别是控制颜色和线型的字符串, 默认是蓝色和实线
节约计算时间的技巧
对于需要对其元素循环赋值的矩阵,可预先对整个矩阵赋值,例如赋值为零矩阵。 以某20X500个循环的 脚本为例:
提示:循环越多,矩阵越大, 节约计算时间就越重要。
利用函数生成矩阵(2)
• eye(n)生成n×n的单位矩阵; eye (m,n)生成m×n的单位矩阵; eye(size(A))生成与A同维数的单位矩阵
再看fplot作图的效果:
由此不难归纳得到
不难归纳得到:
因此,λ有三个解,分别是1,1,10
方法二:
v, d, A之间存在关系:
对应于10的 特征向量 对应于1的 特征向形 作验证:
以n=5的情形作验证
上面结果也可写为
n=3时,
n=4时,
用ezplot画图的格式: ezplot('f(x)', [xmin, xmax])
画出函数f(x)在[xmin, xmax]区间的图形 默认区间是[-2π, 2π]
ezplot('f(x,y)', [xmin, xmax, ymin, ymax])
画出f(x,y)=0在给定区间的曲线 默认的x,y范围都是[-2π, 2π]
点运算为两向量 对应元素之间运算
生成向量(2)
• linspace(x,y,n) 生成从x到y、等间隔的n个元素(即n-1等分)的行向量 如果不设n,则n默认为100 • logspace(x,y,n) 生成从10^x到10^y、在对数坐标轴上等间隔的n个元素的 行向量 如果不设n,则n默认为50
例:y1(x)用红色的上三角形,y2(x)用蓝色的圆圈加实线
用title给图形加上标题 用xlabel、ylabel加上 横、纵坐标标签
用legend加上图例,该图例 还可用鼠标拖动到合适位置
text(x,y,'string'); 在指定的位置(x,y)处 显示string
subplot(m,n,k) 绘制m×n个子图,排成m行n列, k是子图的标号,k取值依次为1,2,...,m×n
– 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)
利用函数生成矩阵(3)
• 若v是n维向量,则diag(v)生成n×n的对角矩阵,对角元为v 的分量; 若k为整数,diag(v,k)生成(n+|k|)×(n+|k|)的矩阵,其中当 k=0时,v为对角线,即diag(v,0)等价于diag(v);当k>0时,v 为上方第k条对角线;当k<0时,v为下方第k条对角线
也可以用
用fplot画图的格式: fplot('f(x)', [xmin, xmax], tol)
画出函数f(x)在[xmin, xmax]区间的图形 tol为相对误差的容忍限度 tol默认为2e-3即0.2%
用plot和fplot作图比较(1)
先看plot作图的效果:
用plot和fplot作图比较(2)
向量的点运算
例:利用点运算构造作用于向量中每个元素的函数 即从向量(x1, x2, x3, …)到向量(f(x1), f(x2), f(x3), …)
向量的点乘和叉乘
向量叉乘的一个例子: e_x ×e_z = -e_y
利用函数生成矩阵(1)
• ones(n)生成元素全部是1的n×n矩阵; ones(m,n)生成元素全部是1的m×n矩阵; ones(size(A))生成元素全部是1的与A同维数的矩阵 • zeros(n)生成元素全部是0的n×n矩阵; zeros(m,n)生成元素全部是0的m×n矩阵; zeros(size(A))生成元素全部是0的与A同维数的矩阵
用“help”可以 浏览帮助的各个 主题
可以直接点击这些 主题进一步浏览
可用“help 函数名”查看帮助
又如:
可用“doc 函数名”查看更详细的帮助
直接用“doc” 可以浏览帮助 内容
当前的工作目录和工作空间
用clear可以清除 工作空间的变量
用who可显示工作空间中保存的变量名
用whos可显示工作空间中的变量名及其 大小(元素个数)、字节数、精度
用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):反三角函数
画两条曲线的例子:
y1(x)用红色虚线
y2(x)用黑色实线
颜色:b蓝色 k黑色 r红色 g绿色 y黄色 m洋红 c青色 w白色 线型:-实线 --虚线 :点线 -.点划线 .点 o圆圈 x叉号 +加号 *星号 ^上三角 v下三角 <左三角 >右三角 s正方形 d菱形 p五角星 h六角星
例:y1(x)用红色的点,y2(x)用蓝色的圆圈
利用函数生成矩阵(5)
• randn(n)生成元素为服从标准正态分布N(0,1)的随机数的 n×n矩阵; randn(m,n)生成元素为服从标准正态分布N(0,1)的随机数的 m×n矩阵; 若μ, σ为实数,则μ+σ.* rand(m,n)生成元素为服从正态分布 N(μ, σ^2)的随机数的m×n矩阵
NaN指not a number,常 用于表达不定型的值。 两个NaN并不相等。
百分号%表示注释 分号; 不显示结果
字符串用单引号包围
matlab的语句换行: • 在命令行窗口, 如果一条语句已经写完,需要换行,可以用“Shift+Enter ” 如果一条语句没写完想换行,可以用“...+Enter” • 在M文件中, 如果一条语句已经写完,需要换行,可以直接用Enter换行 如果一条语句没写完想换行,可以用“...+Enter”
向量的平移与数乘
设向量v=[v1 v2 v3],a为一个常数, 则 v+a=[v1+a v2+a v3+a] (称为向量的平移) v*a=[v1*a v2*a v3*a] (称为向量的数乘)
向量的和与差
设向量x=[x1 x2 x3 x4],向量y=[y1 y2 y3 y4], 则 x+y=[x1+y1 x2+y2 x3+y3 x4+y4] x-y =[x1-y1 x2-y2 x3-y3 x4-y4]
利用函数生成矩阵(4)
• rand(n)生成元素为在(0,1)区间均匀分布随机数的n×n矩阵; rand(m,n)生成元素为在(0,1)区间均匀分布随机数的m×n矩 阵; 若a, b为实数,则a+(b-a).* rand(m,n)生成元素为在(a,b)区间 均匀分布随机数的m×n矩阵
元素为在(60, 80)区间 均匀分布的随机数
用save保存、用load载入工作空间的变量
例如,在命令行输入“save 文件名”,就会在当前目录生成 一个“文件名.mat”文件,它保存了工作空间的所有变量
下一次打开matlab时,只须用“load 文件名”, 就可将“文件名.mat”的变量装载到工作空间
一些基本的运算
Inf表示无穷大
用format long可以显示 小数点后15位
• 用方括号将矩阵元素包围,先输入第一行, 再输入第二行,等等。 • 行元素之间用逗号或空格分隔开来 • 不同列之间用分号或者enter键分隔开来
生成向量(1)
• 初值:步长:终值 生成从初值开始、以步长为间隔、小于或等于终值的行向量 如果不设步长,则默认步长为1