§3.6.3 数组乘方
数组乘方用符号.^表示. 例如:键入:
x=[ 1 2 3] y=[ 4 5 6]
则z=x.^y=[1^4 2^5 3^6]=[1 32 729] (1) 如指数是个标量,例如x.^2,x同上,则:
z=x.^2=[1^2 2^2 3^2]=[ 1 4 9]
(2) 如底是标量,例如2 .^[x y] ,x、y同上,则:
z=2 .^[x
y]=[2^1 2^2 2^3 2^4 2^5 2^6]=[2 4 8 16 32 64]
从此例可以看出Matlab算法的微妙特性,虽然看上去与其它乘方没什么不同,但在2和“.”之间的空格很重要,如果不这样做,解释程序会把“.”看成是2的小数点. Matlab看到符号“^”时,就会当做矩阵的幂来运算,这种情况就会出错,因为指数矩阵不是方阵. §3.7 矩阵函数
Matlab的数学能力大部分是从它的矩阵函数派生出来的,其中一部分装入Matlab本身处理中,它从外部的Matlab建立的M文件库中得到,还有一些由个别的用户为其自己的特殊的用途加进去的.其它功能函数在求助程序或命令手册中都可找到.手册中备有为Matlab提供数学基础的LINPACK和EISPACK软件包,提供了下面四种情况的分解函数或变换函数:
(1)三角分解;(2)正交变换;(3) 特征值变换;(4)奇异值分解. §3.7.1三角分解
最基本的分解为“LU”分解,矩阵分解为两个基本三角矩阵形成的方阵,三角矩阵有上三角矩阵和下三角矩阵.计算算法用高斯变量消去法.
从lu函数中可以得到分解出的上三角与下三角矩阵,函数inv得到矩阵的逆矩阵,det得到矩阵的行列式.解线性方程组的结果由方阵的“\\”和“/”矩阵除法来得到.
例如:
A=[ 1 2 3
4 5 6 7 8 0]
LU分解,用Matlab的多重赋值语句
[L,U]=lu(A) 得出
L =
0.1429 1.0000 0 0.5714 0.5000 1.0000 1.0000 0 0 U =
7.0000 8.0000 0 0 0.8571 3.0000 0 0 4.5000 注:L是下三角矩阵的置换,U是上三角矩阵的正交变换,分解作如下运算,
检测计算结果只需计算L*U即可. 求逆由下式给出: x=inv(A)
x =
-1.7778 0.8889 -0.1111 1.5556 -0.7778 0.2222 -0.1111 0.2222 -0.1111 从LU分解得到的行列式的值是精确的,d=det(U)*det(L)的值可由下式给出:
d=det(A) d =
27
直接由三角分解计算行列式:d=det(L)*det(U)
d =
27.0000
为什么两种d的显示格式不一样呢? 当Matlab做det(A)运算时,所有A的元素都是整数,所以结果为整数.但是用LU分解计算d时,L、U的元素是实数,所以Matlab产生的d也是实数. 例如:线性联立方程取 b=[ 1
3 5] 解Ax=b方程,用Matlab矩阵除得到
x=A\\b 结果x=
0.3333 0.3333 0.0000
由于A=L*U,所以x也可以有以下两个式子计算:y=L\\b,x=U\\y.得到相同的x值,中间值y为:
y =
5.0000 0.2857 0.0000
Matlab中与此相关的函数还有rcond、chol和rref.其基本算法与LU分解密切相关.chol函数对正定矩阵进行Cholesky分解,产生一个上三角矩阵,以使R'*R=X.rref用具有部分主元的高斯-约当消去法产生矩阵A的化简梯形形式.虽然计算量很少,但它是很有趣的理论线性代数.为了教学的要求,也包括在Matlab中.
§3.7.2正交变换
“QR”分解用于矩阵的正交-三角分解.它将矩阵分解为实正交矩阵或复酉矩阵与上三角矩阵的积,对方阵和长方阵都很有用. 例如A=[ 1 2 3
4 5 6 7 8 9 10 11 12]
是一个降秩矩阵,中间列是其它二列的平均,我们对它进行QR分解:
[Q,R]=qr(A) Q = -0.0776 -0.3105 -0.5433 -0.7762 R =
-12.8841 -14.5916 -16.2992 0 -1.0413 -2.0826 0 0 0.0000 0 0 0 可以验证Q*R就是原来的A矩阵.由R的下三角都给出0,并且R(3,3)=0.0000,
说明矩阵R与原来矩阵A都不是满秩的.
下面尝试利用QR分解来求超定和降秩的线性方程组的解. 例如:
b=[ 1
3 5 7]
-0.8331 -0.4512 -0.0694 0.3124 0.5444 -0.7709 -0.0913 0.3178 0.0605 0.3251 -0.8317 0.4461 讨论线性方程组Ax=b,我们可以知道方程组是超定的,采用最小二乘法的最好结果是计算x=A\\b. 结果为:
Warning: Rank deficient, rank = 2 tol = 1.4594e-014 x = 0.5000 0 0.1667
我们得到了缺秩的警告.用QR分解法计算此方程组分二个步骤:
y=Q'*b x=R\\y 求出的y值为
y =
-9.1586 -0.3471 0.0000 0.0000 x的结果为
Warning: Rank deficient, rank = 2 tol = 1.4594e-014 x = 0.5000 0 0.1667
用A*x来验证计算结果,我们会发现在允许的误差范围内结果等于b.这告诉我们虽然联立方程Ax=b是超定和降秩的,但两种求解方法的结果是一致的.显然x向量的解有无穷多个,而“QR”分解仅仅找出了其中之一.
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库矩阵的基本运算(2)在线全文阅读。
相关推荐: