Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

分解

线形系解くための分解分解

说明

分解は利用行列分解(lu、ldl,,Qrなど)da =分解(一个)の计算后に轻拍を呼び出すと,一个\ \bと同じをが,通常はに速くなります。分解オブジェクトは解求める必要あるあるてます。。これは,,系数行列の分解をを复数复数回回回実行

分解オブジェクトdaには,元の係数行列一个に使用する同じ演算子の多くを使用できます。

  • 複素共役転置da'

  • 否定-da

  • c*dAまたはda/cを使用する、スカラーとの乗算またはスカラーによる除算。

  • X=轻拍を使用する、線形系 Ax = b の求解。

  • X=b/dAを使用,系xa = bのの。。。

作成

说明

da=分解(一个は行列一个の分解ますこれこれ使用して系をより的に解く解くことができことができますますます。。分解タイプタイプ,,入力行列行列行列ののプロパティにに

da=分解(一个,,,,typeは実行する分解のタイプを指定します。type'qr'“鳕鱼”'lu''ldl''chol'“三角形”“排列三角形”“乐队”'hessenberg''对角线'にすることができ。

da=分解(一个,,,,type,,,,triangularFlagは,一个の上または下部分のみをにすることを指定します。triangularFlagには'upper'または'降低'を指定ますこの构文场合,分解はは'ldl''chol'または“三角形”でなければなりん。

da=分解(___,,,,名称,价值は,のの构文构文ととつつつの名称,价值のペアの引数を使用して、追加オプションを指定します。たとえば、da =分解(a,'checkcondition',false)は,轻拍の解を求めているときに一个の条件に基づく警告をスローしないことを指定します。

入力引数

すべて展開する

系数行列。系数行列は,線形方程式系の左辺に Ax = b として、右辺に xA = b として現れます。

データ型:single|double
复素数サポート:あり

分解タイプ。以下の表にあるオプションのいずれかを指定します。

これらのオプションは、すべての系数行列机能します。

一个の行列の分解

メモ

'汽车'(既定)

N/A

系数のに行列のタイプの选択。の选択方法の详细详细は,,,mldivideアルゴリズム节をしてください。

'qr'

一个 p = r

はユニタリ行列、rは上三角行列、pは置换行列。

问r分解では、最小二乗解が得られます。

type'qr'の場合、一个'\Bまたはb/aを解くことはできません。このような形式の問題には、代わりに“鳕鱼”を使用してください。

“鳕鱼”

一个 = r z *

rは上三角で,zはいずれも直交列をもちます。

完全直交は最小ノルムの二乘解が得られ。

正方系数行列もこれらのを使用できます。

一个の行列の分解

メモ

'lu'

密行列:

p 一个 = l

lは下三角行列、は上三角行列、pは置换行列。

スパース::

p (( r \ \ 一个 = l

pは置换行列,rは対角スケーリングです。

'ldl'

密行列:

p * 一个 p = l d l *

lは1の対角要素をもつ下三角行列、dは対角行列、pは置换行列。

スパース::

p * s 一个 s p = l d l *

sはスケーリング行列です。

一个は対称でなければなりません。

'chol'

密行列:

一个 = l l *

lは下三角行列です。

スパース::

一个 = p l l * p *

pは置换行列。

一个は対称正定値でなければなりません。

“三角形”

一个 = t

tは三角行列。

一个は三角でなけれなりません。

“排列三角形”

一个 = p t *

tは三角行列、pはいずれ置换行列です。

一个は三角行列の置換でなければなりません。

“乐队”

一个 = p * l

pは置换行列,lはいずれも帯行列です。

バンド幅小さいに対して效果的です详细については,bandwidthを参照してください。

'hessenberg'

一个 = p * l

pは置换行列,lは帯行列,は上三角行列です。

一个の1番目の下対角要素より下にゼロが含まれなければなりません。

'对角线'

一个 = d

dは対角行列です。

一个は対角行列でなければなりません。

系数行列の上三角部分または下三角部分のみを使用するためのフラグ。'upper'または'降低'のいずれかとして指定します。このオプションは、“三角形”'chol'および'ldl'の分解タイプをサポートします。

  • “三角形”- 上三角三角行列のが行列にされている场合は,triangularFlagを使用て行列をををつのみつのみ指定し。。

  • 'chol'および'ldl'-triangularFlagを使用してほぼ対称の係数行列の対称化を回避します。

名前と値のペアの引数

オプションの名称,价值の引数ペアをコンマ区切りで指定します。Nameは引数名で、价值は対応するです。Nameは引用符で囲まなければなりません。Name1,Value1,...,NameN,ValueNのよう复数名前とのペアのをの顺序で指定でき。。

例:da =分解(一个,,,,'qr',,,,'checkcondition',,,,错误的)一个の问r分解を実行し、係数行列が線形系の求解に使用されるときにその条件に関する警告をオフにします。
一般的なパラメーター

すべて展開する

系数行列条件チェックの。。'checkcondition'と逻辑1((真的)または逻辑0((错误的)で構成されるコンマ区切りのペアとして指定します。CheckCondition真的で系数が条件またはランクである场合,mldivide(\)またはmrdivide((/)を使用线形ので警告がされます。

データ型:逻辑

ランクの許容誤差。非負のスカラーとして指定します。許容誤差を指定すると、解が係数行列のランダム ノイズの影響を受けにくくなります。

分解一个のランクを、QR 分解[Q,R,p] = qr(A,0)の行列rにおいて絶対値が托尔より大きい要素数として计算し。。一个のランクがkの場合、一个の低ランク近似は、の最初のk列にrの最初のk行をことでられます。误差変更変更とと,一个の低近似に影响。。

メモ

このオプションは、'Type''qr'または“鳕鱼”である场合,または'Type''汽车'でかつ一个が方形である場合にのみ適用されます。それ以外の場合、このオプションは無視されます。

スパース行列のパラメーター

すべて展開する

バンド密度の値。[0 1]の范囲スカラー値指定します。“束缚”の値,系のを求めるときにmldivide(\)またはmrdivide((/)バンドソルバーするために,のの系数行列がが密度をを指定指定しししますます。行列行列ののバンドバンド密度密度が,,指定さされたバンド密度密度も

バンド密度は、(バンドの非ゼロ要素の数) / (バンドの要素の数) で定義されます。値1.0は,バンド ソルバーを使用しないことを示します。

ldl分解の许容误差区间区间[0 0.5]の値します。ピボット误差により小さな値を使用と,,因子因子分解分解分解のの时间がが短くなりなり,,要素要素数がが少なくなるなる可能可能可能性ありありありあり

このピボット許容誤差は、ldlが実スパース行列に使用するものと同じです。

lu分解の误差スカラーまたはベクトル指定し。。ベクトルのの最初最初ののの要素を変更するするににはは,,スカラースカラー値をを指定ししします両方両方,ピボットより小さな小さなにと,,,,,が因子スパースにになるなる倾向倾向倾向がありますが,解解がが不正确にになる可能可能可能ありあり。。。。。。。。。。。得られるありが,は総处理と使用量が増加し。。

このピボット許容誤差は、がスパース行列に使用するものと同じです。

プロパティ

すべて展開する

このプロパティは読み取り専用です。

系数行列のサイズ。2 要素の行ベクトルとして返されます。

データ型:double

このプロパティは読み取り専用です。

分解タイプ。'qr'“鳕鱼”'lu''ldl''chol'“三角形”“排列三角形”“乐队”'hessenberg'または'对角线'として返されます。

データ型:char

系数行列条件チェックの切り替え。。1((真的)または逻辑0((错误的)のいずれと指定します。CheckCondition真的で系数が条件またはランクである场合,mldivide(\)またはmrdivide((/)を使用线形ので警告がされます。

データ型:逻辑

このプロパティは読み取り専用です。

系数行列の型。'双倍的'または'single'のいずれとして返され。。

データ型:char

このプロパティは読み取り専用です。

系数行列复素役役であることをを示すインジケーターインジケーター。。。1((真的)または逻辑0((错误的)のいずれとして返され。。このインジケーターは、係数行列から作成されたすべての分解オブジェクトに対して既定で错误的です。ただし,dA’\ bなどの式で分解オブジェクトにCTRANSPOSE演算子をする场合,はは真的です。その場合、da'daと同じ分解オブジェクトですが,IsConjugateTransposedの値は真的です。

データ型:逻辑

このプロパティは読み取り専用です。

系数行列実数であることインジケーターインジケーター。逻辑1((真的)または逻辑0((错误的)のいずれとして返され。。値错误的は,行列复素が含まれるを示します。

データ型:逻辑

このプロパティは読み取り専用です。

系数行列スパースことを示す示すインジケーターインジケーター。1((真的)または逻辑0((错误的)のいずれとして返され。。

データ型:逻辑

このプロパティは読み取り専用です。

系数行列スケール系。スカラーとしてれ。。定定値1は系数行列がスケーリングされていないことを示します。ただし、分解オブジェクトをで乘算除算すると,比例因子の値は変更されます。たとえば、3*dadaと等価の分解オブジェクトですがその比例因子値は3です。

データ型:double
复素数サポート:あり

オブジェクト关数

分解オブジェクトに対して使用できる基本関数と演算子は、線形方程式系の求解に関連しています。分解タイプが'qr'である场合,一个'\Bまたはb/aを解くことはできません。このような形式の問題には、代わりに“鳕鱼”を使用してください。

CTRANSPOSE 複素共役転置
mldivide xに対する方程式ax = bの求解
mrdivide Xに対する線形方程式 xA = B の求解
isIllConditioned 行列が悪条件かどうかの判別

分解オブジェクトのなる行列条件またはランクチェックでき。异なるアルゴリズムがが使用ささ,,,分解オブジェクトに対して关数使用た结果,行列同じ关数关数を直接使用した场合场合とと异なることがが

  • 1入力形式の秩((da)のみがされて。。

  • 分解タイプは'qr'または“鳕鱼”でなければなりん。

  • ランクの値は、rankToleranceの(指定し场合)ににてます。。

rcond
  • バックスラッシュ\ \が警告するどうか决定ためにするものと同じ条件条件チェックチェックを実行実行

  • 'qr'“鳕鱼”を除くすべての分解タイプをサポートします。

すべて折りたたむ

分解オブジェクトをするで,の右辺をもつ 斧头 = b の求解の効率がどのように向上するかを示します。

"逆反復法" は、多数の右辺をもつ線形系の解を求める反復固有値アルゴリズムです。これは、対応する固有ベクトルの推定値から始めて、行列の固有値を反復的に計算する方法です。各反復でX=一个\ \Xを計算してから、そのノルムでXをスケーリングします。

スパース行列一个とランダムな開始ベクトルX1およびX2を作成し。

n = 1e3; rngdefault%可再现性A = Sprandn(N,N,0.2) + Speye(n);x1 = randn(n,1);x2 = x1;

バックスをして逆反复法アルゴリズムの反复反复をををを回回回适用,,一个の固有を计算し。。

抽动为了2 = 1:10 0 x1 = \ x1;x1 = x1 /规范(x1);结尾TOC
Elapsed time is 12.712131 seconds.
lambda = x1'*a*x1
lambda = -0.6707

次に、分解オブジェクトをし同じ问题を解き。。

抽动da =分解(一个);为了ii = 1:100 x2 = da \ x2;x2 = x2 / norm(x2);结尾TOC
Elapsed time is 1.210570 seconds.
lambda = x2'*a*x2
lambda = -0.6707

各反復で行列一个を因子分解する必要がないため、アルゴリズムのパフォーマンスは大幅に向上します。また、バックスラッシュ アルゴリズムは为了ループの前に一个のlu分解をすること改善できますが,分解オブジェクトで复雑コードをせず同等なの改善を実现できます。

分解タイプを選択して、入力行列に基づく既定の自動選択をオーバーライドします。

系数行列し,タイプ既定のを使用て,その行列行列を分解分解。。。

a =ones(3); dA = decomposition(A)
da =属性分解:矩阵size:[3 3]类型:'ldl'显示所有属性

右辺に 1 のベクトルを使用して、線形系を解きます。

b =一个(3,1);X=轻拍
Warning: Matrix is singular to working precision.
X=3×1南南南

既定の'ldl'メソッドの代わりに'qr'メソッドを使用する分解タイプを指定します。これにより、バックスラッシュ (\) はのベクトルを返さずに、問題の最小二乗解を求めます。

da_qr = decomposition(A,'qr'
da_qr = decomposition with properties: MatrixSize: [3 3] Type: 'qr' Show all properties
X=da_qr\b
警告:等级不足,等级= 1,TOL = 1.153778E-15。
X=3×11.0000 0 0

'upper'を指定して、分解で入力行列の上三角部分のみを使用します。

系数をし。上部分のみを使用してのの三角三角分解分解ををを作成作成します。。このこのオプションオプションはは,,上上三角三角行列行列とととと下三角の両方両方両方両方。

a =randi([0 5],10)
a =10×104 0 3 4 2 1 4 5 2 0 5 5 0 0 2 4 1 1 4 0 0 5 5 1 4 3 3 4 3 3 5 2 5 0 4 0 4 1 3 4 3 4 4 0 1 0 5 5 5 5 0 0 4 4 2 2 5 2 1 0 1 2 4 4 2 5 3 1 4 3 3 5 2 1 3 2 0 1 4 2 5 4 3 5 4 3 0 3 2 0 5 5 1 0 4 1 1 2 3 2
da =分解(一个,,,,“三角形”,,,,'upper'
da =属性分解:矩阵size:[10 10]类型:'三角形'显示所有属性

'checkcondition'の名前と値のペアを使用して、分解を使用した線形系の求解時に係数行列の条件に基づく警告をオフにします。

悪条件行列作成します。行列の最初ののののの列列を平均しししててててててて番目番目番目ののを生成

a = [1 2 1.5;3 4 3.5;5 6 5.5]
a =3×31.00002.0000 1.5000 3.0000 4.0000 3.5000 5.0000 6.0000 5.5000

右辺に 1 のベクトルを使用して線形系 斧头 = b を解きます。mldivideは系数条件付け关する警告をし。。。

b =一个(3,1);x = a \ b
警告:矩阵接近奇异或缩放。结果可能不准确。rcond = 8.326673E-18。
X=3×1-0.0556 1.9444 -1.8889

次に,行列の分解オブジェクトを作成して同じ線形系を解きます。mldivideが系数のをチェックしない,,'checkcondition'错误的に指定ます同じ解返されますが,mldivideは警告メッセージを表示しません。

da =分解(一个,,,,'checkcondition',,,,错误的); x = dA\b
X=3×1-0.0556 1.9444 -1.8889

关数isIllConditionedを使用し,分解オブジェクトがのに基づいているかをチェックし。。

tf = isillconcitioned(da)
tf =逻辑1

拡張機能

R2017Bで导入