Cleve's Corner:数学和计算上的Clyver

科学计算,数学和更多

求解宽大的线性系统

这是关于线性系统,其方程的比变量更少;a * x = b那里-经过-n矩阵一个列中的行较少,所以m < n.我一直把这种系统称为宽的胖的,但这并不尊重。所以我咨询了Merriam-Webster词库,发现了宽敞的

这也是我使用Live Editor™的第一篇文章。这里有一个一条链接.mlx.文件。

内容

宽敞的线性系统

宽松的宽大的线性系统比列更少的行,没有唯一的解决方案。金宝搏官方网站如果您不太了解您正在尝试计算,难以计算一些东西。您可以通过添加附加条件来将解决方案放在解决方案:最小化其euclidean或$ \ ell_2 $ norm。这是Moore-Penrose解决方案。它是独一无二的,具有许多其他理想的属性。

但近年来已经看到了许多情况,其中不同的条件是可取的:最小化解决方案的非零组分的数量。调用这种解决方案稀疏的.实际上最小化非零组件的数量是组合困难的。(它是NP-HARD。)然而,MATLAB反斜杠运营商最多产生解决方案非零组件。这通常是最小的。

生成的例子

选择尺寸。

m = 3 n = 10
m = 3 n = 10
Assert (m < n)格式短的

生成一个m × n的随机1位正整数和负整数的矩阵。每次执行此脚本时,都会有不同的结果一个被建造。

a = randi(18,m,n) -  9
2 = 0 7 8 2 4 6 0 0 2 3 7 6 7 3 3 9 3 1 4 1 3 8 2 7 6 1 8 5

生成一个具有相同行数的随机右边。

b = randi(18,m,1) -  9
6 .选B

保存RHS的副本。

b_copy = b;

反斜杠

反斜杠将许多可能的解决方案中的一个组成为* x = b。金宝搏官方网站

x = a \ b
X = 0 0 0 -0 0 0 0 0.2812 -0.1953 0

这个x是稀疏的;它只有m个非零分量。

x如何计算?用列枢转计算QR分解。这是一个* p = q * r,具有正交q,右梯形r和置换p.

[q,r,p] = qr(a)
Q = -0.6247 -0.4341 -0.6491 0.4685 -0.8734 0.1331 -0.6247 -0.2209 0.7490 R =列1至7 12.8062 1.7179 3.5920 -1.5617 3.2796 8.2772 6.0908 0 -9.3834 4.3876 -2.6305 -6.5398 0.6628 6.5502 0 0 -6.3911 3.2621 -1.8641 -2.2469-0.9986列8到10-0.4685 -9.5266 -3.5920 -3.7092 2.4121-0.2313 -0.1498-0.2289 3.6117 P = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1

只保留R.的第一个m列。

r = r(:,1:m)
r = 12.8062 1.7179 3.5920 0 -9.3834 4.3876 0 0 -6.3911

把Q应用到右边。

b = q'* b
B = -6.8716 -3.4960 1.2483

反代换求解正方形三角形方程组R*x = b。

x = r \ b
X = -0.5195 0.2812 -0.1953

在x的末尾括起一些零,匹配从R删除的列数

x (m + 1: n) = 0
x = -0.5195 0.2812-0.1953 0 0 0 0 0 0 0

撤销的排列。

x = P * x
X = 0 0 0 -0 0 0 0 0.2812 -0.1953 0

伪逆

恢复RHS。

b = b_copy;

作为比较,利用Moore-Penrose伪逆可以得到最小2范数解。这通常是完全满的;没有一个分量是零。

y = pinv b (A) *
Y = 0.0644 0.0655 0.1261 -0.2161 0.0475 -0.1481-0.2034 0.1164 -0.1232 0.0612

x和y都是原始系统的解决方案。金宝搏官方网站

斧头= a * x ay = a * y
Ax = 5.0000 0.0000 6.0000 Ay = 5.0000 -0.0000 6.0000

然而规范(y, 2)小于范数(x,2)

normyx = [norm(y)norm(x)]
Normyx = 0.4112 0.6222

SVD.

要计算y而不计算伪逆,可以使用SVD。

[u,s,v] = svd(a)
U = -0.5601 0.2006 -0.8038 0.3872 0.9211 -0.0399 -0.7324 0.3336 0.5936 S = 1到7列20.2128 0 0 0 0 0 0 0 15.1459 8.3091 0 0 0 0 0 0 0 0 0 0 0列8到10 0 0 0 0 0 0 0 0 0 V = 1到7列-0.1066 0.2097 0.2761 0.5246 0.0327 0.4104 0.4231 -0.0342 0.2310 -0.1365 -0.2150 -0.5533 -0.1705 0.3003 -0.4368 -0.2670 -0.42920.4955 -0.0865 0.1040 0.1695 0.6265 0.0828 0.1735 0.5967 -0.1499 -0.2918 -0.1873 0.1511 0.4082 -0.3700 -0.0089 0.7338 -0.0647 0.1593 0.4219 -0.0247 -0.1275 -0.1803 -0.1248 0.8221 -0.0885 0.3262 -0.3940 0.1662 -0.1806 0.0969 -0.1350 0.7663 0.0530 0.6091 -0.2620 -0.0174 -0.0377 0.2134 0.2324 -0.3586 -0.5571 0.1057 - 0.0417 -0.0236第8至第10列-0.1425 0.4068 -0.2429 -0.6536 0.0165 0.1666 0.0216 -0.4643 0.2127 -0.0817 -0.1943 0.1656 -0.2858 -0.0944 0.1226 -0.0609 - 0.152 0.1524 0.1853 -0.1585 0.0614 0.6475 0.0133 0.0785 0.0450 0.6800 0.1605 0.0664 0.1951 0.8756

然后,使用适当的括号,并使用涉及对角矩阵的反斜杠,找到最小规范解决方案是单衬垫,。

y = V *(年代\ (U * b))
Y = 0.0644 0.0655 0.1261 -0.2161 0.0475 -0.1481-0.2034 0.1164 -0.1232 0.0612

问题

关于宽敞的系统,有很多事情我不知道。

1。

有界限吗常态(x)/ rang(y)

2。

条件数量一个关于任何规范可以通过

COND(A)= MAX(符号(a * x)/ rang(x))/ min(符号(a * x)/ narm(x))

我们知道对于2-范数这是奇异值之比。1-norm和info -norm呢?我们怎么计算这个呢?

3.

剩余和反斜杠计算的解决方案的错误可以证明是什么?我怀疑残差很小,但是解决方案不是唯一的错误是什么?

4.

这个分布是什么?

kmax = 10000;Kappa = Zeros(kmax,1);k = 1:kmax A = randi(18,m,n) - 9;k (k) =电导率(一个);结束直方图(Kappa)标题(的电导率(A)”) ax =轴;文本(0.7 * ax (2), 0.8 * ax (4), sprintf ('m =%2d,n =%2d',m,n))




MATLAB®R2021a发布

|

评论

要发表评论,请点击这里登录您的MathWorks帐户或创建新的。