道歉,gram - schmidt

这是我以前的后续跟进,几天前。一个细心的读者,Bruno Bazzano贡献评论指出他所称的“小错误”在我的经典gram - schmidt算法的代码。它不仅仅是一个小错误,这是一个严重的错误。我必须正确的代码,然后做更仔细的实验和重述我的结论。

内容

经典gram - schmidt

布鲁诺注意到在我的内循环经典gram - schmidt函数表达式问(k - 1)应该是问(:1:k - 1)。我已经把两个字符”,1:”。我需要使正交化对所有前面的向量,而不仅仅是其中之一。这是修正后的代码。

类型gs
函数(Q, R)古典gram - schmidt = gs (X) %。(Q, R) = gs (X);% g·w·斯图尔特“矩阵算法,第一卷”,暹罗,1998年。(氮、磷)= (X)大小;Q = 0(氮、磷);R = 0 (p, p);k = 1: p Q (:, k) = X (:, k);如果k ~ = 1 Q R (1: k - 1, k) = (:, 1: k - 1) * Q (:, k);Q (:, k) = Q: k - Q (:, 1: k - 1) * R (1: k - 1 k);结束R (k, k) =规范(Q (:, k)); Q(:,k) = Q(:,k)/R(k,k); end end

发布代码

顺便说一下,这指出发布代码的重要性。

比较

对各种矩阵X再次,让我们看看这三个算法执行两个任务,准确性和正交性。有多亲密Q * RX吗?有多近问‘*问。我已经修改了比较在上周的文章返回功能ortherr

良好的条件

首先,试井条件矩阵,一个奇怪的秩序的幻方。

n = 7;X =魔法(n)
X = 30 39 48 1 10 19 28 38 47 7 9 18 27 29 46 6 8 17 26 35 37 5 14 16 25 34 36 45 13 15 24 33 42 44 4 21 23 32 41 43 3 12 22日31日40 49 2 11 20

检查它的状态。

kappa = conde (X)
k = 8.5681

做比较。

比较(X);
经典修改户主QR错误1.52 e-16 6.09 e-17 5.68 e-16正交1.87 e15汽油1.53 e15汽油1.96 e15汽油

正交性的价值经典列是目前凑整的水平。所有三个算法准确性和正交性在这个矩阵。

糟糕的希尔伯特矩阵

我想做两个实验与矩阵条件很差,但不是单一的。首先,希尔伯特矩阵增加订单。

1 k = 0(8日);ortherr = 0 (8, 3);n = 1:8 X = hilb (n);卡帕(n) = conde (X);:ortherr (n) = (X)进行比较;结束

情节与对数刻度结果。

semilogy ([ortherr eps * kappa eps * kappa。^ 2],“啊——”)轴([0 9 10 ^(-16)10 ^ 5))({传奇“gs”,“出来”,“房子”,“eps * kappa”,“eps * kappa ^ 2”},“位置”,“西北”)标题(正交性的损失)包含(“n”)

GS的正交性的损失比其他两个和大致变化条件数的平方,卡巴。毫克的失去正交性变化卡巴第一个力量。户主与正交性。

条件稳定的幻方

另一组非奇异的,但是条件很差,生成矩阵,通过添加一个小值的对角幻方的8

M =魔法(8);我眼睛= (8);k = 1:8 s = 10 ^ (- k);X = M + s *我;k (k) = conde (X);:ortherr (k) = (X)进行比较;结束

情节与对数刻度结果。

semilogy ([ortherr eps * kappa eps * kappa。^ 2],“啊——”)轴([0 9 10 ^(-16)10 ^ 5))({传奇“gs”,“出来”,“房子”,“eps * kappa”,“eps * kappa ^ 2”},“位置”,“西北”)标题(正交性的损失)包含(“log10 (1 / s)”)

GS不同的正交性kappa ^ 2,出来不同的正交性卡巴

单数

最后,一个完全奇异矩阵,幻方的秩序。

n = 8;X =魔法(n);比较(X);
经典修改户主QR错误4.78 e-17 8.54 e-17 4.85 e-16正交5.17 1.30 2.16 e + e + 00 00 e15汽油

这三种算法与准确性。两gram - schmidt失败完全正交性。房主还是与正交性。

结论

所有这三个算法提供R复制数据,做一个好工作X,这是

  • *R总是接近X对这三种算法。

另一方面,他们的行为产生正交时截然不同。

  • 经典gram - schmidt。损失时可以比其他两个正交性X是严重的。
  • gram - schmidt修改。问‘*问不同的条件X时,不能完全X是单数。
  • 户主三角化。问‘*问总是接近

引用

g·w·斯图尔特,矩阵算法:卷1:基本分解第十九,暹罗,+ 458,1998。< http://epubs.siam.org/doi/book/10.1137/1.9781611971408>

Ake Bjorck,最小二乘问题的数值方法暹罗,第十七章+ 407,1996。< http://epubs.siam.org/doi/book/10.1137/1.9781611971484>




发表与MATLAB®R2016a

|

评论

留下你的评论,请点击在这里MathWorks账户登录或创建一个新的。