当前位置:
文档之家› 用matlab解决线性代数的问题
用matlab解决线性代数的问题
上式即
上式即
即
可将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