主要内容

线性代数运算

符号希尔伯特矩阵

下面的例子,展示了如何执行基本的线性代数运算,是基于3 × 3希尔伯特矩阵的符号版本。

生成3 × 3希尔伯特矩阵。与格式的短, MATLAB®打印所示的输出。

H = hilb(3)
H = 1.0000 0.5000 0.3333 0.5000 0.3333 0.2500 0.3333 0.2500 0.2000

的计算元素H是由小整数的比值构成的浮点数。H是MATLAB数组类吗

转换H变成一个符号矩阵。

H = sym(H)
H =[1 1/2、1/3][1/2、1/3、1/4)(1/3、1/4、1/5)

符号线性代数运算

符号运算H产生与无限精度希尔伯特矩阵相对应的结果,信谊(hilb (3)),而不是它的浮点近似,hilb (3)

求的逆H

发票(H)
ans =[-36, 30][-36、192、-180](30、-180、180)

求行列式H

依据(H)
Ans = 1/2160

你可以使用反斜杠运算符来求解联立线性方程组。例如,求解H*x = b

B = [1;1;1);x = H\b
X = 3 -24 30

所有三个结果——线性系统的逆、行列式和解——都是与无限精确、有理的希尔伯特矩阵相对应的精确结果。

可变精度运算

将上述操作与使用20位精度的可变精度算法进行对比。

V = vpa(H)
V = [1.0, 0.5, 0.3333333333333333333333333333] [0.5, 0.33333333333333333333, 0.25] [0.3333333333333333, 0.25, 0.2]

各个元素表示中的小数点表示MATLAB使用的是变精度算法。每个算术运算的结果四舍五入为20位有效十进制数字。

逆矩阵,并注意误差被矩阵条件数放大,对于hilb (3)大约是500。

电导率(V)
Ans = 524.0567775860608

计算无限精度和可变精度版本的倒数之差。

ih = inv(H
ih =[-36, 30][-36、192、-180](30、-180、180)
iv = inv(V)
4 = (9.0, -36.0, 30.0) (-36.0, 192.0, -180.0) (30.0, -180.0, 180.0)

虽然这些矩阵看起来是一样的,但是计算它们之间的差异就会发现它们不是。

DHV = ih - iv
DHV = [-5.4929962552349494034e-26, 2.4556924435168009098e-25, - 2.197198502099718236271e -24, -1.2666203129718236271e-24] [-2.1971985020939797614e-25, 1.1373733422604130529e-24, -1.0856745539758488233e-24]

解方程V*y = b.答案看起来和解一样H*x = b

y = V\b
Y = 3.0 -24.0 30.0

计算之间的差值x而且y看看两种解之间的细微差别。金宝搏官方网站

x - y
Ans = 8.0779356694631608874e-27 -6.4623485355705287099e-26 7.1085833891275815809e-26

使用vpa数字(16)提供与使用标准双精度MATLAB例程相当的精度。

奇异值的符号研究

找到一个值年代H (1,1)这使得H单数。

syms s Hs = H;Hs(1,1) = s Z = det(Hs) sol = solve(Z)
Hs =[年代,1/2、1/3][1/2、1/3、1/4)(1/3、1/4、1/5)Z = s / 240 - 1/270索尔= 8/9

将溶液替换为年代海关

Hs = subs(Hs, s, sol)
Hs =[8/9, 1/2、1/3][1/2、1/3、1/4)(1/3、1/4、1/5)

验证的行列式海关是零。

依据(Hs)
Ans = 0

求的零空间和列空间海关.两个空间都是非平凡的。

N = null(Hs) C = colspace(Hs)
N= 3/10 -6/5 1 c = [1,0] [0,1] [-3/10, 6/5]

检查N在的零空间中海关

Hs * N
Ans = 0 0 0