应用粒子群优化解线性方程组

20视图(30天)
你好,我有一个线性方程组Ax = b矩阵符号形式,是27 * 27,b向量是27 * 1,我们想解出x向量的27个未知数(我。e, 27 * 1)。任何这样的帮助使用算法来解决系统由于条件数很高所以解决使用x =发票(A) * b是一个糟糕的解决方案。
2的评论
约翰D 'Errico
约翰D 'Errico 2018年2月14日
算法只是一个愚蠢的试穿这件。疯了。马特说,使用pinv。

登录置评。

接受的答案

约翰D 'Errico
约翰D 'Errico 2018年2月14日
编辑:约翰D 'Errico 2018年2月14日
好的。现在我有一些空闲时间来回答这个问题。
使用算法来解决单一问题有点傻。对不起,但这是。是的,发票失败。但是你不应该用发票来解决这个问题。发票是一个贫穷的选择一般来说,反斜杠首选的解决方案,因此
x = \ b;
然而,当一个数值奇异反斜杠也会有问题。在这种情况下,是没有好的解决方法,虽然有些很明显比其他人更好或更糟。任何选择都有问题。Pinv是个不错的选择,一些时间。我说的一些时间,因为pinv并不完美。尽管pinv不会积极失败的反斜杠或发票,解决的办法不是独一无二的。一个例子是一个很好的方式来看看会发生些什么。
=魔法(4)
一个=
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
等级(一个)
ans =
3
所以一个是单数。正如你所看到的,我们接近无限的垃圾当我们使用发票在一个随机的右手边。
发票(一)*兰特(4,1)
警告:矩阵是接近奇异或严重了。结果可能是不准确的。RCOND =1.306145 e-17。
ans =
1.3173 e + 14
3.952 e + 14
-3.952 e + 14
-1.3173 e + 14
我们知道的和行4 x4的幻方都是34。所以它应该是正确的
即使在情况b创建我们已知的解决方案,有问题。
b = repmat (34 4 1) + randn e-16 (4,1) * 1
b =
34
34
34
34
发票(一)* b
警告:矩阵是接近奇异或严重了。结果可能是不准确的。RCOND =1.306145 e-17。
ans =
1
6
2
0
b = repmat (34 4 1) + randn e-14 (4,1) * 1
b =
34
34
34
34
发票(一)* b
警告:矩阵是接近奇异或严重了。结果可能是不准确的。RCOND =1.306145 e-17。
ans =
5
18
-14年
4
所以,改变了右手边的一个小数量的随机模糊足以产生一个完全不同的解决方案。
看到pinv更稳定。
pinv b (A) *
ans =
1
1
1
1
但是从来没有一个好的理由使用算法。如果你坚持使用一个迭代算法,虽然lsqr是个不错的选择。
lsqr (A, b)
lsqr聚集在迭代1与相对剩余3 e-16解决方案。
ans =
1
1
1
1
LSQR通常会到达相同的解决方案,pinv,将产生,当面对一个单一的系统。
那么为什么PSO是一个坏主意吗?算法是迭代的工具,不会产生快速的结果。也不会产生结果,有大量的数字结果。作为一个迭代计划基于随机方法,它将产生不同的结果每一次你试试。在问题没有独特的结果在奇异矩阵的情况下,将会产生一个有效的随机的结果。因此,算法只是一个坏主意,尤其是当你有两个很好的解决方案,将健壮的和一致的奇异问题。金宝搏官方网站
最后,我之前说过,PINV并不是一个完美的解决方案。因为我知道有人会问我澄清声明,我不妨防止明显的请求。
1。PINV通常会低于其他方法。LSQR奇异问题通常会产生相同的解决方案,但它是一个迭代的方法,所以也可能会慢,你有收敛问题。
2。PINV产生一个最低标准的解决方案。通常我认为,在一个奇异的问题,你最好被告知有一个严重的问题,而不是给你一个答案,看起来是合理的。如果你使用反斜杠,被告知问题是单数,那么你总是可以回到和使用pinv,当这是一个不错的选择。理解为什么有一个问题更重要,因为大部分时间当你试图解决这样一个单一的系统,有一个重要原因你应该从源头上解决问题,在你尝试解决由此产生的系统。
所以总是把pinv问题可以说是一个坏主意。没有警告消息,但那些警告消息是重要的在这种情况下!
3所示。PINV产生一个最低标准的解决方案。但是最低标准可能并不总是最好的选择,所有无穷多一样出色的解决方案。金宝搏官方网站在某些情况下,一个解决方案,有一个最大数量的零是用户的需求。一个观点是,知道为什么你可能会选择使用pinv是很重要的,这可以归结为理解pinv和其背后的线性代数。
4所示。PINV并不适用于稀疏矩阵,尽管LSQR将生存。
一个= sprand (5 5。2)
一个=
0.57466 (4,2)
0.90085 (1、3)
0.84518 (5,3)
0.73864 (5,5)
b =兰德(5、1);
pinv b (A) *
错误利用奇异值分解
圣言会不支持稀疏矩阵。金宝app利用奇异值分解计算奇异值的子集和向量的稀疏矩阵。
错误在pinv(第18行)
(U, V) =圣言(,“经济学”);
x = lsqr (A, b)
lsqr聚集在迭代3与相对剩余0.64解决方案。
x =
0
0.14527
0.65048
0
0.10315
当你清楚地看到在奇异矩阵a, pinv失败。发票和反斜杠也已经有些不高兴。但lsqr并产生一个解决方案。因为是奇异的,解决的办法不是一个伟大的人。
(* x、b)
ans =
0.58599 - 0.58599
0 0.24673
0 0.66642
0.083483 - 0.083483
0.62596 - 0.62596
正如我之前所说的,没有解决方案是完美的,当你有一个单一的问题。
18岁的评论

登录置评。

更多的答案(0)

类别

找到更多的在线性代数帮助中心文件交换

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!