首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >矩阵分解算法

矩阵分解算法
EN

Stack Overflow用户
提问于 2011-11-13 22:17:03
回答 2查看 1.6K关注 0票数 0

我有一个非常奇怪的算法,为了清楚起见,下面是代码

代码语言:javascript
复制
#include <iostream>

using namespace std;

#define maxn 1000
#define n 3

double sum=0;
double sum1=0;
double a[maxn][maxn];
double l[maxn][maxn];
double u[maxn][maxn];

void read(){
    for(int i=1;i=n;i++){
        for(int j=1;j<=n;j++){
            cin>>a[i][j];
        }
    }
}

void decomposition(){
    for(int i=1;i<=n;i++)
        l[i][1]=a[i][1];

    for(int j=1;j<=n;j++)
        u[1][j]=a[1][j]/l[1][1];

    for(int j=2;j<=n;j++){
        for(int i=j;i<=n;i++){
            for(int k=1;k<j;k++){
                sum+=l[i][k]*u[k][j];
            }

            l[i][j]=a[i][j]-sum;
        }

        u[j][j]=1;
        for(int i=j+1;i<=n;i++){
            for(int k=1;k<j;k++){
                sum1+=l[j][k]*u[k][i];
            }
            u[j][i]=(a[j][i]-sum1)/l[j][j];
        }
    }
}

void print(){
    cout<<"   L matrix "<<endl;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++){
            cout<<l[i][j]<<"  ";
        }
        cout<<endl;
    }
    cout<<endl;
    cout<<" U matrix "<<endl;

    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++){
            cout<<u[i][j]<<"  ";
        }
        cout<<endl;
    }
}

int main(){
    cout<<"enter the matrix "<<endl;
    read();
    cout<<endl;
    decomposition();
    cout<<"print twwo matrix  "<<endl;
    print();

    return 0;
}

但是当我输入矩阵时,例如,我想分解这个矩阵

代码语言:javascript
复制
 3 -1 2
 1 2 3
 2 -2 -1

程序不显示输出,只是要求再次输入一些输入,我看不到在我的代码这里需要输入更多的矩阵或数据,那么有什么问题呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-11-13 22:28:54

不确定这是否是问题所在,但在read (这不是一个函数的好名字,顺便说一句)中,您有:

代码语言:javascript
复制
for(int i=1;i=n;i++){

这会将i指定为n,并且应该为i==n或更有可能是i<=n,这也总是正确的,因此执行永远不会停止。

票数 4
EN

Stack Overflow用户

发布于 2011-11-13 22:35:54

试试这个:

代码语言:javascript
复制
void read(){
    for(int i=0;i<n;i++){
        for(int j=0;j<n;j++){
            cin>>a[i][j];
        }
    }
}

它应该正确地读取用户矩阵。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8112146

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档