下三角行列 (L) と上三角行列 (U) があります。mldivide を使用して の解を求めますL*U*x = b
。MATLAB は、後方/前方置換のみが必要であることを発見するのに十分賢いと思います。しかし、前方/後方置換のみを実行する必要があることをmatlabに(どういうわけか)伝えることができれば、さらに速くなると思います。
MATLABに後方/前方置換のみを行うように指示する方法を教えてください。追加の操作は必要ありません。
ありがとう
下三角行列 (L) と上三角行列 (U) があります。mldivide を使用して の解を求めますL*U*x = b
。MATLAB は、後方/前方置換のみが必要であることを発見するのに十分賢いと思います。しかし、前方/後方置換のみを実行する必要があることをmatlabに(どういうわけか)伝えることができれば、さらに速くなると思います。
MATLABに後方/前方置換のみを行うように指示する方法を教えてください。追加の操作は必要ありません。
ありがとう
ドキュメントはかなり明確です:
三角行列の順列
mldivide は、ゼロ要素をテストすることによって三角性をチェックします。行列 A が三角行列の場合、MATLAB ソフトウェアは代入を使用して解ベクトル x を計算します。A が三角行列の置換である場合、MATLAB ソフトウェアは置換置換アルゴリズムを使用します。
それで
x = U \ (L \ b);
問題の後方/前方ソリューションです。
ドキュメントを検索すると、Matlab は実際に後方/前方置換を使用しているようです。ただし、mldivide
行列L*U
を取得するのではなく個別L
に取得U
するため、内部で分解を実行する必要があります。
L 行列と U 行列が既にある場合は、計算のその部分を保存できる場合があります。