主要内容

线性代数操作

象征性的希尔伯特矩阵

下面的例子,展示了如何执行基本的线性代数运算,是基于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产生与无限精度希尔伯特矩阵相对应的结果,信谊(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

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

可变精度运算

将前面的操作与使用20位精度的变精度算术进行对比。

数字(20)V = vpa(H)
V = [1.0, 0.5, 0.333333333333333333333333] [0.5, 0.3333333333333333, 0.25] [0.3333333333333333, 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.4929962552349494034e-26, 2.4556924435168009098e-25, -2.1971985020939797614e-25] [2.4556924435168009098e-25, -1.2666203129718236271e-24, - 1.1373733422604130529e-24] [-2.1971985020939797614e-25, - 1.1373733422604130529e-24, -1.0856745539758488233e]

解方程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 = sub (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
Baidu
map