zoukankan      html  css  js  c++  java
  • Givens变换

    摘抄自《数值线性代数(徐树方)》

    Givens变换是一种将n维向量x在第(i,k)两个维度确定的坐标平面内进行旋转(从而将其中一个分量化0)的变换,因此它又叫平面旋转变换。

    Householder变换将一个向量中的若干个分量化0相比,Givens变换将向量的其中一个分量化0。

    本篇先介绍Givens变换的定义及其性质,再推导一种用于求Givens变换的数值化方法

    一、Givens变换的定义及性质

     定义:Givens变换有以下形式:

            公式1

    其中:c=cosθ,s=sinθ ,易证G(i,k,θ)是一个正交矩阵。

    公式1看起来有些复杂,但其实可以注意到G(i,k,θ)的构成十分简单:将n×n的单位矩阵I在(i,i),(i,k),(k,i),(k,k)位置的元素替换成c,s,-s,c,从数值上看,G(i,k,θ)x的结果y

    [left{ egin{array}{l}
    {y_i} = c{x_i} + s{x_k}\
    {y_k} = - s{x_i} + c{x_k}\
    {y_j} = {x_j},j e i,k
    end{array} ight.]

    从几何上看,G(i,k,θ)的效果实际上是将向量x沿k→i的角度旋转了θ角度。

    若要yk=0,只需取:

    $c = frac{{{x_i}}}{{sqrt {x_i^2 + x_k^2} }},s = frac{{{x_k}}}{{sqrt {x_i^2 + x_k^2} }}$  公式2

    为了避免溢出,实际上并不是按照公式2计算c和s,而是按照以下公式:

    [left[ {egin{array}{*{20}{c}}
    c&s\
    { - s}&c
    end{array}} ight]left[ egin{array}{l}
    a\
    b
    end{array} ight] = left[ egin{array}{l}
    r\
    0
    end{array} ight]]

    二、用于计算Givens变换的算法

     

  • 相关阅读:
    骨灰级程序员20条编程经验
    js常用正则表达式
    css样式大全(整理版)
    ASP.NET中常用的26个优化性能方法
    C# 中的委托和事件
    Page的ResolveClientUrl与ResolveUrl读取路径
    层设定固定高度,内容超过高度,自动延伸
    Catalan数(卡塔兰数)
    称球问题
    zabbix分布式监控系统安装配置
  • 原文地址:https://www.cnblogs.com/reasno/p/9643529.html
Copyright © 2011-2022 走看看