白在前面两种计算方法中,α的取值都与x1的符号有关。但在某些应用 中,我们需要确保α非负,此时可以将这两种方法结合起来使用,即: x1-0, if sign(1)<0 U1= -(吃++…+) otherwise T1+a 无论怎样选取a,我们都有H=I-vu*其中 2 2 2 1 B= (c1-a)2+x号+…+x 2a2-2ax1 http://math.ecnu.edu.cn/~jypan 16/54
✍ 在前面两种计算方法中,α 的取值都与 x1 的符号有关。但在某些应用 中,我们需要 确保 α 非负,此时可以将这两种方法结合起来使用,即: v1 = x1 − α, if sign(x1) < 0 −(x 2 2 + x 2 3 + · · · + x 2 n ) x1 + α , otherwise 无论怎样选取 α, 我们都有 H = I − βvv∗ 其中 β = 2 v ∗v = 2 (x1 − α) 2 + x 2 2 + · · · + x 2 n = 2 2α2 − 2αx1 = − 1 αv1 . http://math.ecnu.edu.cn/~jypan 16/54
秦 算法2.1计算Householder向量 1:function [B,v=house(z) 2:n=length(x)(here length(x)denotes the dimension of z) 3:0=x+x+·+x品,v=x 4:ifo =0 then 5: if 1 <0 then v1 =2r1,B=2/v 6: else v1=0,B=0 7: end if 8:else 9: a=vri+a a=llzl2 10: if t1 <0 then U1=T1-0 11: else v1=-0/(I1 +a) 12: end if 13: B=2/(+o) 14:end if 总运算量大约为2(乘法+加法),且具有很好的数值稳定性。 http://math.ecnu.edu.cn/~jypan 17/54
算法 2.1 计算 Householder 向量 1: function [β, v] = house(x) 2: n = length(x) (here length(x) denotes the dimension of x) 3: σ = x 2 2 + x 2 3 + · · · + x 2 n , v = x 4: if σ = 0 then 5: if x1 < 0 then v1 = 2x1, β = 2/v 2 1 6: else v1 = 0, β = 0 7: end if 8: else 9: α = √ x 2 1 + σ % α = ∥x∥2 10: if x1 < 0 then v1 = x1 − α 11: else v1 = −σ/(x1 + α) 12: end if 13: β = 2/(v 2 1 + σ) 14: end if ✍ 总运算量大约为 2n (乘法 + 加法), 且具有很好的数值稳定性。 http://math.ecnu.edu.cn/~jypan 17/54
白在实际计算时,我们可以将向量v单位化,使得1=1.这样,我们就无 需为v另外分配空间,而是将v(2:n)存放在x(2:n)中,因为变换后的向 量x除第一个分量外,其它都为零 为了避免可能产生的溢出,可事先将x单位化,即令x=x/x2 里年面■想原质道里自自出面复复出■发复指■a加单身题■想自指重■■■想n■■面数a盖自能■务 思考:这里要求卡0,那么什么情况下=0: 专细版新面能服面面组短版数重量版推器能制面面版板细板应面能新国面能面证服板短面位围能能能制提面新量细板量湖版量面细服版组益组细短面服路量能面指多 http://math.ecnu.edu.cn/~jypan 18/54
✍ 在实际计算时, 我们可以将向量 v 单位化, 使得 v1 = 1. 这样, 我们就无 需为 v 另外分配空间, 而是将 v(2:n) 存放在 x(2:n) 中, 因为变换后的向 量 x 除第一个分量外, 其它都为零. ✍ 为了避免可能产生的溢出, 可事先将 x 单位化, 即令 x = x/∥x∥2. 思考:这里要求 v1 ̸= 0, 那么什么情况下 v1 = 0? http://math.ecnu.edu.cn/~jypan 18/54