我目前正在使用一些带有代码的probs将数组分解为上(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:不确定它是否属于这里,可能在数学网站上更好
答案 0 :(得分:2)
看看http://download.intel.com/design/PentiumIII/sml/24504601.pdf它是否有完整的解决方案和源代码!
答案 1 :(得分:1)
您可能想要查看QuantLib。 http://quantlib.org/index.shtml
以下是使用QuantLib库分解3x3阵列的代码示例。它使用Cholesky分解,但也许它会有所帮助。 http://quantcorner.wordpress.com/2011/02/20/matrix-decomposition-with-quantlib/
答案 2 :(得分:-3)
检查你的&#39;迭代应该是 for(int s = 0; s