# gschur

一般化Schur分解 (古い関数).

## 呼び出し手順

    [As,Es]=gschur(A,E)
                [As,Es,Q,Z]=gschur(A,E)
                [As,Es,Z,dim] = gschur(A,E,flag)
                [As,Es,Z,dim]= gschur(A,E,extern)

## 説明

この関数は古い関数であり, `schur`関数に統合されています. 多くの場合, `gschur`関数は以前と同様に動作しますが, 将来のリリースでは削除される予定です.

最初の3つの構文は以下のように置き換えることができます

    [As,Es]=schur(A,E)
    [As,Es,Q,Z]=schur(A,E);Q=Q' //NOTE THE TRANPOSITION HERE
    [As,Es,Z,dim] = schur(A,E,flag)

最後の構文はさらに若干の調整が必要です:

もし,

  extern が　Scilab関数の場合, 新しい呼び出し手順は, Nextern を以下のように定義するとき, `[As,Es,Z,dim]= schur(A,E,Nextern)` となります:

      function t=Nextern(R)
      if R(2)==0 then
        t=extern([1,R(1),R(3)])==1
      else
        c=(R(1)+%i*R(2))/R(3)
        t=extern([2,real(c+c'),real(c*c')])==1
      end
      endfunction

if

  extern は,Fortran または Cで記述された外部関数の名前です. 新しい呼び出し手順は, nextern を以下のように定義すると `[As,Es,Z,dim]= schur(A,E,'nextern')` のようになります:

    logical function nextern(ar,ai,beta)
    double precision ar,ai,beta
    integer r,extern
    if (ai.eq.0.0d0) then
      r=extern(1,ar,beta,0.0d0,0.0d0)
    else
      r=extern(2,0.0d0,0.0d0,2.0d0*ar,ar*ar+ai*ai)
    endif
    nextern=r.eq.1
    end

## 参照

- external
- schur