matlab(数学实验)matlab编程求解线性代数

合集下载

MATLAB中的线性代数运算方法详述

MATLAB中的线性代数运算方法详述

MATLAB中的线性代数运算方法详述导言:线性代数是数学中的一个重要分支,它研究向量空间及其线性变换、线性方程组和矩阵等概念。

在科学计算与工程实践中,线性代数的应用十分广泛。

MATLAB作为一种强大的数值计算软件,提供了丰富的线性代数运算方法,能够帮助用户高效地解决各种与矩阵、向量相关的问题。

本文将详细介绍MATLAB中常用的线性代数运算方法,并且从算法原理到具体函数的使用进行详细说明。

一、矩阵运算在MATLAB中,矩阵是一种重要的数据类型,它可以表示线性系统、图像等多种实际问题。

矩阵的加法和乘法是线性代数运算中最基本的运算,MATLAB提供了相应的函数来进行矩阵的加法和乘法运算。

1.1 矩阵加法MATLAB中的矩阵加法使用“+”操作符进行操作,可以直接对两个矩阵进行加法运算。

例如,给定两个矩阵A和B,可以使用"A + B"来进行矩阵加法运算。

1.2 矩阵乘法MATLAB中的矩阵乘法使用"*"操作符进行操作,可以直接对两个矩阵进行乘法运算。

需要注意的是,矩阵相乘的维度要满足匹配规则,即乘法前一个矩阵的列数要等于后一个矩阵的行数。

例如,给定两个矩阵A和B,可以使用"A * B"来进行矩阵乘法运算。

二、向量运算向量是线性代数中常用的数据结构,它可以表示方向和大小。

在MATLAB中,向量是一种特殊的矩阵,可以使用矩阵运算中的方法进行计算。

2.1 向量点乘向量的点乘是指两个向量对应位置上元素的乘积之和。

MATLAB中可以使用“.*”操作符进行向量的点乘运算。

例如,给定两个向量A和B,可以使用"A .* B"来进行向量点乘运算。

2.2 向量叉乘向量的叉乘是指两个三维向量的运算结果,它得到一个新的向量,该向量与两个原始向量都垂直。

MATLAB中可以使用叉乘函数cross()进行向量的叉乘运算。

例如,给定两个向量A和B,可以使用"cross(A, B)"来进行向量叉乘运算。

线性代数实践MATLAB

线性代数实践MATLAB
Matlab实现
使用`eig`函数求解特征值和特征向量,例如 `[V,D] = eig(A)`。
Matlab中矩阵分解相关函数
lu
用于LU分解。
qr
用于QR分解。
eig
用于求解特征值和特征向量。
用于奇异值分解。
svd
hess
用于Hessenberg分解。
用于Schur分解。
schur
03
线性空间与变换在
掌握了特征值与特征向量的计算
通过Matlab编程,我们能够快速准确地求解矩阵的特征值和特征向 量,这对于很多实际问题具有重要意义。
实现了线性方程组的求解
利用Matlab的左除和右除运算,我们方便地解决了线性方程组的求 解问题,提高了计算效率。
进行了矩阵分解与应用
通过Matlab,我们实现了矩阵的LU分解、QR分解以及SVD分解等, 这些方法在数据分析、图像处理等领域有广泛应用。
线性代数实践 matlab
目录
CONTENTS
• 线性代数基本概念与Matlab实现 • 矩阵分解方法及其在Matlab中应
用 • 线性空间与变换在Matlab中实践
目录
CONTENTS
• 线性方程组求解方法及Matlab实 现
• 特征值与特征向量计算及Matlab 应用
• 总结与展望
01
线性代数基本概念
03
矩阵转置
04
矩阵转置是指将矩阵的行和列互 换得到的结果。在Matlab中, 可以使用单引号进行矩阵转置运 算,如`A_transpose = A'`。
矩阵逆
矩阵逆是指一个矩阵与另一个矩 阵相乘得到单位矩阵的结果。在 Matlab中,可以使用`inv`函数求 解矩阵逆,如`A_inv = inv(A)`。

用MATLAB解决线性代数问题实验报告

用MATLAB解决线性代数问题实验报告

实验三使用MATLAB解决线性代数问题学院:数计学院班级:1003班姓名:黄晓丹学号:1051020144实验目的:学习MATLAB有关线性代数运算的指令,主要学习运用MATLAB解决矩阵除法,线性方程组的通解,矩阵相似对角化问题,以及解决投入产出分析等应用问题。

实验内容:矩阵转置:A=[1 2;3 4];B=[4 3;2 1];>> A',B'ans =1 32 4ans =4 33 1矩阵加减:A-Bans=-3 -11 3矩阵乘法:A*B,A.*B(数组乘法)||比较矩阵乘法与数组乘法的区别ans=8 520 13ans=4 66 4矩阵除法:A\B,B./Aans=-6 -55 4ans=4 1.50.6667 0.25特殊矩阵生成:zeros(m,n)||生成m行n列的矩阵ones(m,n)||生成m行n列的元素全为一的矩阵eye(n)||生成n阶单位矩阵rand(m,n)||生成m行n列[0 ,1]上均匀分布随机数矩阵zeros(2,3)ans =0 0 00 0 0>> ones(3,3)ans =1 1 11 1 11 1 1>> eye(3)ans =1 0 00 1 00 0 1>> rand(2,4)ans =Columns 1 through 30.9501 0.6068 0.89130.2311 0.4860 0.7621Column 40.45650.0185矩阵处理:trace(A)||返回矩阵的迹diag(A)||返回矩阵对角线元素构成的向量tril(A)||提取矩阵的下三角部分triu(A)||提取矩阵的上三角部分flipud(A)||矩阵上下翻转fliplr(A)||矩阵左右翻转reshape(A,m,n)||将矩阵的元素重排成m行n列矩阵A=[1 2 3;4 5 6;7 8 9];>> t=trace(A),d=diag(A),u=triu(A)t =15d =159u =1 2 30 5 60 0 9 flipud(A),fliplr(A)ans =7 8 94 5 61 2 3 ans =3 2 16 5 49 8 7矩阵特征值与标准型:[V,D]=eig(A)||返回矩阵特征值与特征向量[V J]=Jordan(A)||返回矩阵的相似变换矩阵和若尔当标准型A=[1 2;3 4];>> [V,D]=eig(A)V =-0.8246 -0.41600.5658 -0.9094D =-0.3723 00 5.3723>> [V,J]=jordan(A)V =0.2389 0.76110.5222 -0.5222J =5.3723 00 -0.3723线性方程组求解A=[1 2 1;3 -2 1];B=[1;4];x=A\B x =1.2500 ||求一特解-0.1250>> A=[1 2;3 -2;1 -1];B=[1;4;2];x=A\Bx = ||求得一最小二乘近似解1.2838-0.1757:方阵的相似对角化及应用:A=[1 1/4 0;0 1/2 0;0 1/4 1];[P,T]=eig(A) P =1.0000 0 -0.40820 0 0.81650 1.0000 -0.4082T =1.0000 0 00 1.0000 00 0 0.5000求得三个特征值1,1,0.5,对应特征向量(1,0,0),(0,0,1),(-0.4028,0.8165,-0.4082),由于三个特征向量线性无关,从而A 可相似对角化,即p-1AP=T.那么A∧n=p[1 0 0;0 1 0;0 0 0]p-1,计算的P*diag([1,1,0])*inv(P)ans =1.0000 0.50000 00 0 00 0.5000 1.0000所以得到近似解。

实验一用matlab求解线性方程组

实验一用matlab求解线性方程组

实验1.1 用matlab 求解线性方程组第一节 线性方程组的求解 一、齐次方程组的求解rref (A ) %将矩阵A 化为阶梯形的最简式null (A ) %求满足AX =0的解空间的一组基,即齐次线性方程组的基础解系【例1】 求下列齐次线性方程组的一个基础解系,并写出通解:我们可以通过两种方法来解: 解法1:>> A=[1 -1 1 -1;1 -1 -1 1;1 -1 -2 2]; >> rref(A) 执行后可得结果: ans=1 -1 0 0 0 0 -1 1 0 0 0 0 由最简行阶梯型矩阵,得化简后的方程⎪⎩⎪⎨⎧=+--=+--=-+-02200432143214321x x x x x x x x x x x x取x2,x4为自由未知量,扩充方程组为即提取自由未知量系数形成的列向量为基础解系,记所以齐次方程组的通解为解法2: clearA=[1 -1 1 -1;1 -1 -1 1;1 -1 -2 2];B=null(A, 'r') % help null 看看加个‘r ’是什么作用,若去掉r ,是什么结果?执行后可得结果: B=1 0 1 0 0 1 0 1⎩⎨⎧=-=-004321x x x x ⎪⎪⎩⎪⎪⎨⎧====44432221x x x x x x x x ⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡+⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡11000011424321x x x x x x ,00111⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=ε,11002⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=ε2211εεk k x +=易见,可直接得基础解系所以齐次方程组的通解为二、非齐次线性方程组的求解 Matlab 命令的基本格式:X =A\b %系数阵A 满秩时,用左除法求线性方程组AX =b 的解注意:A/B 即为AB -1, 而A\B 即为A -1B.C =[A,b];D =rref(C) % 求线性方程组AX =b 的特解,即D 的最后一列元素【例2】 求下列非齐次线性方程组的解:,00111⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=ε,11002⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=ε⎪⎪⎪⎩⎪⎪⎪⎨⎧=+=++=++=++=+150650650651655454354332121x x x x x x x x x x x x x 2211εεk k x +=解: clearA=[5 6 0 0 0;1 5 6 0 0;0 1 5 6 0;0 0 1 5 6;0 0 0 1 5]; b=[1;0;0;0;1];format rational %采用有理数近似输出格式,比较format short 看看x=A\b执行后可得所求方程组的解. 作业:【第一题】 求下列非齐次线性方程组的通解.A=[1 2 3 1;1 4 6 2;2 9 8 3;3 7 7 2] B=[3;2;7;12] format rational x=A\B x =⎪⎪⎩⎪⎪⎨⎧=+++=+++=+++=+++1227737389222643324321432143214321x x x x x x x x x x x x x x x x42/31/2684838239393950-7/3【第二题】计算工资问题一个木工,一个电工,一个油漆工,三个人相互同意彼此装修他们自己的房子。

如何使用Matlab解决数学问题

如何使用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做线性代数实验

2
0
, 2

5 3
, 3

1

3
, 4


1
4
, 5

1

2


3

6

0Hale Waihona Puke 73【程序如下】:
% (1)
A=[1 2 1 3;4 -1 5 6;1 -3 -4 7;1 2 1 1]' r=rank(A) [R,IP]=rref(A) % (2) A=[1 2 0 2 1;-2 -5 1 -1 1;0 -3 3 4 2;P3 6 0 -7 3] r=rank(A) [R,IP]=rref(A)
例如:
已知
A

1 3
2 4
,
B

1 1
2 0
,解矩阵方程
(1)
AX
B , (2) XA B 。
MATLAB 程序如下:
A=[1 2;3 4];
B=[1 2;-1 1];
X1=inv(A)*B % AX=B or
X1=A\B
X2=B*inv(A) % XA=B
X2=A/B
将 p(x) 分解为最简分式之和 q( x)
[p,q]=residue(a,b,r) 将简单分式之和合并为有理分式
例如,将有理分式
f
(x)
x2 x3 2x2 3x2
分解为最简分式之和的程序如下:
p=[1 2];
q=[1 2 3 2];
[a,b,r]=residue(p,q)
输出:a =
-0.2500 - 0.4725i
p=[1 -6 11 -6];

利用Matlab进行线性代数问题求解的方法与案例

利用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软件实验报告

线性代数的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实验1:线性代数方法

matlab实验1:线性代数方法

奇异值分解: 奇异值分解: 其中U,V均为正交矩阵,S为一 个对角阵, 其中U,V均为正交矩阵,S为一 个对角阵,且对角线 U,V均为正交矩阵,S 元素恰好为A的奇异值(A’*A (A’*A的特征值的算术平方 元素恰好为A的奇异值(A’*A的特征值的算术平方 根). A=U*S*V’ 用于处理一些病态方程组的求解 格式一:只返回方阵A 格式一:只返回方阵A的特征值 格式二:其中D是由A 格式二:其中D是由A的特征值组成的对角 矩阵,V为对应特征向量组成的矩阵. ,V为对应特征向量组成的矩阵 矩阵,V为对应特征向量组成的矩阵. 求矩阵的迹: 求矩阵的迹:矩阵的迹等于矩阵的特征值之和
eig(A) [V,D]=eig(A) trace(A)
上机作业
找出你的代数书,利用 重做其中的几个作业。 找出你的代数书,利用Matlab重做其中的几个作业。 重做其中的几个作业源自函数 [Q,R]=qr(A)
功能 (QR分解 分解) 正交变换 (QR分解): 对A进行QR分解,就是把A分解为一个正交矩阵Q和 进行QR分解,就是把A分解为一个正交矩阵Q QR分解 一个上三角矩阵R的乘积形式. 其中Q*Q’=E, 一个上三角矩阵R的乘积形式. 其中Q*Q’=E, 正交 阵!
[U,S,V]=svd( A)
%对高阶的大方程组通常用:LU、QR和cholesky分解 对高阶的大方程组通常用: 、 对高阶的大方程组通常用 和 分解 等方法求方程组的解 其优点是运算速度快、 等方法求方程组的解 。其优点是运算速度快、可以节省 磁盘空间、节省内存。 磁盘空间、节省内存。
3 求线性方程组的通解
的通解。 例:求下面线性方程组Ax=B的通解。 求下面线性方程组 的通解 输出结果: 输出结果:
解法2 解法2:利用 rref 函数

线性代数-matlab实验报告

线性代数-matlab实验报告

用matlab解决线性代数问题学号: 82120545 , 姓名: 于珊,1 求解线性方程组实验内容: 用MATLAB求解如下线性方程组Ax = b, 其中A =5600000015600000015600000015600000015600000015600000015600000015⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦, b = [1,4,6,0,7,1,2,4] T.实验目的:1. 了解MATLAB软件, 学会MATLAB软件的一些基本操作;2. 熟悉MATLAB软件的一些数值计算功能;3. 练习编写简单的MATLAB程序。

实验原理:1. 对于满足条件系数矩阵的行列式D=︱A︱≠0的方程组Ax= b,根据克拉默(Gramer)法则,此线性方程组有唯一解:,j=1,2,…,n。

2. 当线性方程组的系数矩阵A是可逆矩阵时, 方程组Ax = b的解为X = A\B。

3. 当系数矩阵A可逆时, 对增广矩阵[A, b]进行初等行变换, 把它化为行最简形矩阵B, 则B的最后一列就是该方程组的解向量。

实验方案: 1. 在MATLAB命令窗口中输入如下命令:>> a_1=[5;1;0;0;0;0;0;0];a_2=[6;5;1;0;0;0;0;0];>> a_3=[0;6;5;1;0;0;0;0];a_4=[0;0;6;5;1;0;0;0];>> a_5=[0;0;0;6;5;1;0;0];a_6=[0;0;0;0;6;5;1;0];>> a_7=[0;0;0;0;0;6;5;1];a_8=[0;0;0;0;0;0;6;5]; %输入矩阵A>> b=[1;4;6;0;7;1;2;4];>> D=det([a_1,a_2,a_3,a_4,a_5,a_6,a_7,a_8]);>> D_1=det([b,a_2,a_3,a_4,a_5,a_6,a_7,a_8]);>> D_2=det([a_1,b,a_3,a_4,a_5,a_6,a_7,a_8]);>> D_3=det([a_1,a_2,b,a_4,a_5,a_6,a_7,a_8]);>> D_4=det([a_1,a_2,a_3,b,a_5,a_6,a_7,a_8]);>> D_5=det([a_1,a_2,a_3,a_4,b,a_6,a_7,a_8]);>> D_6=det([a_1,a_2,a_3,a_4,a_5,b,a_7,a_8]);>> D_7=det([a_1,a_2,a_3,a_4,a_5,a_6,b,a_8]);>> D_8=det([a_1,a_2,a_3,a_4,a_5,a_6,a_7,b]);>> x_1=D_1/D;x_2=D_2/D;x_3=D_3/D;x_4=D_4/D;>> x_5=D_5/D;x_6=D_6/D;x_7=D_7/D;x_8=D_8/D;>> format rat,X=[x_1,x_2,x_3,x_4,x_5,x_6,x_7,x_8]%利用克拉默法则求解方程组2. 在MATLAB命令窗口中输入如下命令:>> %把该方程组记为AX=b,则X=A\b>> A=[5,6,0,0,0,0,0,0;1,5,6,0,0,0,0,0;0,1,5,6,0,0,0,0;0,0,1,5,6,0,0,0;0,0,0,1,5,6,0,0;0,0,0,0,1,5,6,0;0,0,0,0,0,1,5,6;0,0,0,0,0,0,1,5]; %输入矩阵A>> b=[1;4;6;0;7;1;2;4]; %输入矩阵b>>format rat,X=A\b%求解方程组3. 在MATLAB命令窗口中输入如下命令:>> A=[5,6,0,0,0,0,0,0;1,5,6,0,0,0,0,0;0,1,5,6,0,0,0,0;0,0,1,5,6,0,0,0;0,0,0,1,5,6,0,0;0,0,0,0,1,5,6,0;0,0,0,0,0,1,5,6;0,0,0,0,0,0,1,5];%输入矩阵A>> b=[1;4;6;0;7;1;2;4]; %输入矩阵b>> B=[A,b];%B为增广矩阵[A,b]>> format rat>> C=rref(B); %用初等行变换把B化为行最简形>> X=C(:,9) %利用高斯消元法求解方程组实验结果:1.方法一的计算结果为:X =Columns 1 through 6-3419/592 727/146 -2543/1009 697/307 -131/89 2033/1009 Columns 7 through 8-835/659 1913/18162方法二的计算结果为:.X =-3419/592727/146-2543/1009697/307-131/892033/1009-835/6591913/18163.方法三的计算结果为:X =-797/138727/146-310/123697/307-131/89542/269-204/161138/131对实验结果的分析:上述3种方案所得的结果不完全一致, 这是因为不同的计算方法在计算机中有不同的精度,导致计算数据结果的不同。

Matlab中的线性代数计算技巧指南

Matlab中的线性代数计算技巧指南

Matlab中的线性代数计算技巧指南线性代数是数学中一门重要的学科,它在许多领域中都有着广泛的应用,包括工程、科学和金融等。

而Matlab是一种功能强大的数值计算软件,其中包含了许多用于线性代数计算的工具和函数。

本文将为读者介绍一些在Matlab中进行线性代数计算时常用的技巧和方法。

1. 矩阵的创建与操作在Matlab中,我们可以使用矩阵来表示向量、矩阵和张量等对象。

创建一个矩阵可以使用以下命令:```matlabA = [1 2 3; 4 5 6; 7 8 9];```这样就创建了一个3×3的矩阵A,其中的分号用于分隔行。

我们也可以使用函数来创建特殊的矩阵,比如单位矩阵、零矩阵等:```matlabeye(3); % 创建3×3的单位矩阵zeros(2, 3); % 创建2×3的零矩阵```对于矩阵的操作,Matlab提供了许多常用的函数,比如矩阵的转置、矩阵的相乘等:```matlabA'; % 矩阵的转置A*B; % 矩阵的乘法```2. 矩阵的求逆与解线性方程组在线性代数中,求逆矩阵和解线性方程组是两个常见的问题。

在Matlab中,可以使用`inv`函数来求逆矩阵:```matlabinv(A); % 求矩阵A的逆矩阵```如果要解一个线性方程组,我们可以使用线性方程组求解器`linsolve`函数:```matlabX = linsolve(A, B); % 解线性方程组AX=B```其中,A是系数矩阵,B是常数向量。

这样,X就是线性方程组的解向量。

3. 特征值和特征向量特征值和特征向量在线性代数中有着重要的意义,它们在许多应用中扮演着重要的角色。

在Matlab中,我们可以使用`eig`函数来计算矩阵的特征值和特征向量:```matlab[V, D] = eig(A); % 计算矩阵A的特征向量和特征值```其中,V是包含特征向量的矩阵,D是包含特征值的对角矩阵。

如何在Matlab中进行矩阵运算和线性代数计算

如何在Matlab中进行矩阵运算和线性代数计算

如何在Matlab中进行矩阵运算和线性代数计算矩阵运算和线性代数计算在科学计算中起着至关重要的作用。

Matlab是一种强大的科学计算软件,其中内置了丰富的矩阵运算和线性代数函数,使得我们能够轻松地进行各种复杂的数学计算。

本文将介绍如何在Matlab中进行矩阵运算和线性代数计算。

一、矩阵的表示与生成在Matlab中,我们可以使用一对方括号来表示矩阵。

例如,下面的代码可以生成一个3×3的矩阵A:```A = [1, 2, 3; 4, 5, 6; 7, 8, 9];```我们也可以使用内置函数来生成一些特殊矩阵,如零矩阵、单位矩阵和对角矩阵。

下面的代码分别生成一个3×3的零矩阵B、一个3×3的单位矩阵C和一个对角元素为1、2、3的对角矩阵D:```B = zeros(3);C = eye(3);D = diag([1, 2, 3]);```二、矩阵的基本运算1. 矩阵的加法和减法在Matlab中,我们可以使用运算符"+"和"-"对矩阵进行加法和减法运算。

下面的代码演示了如何对两个3×3的矩阵A和B进行加法和减法运算:```A = [1, 2, 3; 4, 5, 6; 7, 8, 9];B = [9, 8, 7; 6, 5, 4; 3, 2, 1];C = A + B; % 矩阵相加D = A - B; % 矩阵相减```2. 矩阵的乘法矩阵的乘法在Matlab中使用运算符"*"表示。

下面的代码演示了如何对两个矩阵A和B进行乘法运算:```A = [1, 2, 3; 4, 5, 6]; % 2×3 矩阵B = [7, 8; 9, 10; 11, 12]; % 3×2 矩阵C = A * B; % 矩阵相乘```需要注意的是,矩阵的乘法是满足结合律的,但不满足交换律。

也就是说,如果A是m×n的矩阵,B是n×p的矩阵,那么A*B是m×p的矩阵,而B*A是n×n 的矩阵。

MATLAB的线性代数计算

MATLAB的线性代数计算

第二章 MATLAB的线性代数计算本章先介绍用MATLAB解线性方程组的方法, 应用此方法, 说明线性代数中有关线性组合,线性相依,线性独立的概念与判断. 另外也讨论并估计线性方程组近似值解之正确度. 最后说明LU-Factorization与 Choleski-Decomposition 及其应用.【当两个矩阵(A,B)同阶时,此时这两个矩阵可以进行点乘运算,点乘运算是把这两个矩阵位置对应的元素进行相乘,然后得到一个新的与A,B同阶的矩阵C(C(i,j)=A(i,j)*B(i,j)).(矩阵的点除(./)与点乘(.*)类似.).矩阵的乘法(*),是按照通常的矩阵乘法进行运算,两个矩阵进行乘法(如A*B)的前提:A的列数与B的行数相等.两个矩阵相乘时不可以随便交换顺序.可以运行几个例子看下结果:>> A=[3 4 5;2 3 4]A =3 4 52 3 4>> B=[3 4 5;5 4 3]B =3 4 55 4 3>> C=A*B??? Error using ==> mtimes Inner matrix dimensions must agree.-----(不能进行运算,因为这是矩阵相乘,必须满足M×N与N×Y的矩阵才能相乘,这里A是2×3,B也是2×3的矩阵,所以不能进行矩阵相乘.)>> D=A.*BD =9 16 2510 12 12----(从结果中可以看出, .*就是将相同阶数的矩阵相应的元素相乘, 除法与此类似.)然后还有左除(\)和右除(/)的区别:A*X=B的解为 X=A\B(左除) X*B=A的解为 X=A/B(右除)】(一) 解线性方程组 Ax= b(1) 矩阵 A 是一个 upper triangular matrix, 主对角线上的元素不为零A=[4 -1 3;0 2 5;0 0 8];b=[1 0 2]';n=3; X=zeros(n,1); % 给初始值 X=[0 0 0]'for j=n:-1:1 % 利用loop来执行Backward SubsitutionX(j)=(b(j)-A(j,: )*X)/A(j,j);end, XX =-0.0938-0.62500.2500(2) 矩阵 A 是一般矩阵, 而且是 nonsingular matrix 则利用 Gaussian EliminationAlgorithm采用 maximum column pivot 将其化为 triangular matrix, 以求解A=[2 2 -3;3 1 -2;6 8 0];b=[2 2 30]';w=[A b]; % 建一扩增矩阵(augmented matrix)p=[1 2 3]'; % 初始的 pivot vectorpivot=w(3,1); % 选定第一个 pivot elementp=[3 2 1]; % 更新后的 pivot vectorw(1,:)=(-w(1,1)/pivot)*w(3,:)+w(1,:) % 使(1,1)entry为0w =0 -0.6667 -3.0000 -8.00003.0000 1.0000 -2.0000 2.00006.0000 8.0000 0 30.0000w(2,:)=(-w(2,1)/pivot)*w(3,:)+w(2,:) % 使(2,1)entry为0w =0 -0.6667 -3.0000 -8.00000 -3.0000 -2.0000 -13.00006.0000 8.0000 0 30.0000pivot=w(2,2); % 选定第二个 pivot element w(1,:)=(-w(1,2)/pivot)*w(2,:)+w(1,:) % 使(1,2)entry为0p=[3 2 1]'; % 更新后的 pivot vector w =0 0 -2.5556 -5.11110 -3.0000 -2.0000 -13.00006.0000 8.0000 0 30.0000C=w(:,1:3); B=w(:,4); % separate coefficient matrix and% right-hand sidex=zeros(3,1); % 给x的初始值x=[0 0 0]'for j=3:-1:1 % 利用loop来执行类似Backward Subsitution% 以求解x(j)=(B(p(j))-C(p(j),:)*x)/C(p(j),j);end, xx =132xx=A\b % 用MATLAB内部的除法"\"来解abs(x-xx) % 估计用上述Gaussian Elimination和% A\b所求得的解之间的误差xx =1.00003.00002.0000ans =1.0e-015 *0.4441(3) Row Reduced Echelon Form (rref)A=[2 -1 0 2 3;-1 -4 3 1 2;5 1 -3 5 7];b=[5 1 10]';aug=[A b]; %建一个扩增矩阵(augmented matrix)c=rref(aug)c =1.0000 0 0 0 02.00000 1.0000 0 -2.0000 -3.0000 -1.00000 0 1.0000 -2.3333 -3.3333 -0.3333【说明】由矩阵 c 的 rank=3 我们得知此方程组有解, 因为 rank(A) = rank([A b])。

Matlab实训线性代数问题的求解演示文稿

Matlab实训线性代数问题的求解演示文稿
-2.81474976710656 -8.44424930131968 8.44424930131968 2.81474976710656
2.3140
高阶的Hilbert矩阵是接近奇异的矩阵。
第14页,共93页。
• 矩阵的迹
格式: t=trace(A)
• 矩阵的秩
格式:r=rank(A) %用默认的精度求数值秩
r=rank(A, ) %给定精度下求数值秩
矩阵的秩也表示该矩阵中行列式不等于0的子式的最大阶次。可证行 秩和列秩(线性无关的)应相等。
-0.11999999999999 1.19999999999990 -2.69999999999976 1.67999999999984 0.23999999999998 -2.69999999999976 6.47999999999940 -4.19999999999961 -0.13999999999999 1.67999999999984 -4.19999999999961 2.79999999999974
00100
00020
00003
00000 00000
第6页,共93页。
生成三对角矩阵:
>> V=diag([1 2 3 4])+diag([2 3 4],1)+diag([5 4 3],-1)
V= 1200 5230
0434
0034
第7页,共93页。
–Hilbert矩阵及逆Hilbert矩阵
生成n阶的Hilbert矩阵:
0.3333 0.2500 0.2000 >> B=sym(A)
B= [ 1, 1/2, 1/3]
[ 1/2, 1/3, 1/4]

MATLAB软件应用 解题代码 线性代数

MATLAB软件应用 解题代码 线性代数

2%求全部4位水仙花数m=1000:9999%生成所有四位数的m向量m1=rem(m,10)%求m除以10的余数赋给m1m2=rem(fix(m/10),10)%先调用fix,对m/10的结果取整,再求取整后的数/10的余数m3=rem(fix(m/100),10)%先调用fix,对m/100的结果取整,再求取整后的数/10的余数m4=fix(m/1000)%对m/1000取整赋予m4k=find(m==m1.*m1.*m1.*m1+m2.*m2.*m2.*m2+m3.*m3.*m3.*m3+m4.*m4.*m4.*m4) %调用find函数,在向量m中找到水仙花数的序号赋给变量ks=m(k)%输出水仙花数%反序x='Kat is beautiful'%生成字符串result=strrep(x,'is',x(6:-1:5))%调用strrep函数将x中的子字符串is替换为利用冒号表达式表示的反序,初项为6,末项为5,步长为-13A=magic(7)%产生一个7阶魔方矩阵A([2 6],:)=A([6 2],:)%交换矩阵A的第一行和第二行B=A%得到矩阵Bsum(B(1,:))%求B矩阵第一行元素之和sum(B(1,:))==sum(B(2,:))%验证B矩阵各行元素之和是否相等sum(B(2,:))==sum(B(3,:))sum(B(3,:))==sum(B(4,:))sum(B(4,:))==sum(B(5,:))sum(B(5,:))==sum(B(6,:))sum(B(6,:))==sum(B(7,:))sum(B(:,1))%求B矩阵第一列元素之和sum(B(:,1))==sum(B(:,2))%验证B矩阵各列元素之和是否相等sum(B(:,2))==sum(B(:,3))sum(B(:,3))==sum(B(:,4))sum(B(:,4))==sum(B(:,5))sum(B(:,5))==sum(B(:,6))sum(B(:,6))==sum(B(:,7))sum(diag(B))%求B矩阵主对角线元素之和B1=flipud(B)%将B矩阵上下翻转,B矩阵的副对角线就变成了B1矩阵的主对角线sum(diag(B1))%求B1矩阵主对角线元素之和即求B矩阵副对角线元素之和sum(B(1,:))==sum(B(:,1))%验证B矩阵每行、每列元素之和是否相等sum(diag(B))==sum(diag(B1))%验证B矩阵主、副对角线元素之和是否相等sum(B(1,:))==sum(diag(B))%验证B矩阵每行、每列元素之以及主、副对角线元素之和是否相等B(:,[2 6])=A(:,[6 2])%交换矩阵B的第一列和第二列C=B%得到矩阵Csum(C(1,:))%求C矩阵第一行元素之和sum(C(1,:))==sum(C(2,:))%验证C矩阵各行元素之和是否相等sum(C(2,:))==sum(C(3,:))sum(C(3,:))==sum(C(4,:))sum(C(4,:))==sum(C(5,:))sum(C(5,:))==sum(C(6,:))sum(C(6,:))==sum(C(7,:))sum(C(:,1))%求C矩阵第一列元素之和sum(C(:,1))==sum(C(:,2))%验证C矩阵各列元素之和是否相等sum(C(:,2))==sum(C(:,3))sum(C(:,3))==sum(C(:,4))sum(C(:,4))==sum(C(:,5))sum(C(:,5))==sum(C(:,6))sum(C(:,6))==sum(C(:,7))sum(diag(C))%求C矩阵主对角线元素之和C1=flipud(C)%将C矩阵上下翻转,C矩阵的副对角线就变成了C1矩阵的主对角线sum(diag(C1))%求C1矩阵主对角线元素之和即求C矩阵副对角线元素之和sum(C(1,:))==sum(C(:,1))%验证C矩阵每行、每列元素之和是否相等sum(diag(C))==sum(diag(C1))%验证C矩阵主、副对角线元素之和是否相等sum(C(1,:))==sum(diag(C))%验证C矩阵每行、每列元素之以及主、副对角线元素之和是否相等4x=[2,4,8;0,-6,-4;8,1,7]%自定义一个非奇异的3阶方阵xn=norm(x) %直接求x的2-范数max(eig(x.'*x))^(1/2)%求矩阵x的转置乘矩阵x本身所得的矩阵的最大特征值的平方根%两者的结果相等x=[0,6,6,1,1,6,6,1,1,6,6,0;0,0,1,1,5,5,6,6,10,10,11,11]%生成结点坐标矩阵x,第一行为横坐标,第二行为纵坐标A1=[2,1;1,1]%定义变换矩阵A1A2=[0,-1;1,0]%定义变换矩阵A2A3=[2,0;0,2]%定义变换矩阵A3y1=A1*x%再利用A1对x进行变换,得到y1矩阵y2=A2*x%再利用A2对x进行变换,得到y2矩阵y3=A3*x%再利用A3对x进行变换,得到y3矩阵%分别绘制变换前后的图形subplot(2,2,1)fill(x(1,:),x(2,:),'r')subplot(2,2,2)fill(y1(1,:),y1(2,:),'r')subplot(2,2,3)fill(y2(1,:),y2(2,:),'r')subplot(2,2,4)fill(y3(1,:),y3(2,:),'r')5%判断n是否为质数n1 = input('请输入一个不大于100的整数:','s');n = str2num(n1);%因为默认输入的是ASCII码值,所以要有这一步,转换成数字if rem(n,2)==0 & n/2~=1 %表示如果输入的数字被2整除,则输出'您所输入的数为合数',且把2排除disp('您所输入的数为合数')elseif rem(n,3)==0 & n/3~=1%条件表示如果输入的数字是奇数,且被3整除,则输出'您所输入的数为合数',且把3排除disp('您所输入的数为合数')elseif rem(n,3)~=0 & rem(n,5)==0 & n/5~=1%条件表示如果输入的数字不被2、3整除,但被5这整除,则输出'您所输入的数为合数',且把5排除disp('您所输入的数为合数')elseif rem(n,3)~=0 & rem(n,5)~=0 & rem(n,7)==0 & n/7~=1%条件表示如果输入的数字不被2、3、5整除,但被7这整除,则输出'您所输入的数为合数',且把7排除disp('您所输入的数为合数')else %以上条件都不满足,则输出num本身disp(n)end%判断n是否为两个质数的乘积n1 = input('请输入一个不大于100的整数:','s');n = str2num(n1);%因为默认输入的是ASCII码值,所以要有这一步,转换成数字if rem(n,2)==0 & isprime(n/2) %表示如果输入的数字被2整除且除以2后为质数,则判定输入的数为两个质数的乘积disp([num2str(n),'是2和',num2str(n/2),'的乘积']) %输出‘n是2和n/2的乘积’elseif rem(n,3)==0 & isprime(n/3) %表示如果输入的数字被3整除且除以3后为质数,则判定输入的数为两个质数的乘积disp([num2str(n),'是3和',num2str(n/3),'的乘积']) %输出‘n是3和n/3的乘积’elseif rem(n,3)~=0 & rem(n,5)==0 & isprime(n/5) %表示如果输入的数字被5整除且除以5后为质数,则判定输入的数为两个质数的乘积disp([num2str(n),'是5和',num2str(n/5),'的乘积']) %输出‘n是5和n/5的乘积’elseif rem(n,3)~=0 & rem(n,5)~=0 & rem(n,7)==0 & isprime(n/7) %表示如果输入的数字被7整除且除以7后为质数,则判定输入的数为两个质数的乘积disp([num2str(n),'是7和',num2str(n/7),'的乘积']) %输出‘n是7和n/7的乘积’else %以上条件都不满足,则输出'您输入的数不能分解为两个质数的乘积' disp('您输入的数不能分解为两个质数的乘积')end6%用辛普森法计算四分之一圆的面积,从而计算圆周率的近似值disp('以下是辛普森法求圆周率')a=0; %给a赋值为0b=1; %给b赋值为1n=input('n=?'); %输入n的值,即把区间分成n等份h=(b-a)/n; %计算每个区间的宽度,赋给变量hx=a:h:b %产生自变量向量x,x中包含了要取的n+1个自变量的值f=sqrt(1-x.*x);%得到一个与x对应的函数值向量赋给变量f,(这里一定要用点乘)s=[] %定义一个空矩阵sfor k =1:2:n %循环n次,步长为2s1=(f(k)+4*f(k+1)+f(k+2))*h/3; %求以抛物线弧段为曲边,以[Xk,Xk+2]为底的曲边梯形面积s=[s,s1]; %将s1添加到矩阵s中,循环n次后,s里面的元素分别时endpai=4*sum(s) %调用sum函数求s各元素之和,即整个曲边梯形的面积,再乘以4即为pi8figure(1)u1=linspace(-pi,pi,100);u2=linspace(-2*pi,2*pi,200);u3=linspace(0,2*pi,400);plot(u1,sin(2*u1)+1,'b-',u2,cos(u2),'r--',u3,sin(u3)+cos(2*u3),'k-.')figure(1)x=linspace(0,0.3);y=x.*sin(1./x);plot(x,y,'b')title('figure(1)')figure(2)r=1;t=0:6*pi;x1=r*(t-sin(t));y1=r*(1-cos(t));plot(x1,y1,'r')title('figure(2)')figure(3)syms x yezplot('4*x^2+9*y^2=36')grid ontitle('figure(3)')10figuresubplot(1,2,1);t=-1:0.1:1;[X,Y]=meshgrid(t);Z=X.^3+Y.^2;mesh(X,Y,Z);hold onsurf(X,zeros(size(Y)),Y.^3)title('{z=x^{3}+y^{2}}与x0z平面的相交图')subplot(1,2,2);t=-1:0.1:1;[X,Y]=meshgrid(t);Z=X.^2+Y.^5;mesh(X,Y,Z);hold onsurf(zeros(size(Y)),Y,X.^5)title('{z=x^{2}+y^{5}}与y0z平面的相交图')11%画月亮t=linspace(0,2*pi,100);subplot(2,2,1)x=sin(t);y=cos(t);p1=y>0.5;y(p1)=NaN;plot(x,y)hold onx11=sqrt(3)*sin(t)./2;y11=sqrt(3)*(0.5+cos(t))./2;p11=y11>0.5;y11(p11)=NaN;plot(x11,y11)axis([-1.1,1.1,-1.1,1.1])axis squaregrid onsubplot(2,2,2)x=sin(t);y=cos(t);p2=x>0.5;x(p2)=NaN;plot(x,y)hold onx11=sqrt(3)*(0.5+sin(t))./2;y11=sqrt(3)*cos(t)./2;p11=x11>0.5;x11(p11)=NaN;plot(x11,y11)axis([-1.1,1.1,-1.1,1.1])axis squaregrid onsubplot(2,2,3)x=sin(t);y=cos(t);p3=y<-0.5;y(p3)=NaN;plot(x,y)hold onx11=-sqrt(3)*sin(t)./2;y11=-sqrt(3)*(0.5+cos(t))./2; p11=y11<-0.5;y11(p11)=NaN;plot(x11,y11)axis([-1.1,1.1,-1.1,1.1])axis squaregrid onsubplot(2,2,4)x=sin(t);y=cos(t);p4=x<-0.5;x(p4)=NaN;plot(x,y)hold onx11=-sqrt(3)*(0.5+sin(t))./2; y11=-sqrt(3)*cos(t)./2;p11=x11<-0.5;x11(p11)=NaN;plot(x11,y11)axis([-1.1,1.1,-1.1,1.1])axis squaregrid on13% (a)x1=[1,3,5];p=poly(x1);p=p*3;px=poly2str(p,'x')x2=[2,4];q=poly(x2);q=q*-2;qx=poly2str(q,'x')% (b)A=[2,3;1,1];B=[2,1;1,1];pA=polyvalm(p,A)qA=polyvalm(q,A)pB=polyvalm(p,B)qB=polyvalm(q,B)%点乘的话,p(A)q(A)=q(B)p(A) pA.*qBqB.*pA%乘的话,p(A)q(A)和q(B)p(A)不相等pA*qBqB*pA% (c)a=0;b=10;f=diff(polyval(polyint(p),[a b]))p=[3,-27,69,-45]px=poly2str(p,'x')q=[-2,12,-16]qx=poly2str(q,'x')r=[1,1]rx=poly2str(r,'x')q1=[0,0,q]f=conv(p,r)+q1x=roots(f)14%算积分%【a】fun1=@(x) x+x.^2+x.^3;I1=rectangular(fun1,-1,1,1000)x=linspace(-1, 1, 100);y=x+x.^2+x.^3;I2=trapz(x,y)I3=quad(fun1,-1,1)%【b】fun2=@(x,y) sin(y.*(x+y)./(x.^2+4)) I=quad2d(fun2,1,10,1,10)function f=rectangular(fun,a,b,n)%矩形法:h=(b-a)/n;x=a:h:b;y=x;for i=2:n+1y(i)=fun((x(i)+x(i-1))/2);endf=h*sum(y(1:end));endsyms x y zeq1 = 3*x + 2*y - z == 4;eq2 = x - y + z == 1;eq3 = -x + 4*y + 5*z == 8;[x,y,z] = solve([eq1,eq2,eq3], [x,y,z])14%算积分%【a】fun1=@(x) x+x.^2+x.^3;I1=rectangular(fun1,-1,1,1000)x=linspace(-1, 1, 100);y=x+x.^2+x.^3;I2=trapz(x,y)I3=quad(fun1,-1,1)%【b】fun2=@(x,y) sin(y.*(x+y)./(x.^2+4)) I=quad2d(fun2,1,10,1,10)function f=rectangular(fun,a,b,n)%矩形法:h=(b-a)/n;x=a:h:b;y=x;for i=2:n+1y(i)=fun((x(i)+x(i-1))/2);endf=h*sum(y(1:end));endsyms x y zeq1 = 3*x + 2*y - z == 4;eq2 = x - y + z == 1;eq3 = -x + 4*y + 5*z == 8;[x,y,z] = solve([eq1,eq2,eq3], [x,y,z])。

使用Matlab求解线性代数问题(一)

使用Matlab求解线性代数问题(一)

使用Matlab求解线性代数问题一、用行列式求解线性方程组x1+ x2–2*x3 = -35*x1–2*x2+ 7*x3 = 222*x1–5*x2+ 5*x3 = 4解法1:使用矩阵求解方程组在Matlab 7.1命令行界面中输入(A表示系数矩阵,b表示向量)A = [1 1 -2; 5 -2 7; 2 -5 5]; % 系数矩阵b = [-3; 22; 4]; % 向量format rat; % 设置结果的显示形式为分数x = A\b; % 计算结果x = x' % 转置以行向量形式显示界面显示结果为x = 47/56 163/56 27/8即方程的解为x1 = 47/56; x2 = 163/56; x3 = 27/8解法2:使用Cramer法则求解方程组在Matlab 7.1命令行界面中输入D(系数行列式)D = [1 1 -2; 5 -2 7; 2 -5 5]; % 系数矩阵DD1 = [b D(:,2) D(:, 3)]; % D1D2 = [D(:,1) b D(:, 3)]; % D2D3 = [D(:, 1) D(:,2) b]; % D3format rat; % 设置结果的显示形式为分数x1 = det(D1)/det(D)x2 = det(D2)/det(D)x3 = det(D3)/det(D)输出结果为x1 = 47/56x2 = 163/56x3 = 27/8即方程的解为:x1 = 47/56; x2 = 163/56; x3 = 27/8二、求排列65872134的逆序数,并确定其奇偶性。

解:排列的逆序数定义为:如在1,2,3,…,n的一个全排列(s1 s2 s3…s n)中,有i<j时,s i >s j,这时s i、s j违反了自然顺序,就说它们构成了一个逆序。

排列(s1 s2 s3…s n)中逆序的总数称为该序列的逆序数。

根据定义计算逆序数的Matlab程序如下:a = [6 5 8 7 2 1 3 4]; % 将排列看作行向量Num = 0; % 逆序数初始值设为0Len = length(a); % 行向量中元素的个数for i = 1:1:(Len-1)n = length(find( a(i+1: Len) < a(i))); % 计算第i个元素% 的逆序数disp(strcat('第', num2str(i), '个元素', num2str(a(i)), '的逆序数为', num2str(n) ));Num = Num + n; %增加序列逆序数的个数end;disp(strcat('排列', num2str(a), '的逆序数为', num2str(Num)))将上述Matlab命令输入Matlab窗口命令行,执行结果为:第1个元素6的逆序数为5第2个元素5的逆序数为4第3个元素8的逆序数为5第4个元素7的逆序数为4第5个元素2的逆序数为1第6个元素1的逆序数为0第7个元素3的逆序数为0排列6 5 8 7 2 1 3 4的逆序数为19即排列65872134的逆序数为19,由于19为基数,所以排列65872134为逆排列。

线性代数Matlab数学实验

线性代数Matlab数学实验

0.1042 -0.1436 -0.0663 0.0878 0.0337 0.0411
1.1095 1.3541 3.1761 5.3951 8.3265 1.3564
4.3899 15.0714 19.5899 28.3698 37.2783 1.8128
2.1612 9.5847 11.9050 16.2275 20.7091 0.6693
b = ( 1 3 5 7 9 11) 。
1.输入矩阵 A,B,b. 2.作X12=A/ , X22=A+B , X23=A-B , X24=AB. 3.求|A|,|B|。 4.求 R(A),R(B)。 5.求X5=A-1 . 6.求矩阵方程 XA=C 的解 X6,其中 C 为 A 的第 i 行乘以列标 i 所得到的矩阵。 7.求解方程组 AX=b 的解向量 X7. 8.求 X6 的特征向量 X8,X6 的特征向量组 X 及对角阵 D。 9.求 B2(A-1)2. 10.存储工作空间变量 A,B:save’ds1.m’,A,B 三、思考与练习 1.对本实验中得到的C矩阵求CT, |C|, C-1, C的特征值及对应的特征向量。 2.创建从 2 开始,公差为 4 的等差数列的前 15 项构成的行向量。 3.将本实验中矩阵 A 与 B 的对应元素相乘、对应元素相处并观察分母为零时的结果。 4.求 b 的每个元素自身次幂所的行向量。 5.列出本实验中所有变量。 四、操作提示 1.计算过程 A=[3 4 -1 1 -9 10;6 5 0 7 4 -16;1 -4 7 -1 6 -8;2 -4 5 -6 12 -8;-3 6 -7 8 -1 1;8 -4 9 1 3 0] B=[1 2 4 6 -3 2;7 9 16 -5 8 -7;8 11 20 1 5 5;10 15 28 13 -1 9;12 19 36 25 -7 23;2 4 6 -3 0 5] b=1:2:11 X21=A' X22=A+B X23=A-B X24=A*B X31=det(A) X32=det(B) X41=rank(A) X42=rank(B) X5=inv(A) for i=1:6 C(:,i)=i*A(:,i); end C X6=C/A X7=A\b' X8=eig(X6) [X,D]=eig(X6) X9=B^2*(A^(-1))^2 存储实验1工作空间变量AB到文件ds1.mat中:save ds1 A B 2.计算结果:
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

• 特征多项式
格式: C=poly(A)
例:>> A=[16 2 3 13; 5 11 10 8; 9 7 6 12; 4 14 15 1]; >> poly(A) %直接求取 ans = 1.000000000000000e+000 -3.399999999999999e+001 -7.999999999999986e+001 2.719999999999999e+003 -2.819840539024018e-012 >> A=sym(A); poly(A) %运用符号工具箱 ans = x^4-34*x^3-80*x^2+2720*x
• 符号矩阵的输入 数值矩阵A转换成符号矩阵: B=sym(A) 例: >> A=hilb(3) A= 1.0000 0.5000 0.3333 0.5000 0.3333 0.2500 0.3333 0.2500 0.2000 >> B=sym(A) B= [ 1, 1/2, 1/3] [ 1/2, 1/3, 1/4] [ 1/3, 1/4, 1/5]
>> H=sym(hilb(7)); inv(H)
ans = [ 49, -1176, 8820, -29400, 48510, -38808, 12012] [-1176, 37632, -317520, 1128960, -1940400, 1596672, -504504] [8820, -317520, 2857680, -10584000, 18711000, -15717240, 5045040] [-29400, 1128960, -10584000, 40320000, -72765000, 62092800, -20180160] [48510, -1940400, 18711000, -72765000, 133402500, -115259760, 37837800] [-38808, 1596672, -15717240, 62092800, -115259760, 100590336, -33297264] [12012, -504504, 5045040, -20180160, 37837800, -33297264, 11099088]
• 矩阵的迹
格式:
t=trace(A)
• 矩阵的秩
格式:r=rank(A) %用默认的精度求数值秩 r=rank(A, ) %给定精度下求数值秩
矩阵的秩也表示该矩阵中行列式不等于0的子式的最大阶 次。可证行秩和列秩(线性无关的)应相等。
• 例
>> A=[16 2 3 13; 5 11 10 8; 9 7 6 12; 4 14 15 1]; rank(A) ans = 3 该矩阵的秩为3,小于矩阵的阶次,故为非满秩矩阵。
生成三对角矩阵:
>> V=diag([1 2 3 4])+diag([2 3 4],1)+diag([5 4 3],-1)
V= 1 5 0 0
2 2 4 0
0 3 3 3
0 0 4 4
–Hilbert矩阵及逆Hilbert矩阵
生成n阶的Hilbert矩阵:
A=hilb(n)
求取逆Hilbert矩阵:
第四章• 矩阵 线性方程组的直接解法 线性方程组的迭代法 线性方程组的符号解法 稀疏矩阵技术 特征值与特征向量
4.1 矩阵 4.1.1特殊矩阵的输入
• 数值矩阵的输入
–零矩阵、幺矩阵及单位矩阵 生成nn方阵: A=zeros(n), B=ones(n), C=eye(n) 生成mn矩阵: A=zeros(m,n), B=ones(m,n), C=eye(m,n) 生成和矩阵B同样位数的矩阵: A=zeros(size(B))
-0.93824992236885 -2.81474976710656 2.81474976710656 0.93824992236885
>> norm(A*B-eye(size(A))) %检验
-0.11999999999999 1.19999999999990 -2.69999999999976 1.67999999999984
0.23999999999998 -2.69999999999976 6.47999999999940 -4.19999999999961
-0.13999999999999 1.67999999999984 -4.19999999999961 2.79999999999974
>> H=sym(hilb(30)); norm(double(H*inv(H)-eye(size(H))))
ans = 0
• 例:奇异阵求逆
>> A=[16 2 3 13; 5 11 10 8; 9 7 6 12; 4 14 15 1]; >> format long; B = inv(A)
Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = 1.306145e-017. B= 1.0e+014 * 0.93824992236885 2.81474976710656 -2.81474976710656 2.81474976710656 8.44424930131968 -8.44424930131968 -2.81474976710656 -8.44424930131968 8.44424930131968 -0.93824992236885 -2.81474976710656 2.81474976710656
–随机元素矩阵
若矩阵随机元素满足[0,1]区间上的均匀分布 生成nm阶标准均匀分布为随机数矩阵: A=rand(n,m)
生成nn阶标准均匀分布为随机数方阵:
A=rand(n)
–对角元素矩阵
已知向量生成对角矩阵: A=diag(V) 已知矩阵提取对角元素列向量: V=diag(A) 生成主对角线上第k条对角线为V的矩阵: A=diag(V,k)
B=invhilb(n)
–Hankel(汉克 ) 矩阵
其中:第一列的各个元素定义为C向量,最后一行各 个元素定义为R。H为对称阵。
H1=hankel(C) 由 Hankel 矩阵反对角线上元素相等得出一下三角 阵均为零的Hankel 矩阵
–Vandermonde(范德蒙)矩阵
–伴随矩阵
其中:P(s)为首项系数为一的多向式。
• 例:求一向量、矩阵的范数
>> a=[16 2 3 13]; >> [norm(a), norm(a,2), norm(a,1), norm(a,Inf)] ans = 2.092844953645635e+001 2.092844953645635e+001 3.400000000000000e+001 1.600000000000000e+001 >> A=[16 2 3 13; 5 11 10 8; 9 7 6 12; 4 14 15 1]; >> [norm(A), norm(A,2), norm(A,1), norm(A,Inf)] ans = 34 34 34 34 符号运算工具箱未提供norm( )函数,需先用double( ) 函数转换成双精度数值矩阵,再调用norm( )函数。
计算误差范数: >> norm(H*inv(H)-eye(size(H)))
ans = 6.235798190375727e-013
>> H2=invhilb(4); norm(H*H2-eye(size(H)))
ans = 5.684341886080802e-014
>> H=hilb(10); H1=inv(H); norm(H*H1-eye(size(H))) ans = 0.00264500826202 >> H2=invhilb(10); norm(H*H2-eye(size(H))) ans = 1.612897415528547e-005 >> H=hilb(13); H1=inv(H); norm(H*H1-eye(size(H))) Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = 2.339949e-018. ans = 53.23696008570294 >> H2=invhilb(13); norm(H*H2-eye(size(H))) ans = 11.37062973181391 对接近于奇异矩阵,高阶一般不建议用inv( ),可用符号工具箱。
4.1.2 矩阵基本概念与性质
• 行列式
格式 :d=det(A)
例:求行列式
>> A=[16 2 3 13; 5 11 10 8; 9 7 6 12; 4 14 15 1]; det(A) ans = 0
• 例:
>> tic, A=sym(hilb(20)); det(A), toc ans = 1/23774547167685345090916442434276164401754 1983775348649303318533123441975931064458 5187585766816573773440565759867265558971 7656384197107933033865823241498112410235 5448916615471780963525779783680000000000 0000000000000000000000000 elapsed_time = 2.3140 高阶的Hilbert矩阵是接近奇异的矩阵。
相关文档
最新文档