1

我目前的代码有一些问题,无法将数组分解为上(u)和下(l)数组。

我正在使用 doolittle 方法

我的代码:

#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 数组的代码示例。它使用 Cholesky 分解,但也许会有所帮助。 http://quantcorner.wordpress.com/2011/02/20/matrix-decomposition-with-quantlib/

于 2012-05-10T13:23:52.713 回答
-3

检查你的's'迭代它应该是 for(int s=0;s

于 2017-09-12T13:41:29.017 回答