1

私は現在、配列を上位(u)配列と下位(l)配列に分解するコードでいくつかの問題を抱えています。

ドゥーリトル法を使っています

私のコード:

#include <iostream>

using namespace std;

int main(){

    double a[10][10];
    double l[10][10];
    double u[10][10];
    double som=0;
    int RANG;
    cin >> RANG;
    for(int i=0; i<RANG; i++){
            for(int j=0; j<RANG;j++){
                    cin >> a[i][j];
            }
    }
    for(int i=0; i<RANG; i++){
            for(int j=0; j<RANG;j++){
                    u[i][j]=0;
                    l[i][j]=0;
            }
    }

    for(int i=0;i<RANG;i++) {
    l[i][i]=1;

        for(int j=i;j<RANG;j++) {
            for(int s=0;s<i-1;s++) {
                som+= l[i][s]*u[s][j];
            }
            u[i][j]=a[i][j]-som;
        }

        for(int k=i+1;k<RANG;k++) {
            double som=0;
            for(int s=0;s<i-1;s++) {
                som+=l[k][s]*u[s][i];
            }
            l[k][i]=(a[k][i]-som)/u[i][i];
        }
     }
     cout << "l:" << endl;
    for(int i=0; i<RANG; i++){
            for(int j=0; j<RANG;j++){
                    cout << l[i][j] << "\t";
            }
            cout << endl << endl;
    }
    cout << "u: " << endl;
        for(int i=0; i<RANG; i++){
            for(int j=0; j<RANG;j++){
                    cout << u[i][j] << "\t";
            }
            cout << endl << endl;
    }
    return 0;
}

できれば助けてください...

PS: それがここに属しているかどうかはわかりません。数学サイトの方が良いかもしれません

4

3 に答える 3

2

http://download.intel.com/design/PentiumIII/sml/24504601.pdfをご覧ください。ソース コードとともに完全なソリューションが得られます。

于 2013-02-06T11:38:49.133 に答える
1

QuantLib をチェックしてみてください。 http://quantlib.org/index.shtml

QuantLib ライブラリを使用して 3x3 配列を分解するコードの例を次に示します。コレスキー分解を使用していますが、役立つかもしれません。 http://quantcorner.wordpress.com/2011/02/20/matrix-decomposition-with-quantlib/

于 2012-05-10T13:23:52.713 に答える