主要内容

线性代数操作

象征性的希尔伯特矩阵

以下示例,其示出了如何执行基本的线性代数操作,基于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 =符号(H)
H =[1 1/2、1/3][1/2、1/3、1/4)(1/3、1/4、1/5)

符号线性代数运算

象征意义上的操作H得到的结果对应于无限精度的希尔伯特矩阵,SYM(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.33333333333333333333) (0.5, 0.33333333333333333333, 0.25) (0.33333333333333333333, 0.25, 0.2)

代表单个元素的小数点表明MATLAB正在使用可变精度算法。每个算术运算的结果被舍入到20个有效的十进制数字。

对矩阵进行逆运算,并注意误差被矩阵条件数放大hilb (3)大约有500。

电导率(V)
ans = 524.0567775860608

计算无限精度和变精度版本的逆差。

ih =发票(H)
ih =[-36, 30][-36、192、-180](30、-180、180)
4 =发票(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.49299625523494940e -26, 2.4556924435168009098e-25, -2.1971985020939797614e-25] [- 2.4556924435168009098e-25, -1.2666203129718236271e-24, 1.1373733422604130529e-24]

解方程V * y = b.答案和解是一样的H * x = b

y = V \ b
Y = 3.0 -24.0 30.0

计算xy看看这两种解决方案之间的细微差别。万博 尤文图斯

x - y
ANS = 8.0779356694631608879465570587853557058794-26

使用vpa数字(16)使用标准的双精度Matlab常规提供可比的精度。

奇异值的符号研究

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

符号s H = 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 =潜艇(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)
c = [1,0] [0,1] [-3/ 10,6 /5]

检查一下N是在零空间吗海关

HS * N.
Ans = 0 0 0