このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
pageinv
説明
例
3 次元配列のページの逆行列
3 行 3 列の複数の行列を連結して 3×3×3 の配列を作成します。
X = cat(3,magic(3),hilb(3),pascal(3))
X = X(:,:,1) = 8 1 6 3 5 7 4 9 2 X(:,:,2) = 1.0000 0.5000 0.3333 0.5000 0.3333 0.2500 0.3333 0.2500 0.2000 X(:,:,3) = 1 1 1 1 2 3 1 3 6
各配列ページの逆行列を計算します。
Y = pageinv(X)
Y = Y(:,:,1) = 0.1472 -0.1444 0.0639 -0.0611 0.0222 0.1056 -0.0194 0.1889 -0.1028 Y(:,:,2) = 9.0000 -36.0000 30.0000 -36.0000 192.0000 -180.0000 30.0000 -180.0000 180.0000 Y(:,:,3) = 3.0000 -3.0000 1.0000 -3.0000 5.0000 -2.0000 1.0000 -2.0000 1.0000
i
番目のページの出力 Y(:,:,i)
は逆行列 Y(:,:,i) = inv(X(:,:,i))
を計算することで求められます。
配列ページの条件数の逆数をチェック
最初のページが魔方陣行列で 2 番目のページがヒルベルト行列である 10×10×2 の配列を作成します。
X = cat(3,magic(10),hilb(10))
X = X(:,:,1) = 92 99 1 8 15 67 74 51 58 40 98 80 7 14 16 73 55 57 64 41 4 81 88 20 22 54 56 63 70 47 85 87 19 21 3 60 62 69 71 28 86 93 25 2 9 61 68 75 52 34 17 24 76 83 90 42 49 26 33 65 23 5 82 89 91 48 30 32 39 66 79 6 13 95 97 29 31 38 45 72 10 12 94 96 78 35 37 44 46 53 11 18 100 77 84 36 43 50 27 59 X(:,:,2) = 1.0000 0.5000 0.3333 0.2500 0.2000 0.1667 0.1429 0.1250 0.1111 0.1000 0.5000 0.3333 0.2500 0.2000 0.1667 0.1429 0.1250 0.1111 0.1000 0.0909 0.3333 0.2500 0.2000 0.1667 0.1429 0.1250 0.1111 0.1000 0.0909 0.0833 0.2500 0.2000 0.1667 0.1429 0.1250 0.1111 0.1000 0.0909 0.0833 0.0769 0.2000 0.1667 0.1429 0.1250 0.1111 0.1000 0.0909 0.0833 0.0769 0.0714 0.1667 0.1429 0.1250 0.1111 0.1000 0.0909 0.0833 0.0769 0.0714 0.0667 0.1429 0.1250 0.1111 0.1000 0.0909 0.0833 0.0769 0.0714 0.0667 0.0625 0.1250 0.1111 0.1000 0.0909 0.0833 0.0769 0.0714 0.0667 0.0625 0.0588 0.1111 0.1000 0.0909 0.0833 0.0769 0.0714 0.0667 0.0625 0.0588 0.0556 0.1000 0.0909 0.0833 0.0769 0.0714 0.0667 0.0625 0.0588 0.0556 0.0526
各配列ページの逆行列を計算します。2 つの出力を指定して、逆行列を求める各行列の条件数の逆数も返します。
[Y,RC] = pageinv(X); RC
RC = RC(:,:,1) = 3.0812e-18 RC(:,:,2) = 2.8285e-14
条件数の逆数を eps
と比較します。結果は魔方陣行列が悪条件であることを示しており、そのページの逆演算の結果は信頼できません。
RC < eps
ans = 1x1x2 logical array
ans(:,:,1) =
1
ans(:,:,2) =
0
X(:,:,i)*Y(:,:,i)
と単位行列の間の残差ノルムを計算して結果をチェックします。最初のページの残差ノルムが大きいことから、そのページの逆行列が正確でないことがわかります。
norm(X(:,:,1)*Y(:,:,1) - eye(10))
ans = 23.2199
norm(X(:,:,2)*Y(:,:,2) - eye(10))
ans = 1.5594e-04
入力引数
X
— 入力配列
行列 | 多次元配列
入力配列。行列または多次元配列として指定します。
データ型: single
| double
複素数のサポート: あり
出力引数
Y
— ページ単位の逆行列
多次元配列
ページ単位の逆行列。多次元配列として返されます。Y
のサイズとデータ型は X
と同じです。各ページの Y(:,:,i,...)
は X(:,:,i,...)
の逆行列です。
RC
— 条件数の逆数
多次元配列
条件数の逆数。X
と同じ数のページをもつ多次元配列として返されます。RC(1,1,i)
の値は X(:,:,i)
の条件数の逆数です。RC(1,1,i) < eps
の場合、inv(X(:,:,i))
の呼び出しで X(:,:,i)
が悪条件であることを示す警告が返されます。ただし、pageinv
は悪条件の入力に対して警告を発行しません。
詳細
配列ページ
pageinv
のようなページ単位関数は、多次元配列に配置された 2 次元行列を処理します。たとえば 3-D 配列では、配列の 3 番目の次元にある要素は、本のページのようにお互いの上に積み重なるため、一般に "ページ" と呼ばれています。各ページは関数によって処理される行列です。
2 次元行列の集合から、4 次元配列または 5 次元配列のような、より高い次元の配列も作成できます。この場合でも、pageinv
は配列の基本単位を X(:,:,i,j,k,l)
などの処理される 2 次元行列として扱います。
関数 cat
は、行列の集合から多次元配列を作成するのに便利です。関数 zeros
は、多次元配列を事前に割り当てるのに便利です。
ヒント
pageinv
を使用して取得した結果は、for
ループで同じ行列のそれぞれの逆行列を計算することと数値的に等価です。ただし、浮動小数点の丸め誤差のため、2 つの結果が若干異なることがあります。
拡張機能
GPU 配列
Parallel Computing Toolbox™ を使用してグラフィックス処理装置 (GPU) 上で実行することにより、コードを高速化します。
この関数は GPU 配列を完全にサポートしています。詳細については、GPU での MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
分散配列
Parallel Computing Toolbox™ を使用して、クラスターの結合メモリ上で大きなアレイを分割します。
この関数は分散配列を完全にサポートしています。詳細については、分散配列を使用した MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
バージョン履歴
R2022a で導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)