矩阵分解算法
matrix decomposition algorithm
我有以下的算法,工作非常奇怪,为了清晰,这里是代码
#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;
}
但是当我输入矩阵时,比如我想分解这个矩阵
3 -1 2
1 2 3
2 -2 -1
程序没有显示输出,只是需要再次输入一些输入,我在这里看不到我的代码,它需要输入更多的矩阵或数据,所以是什么问题?
不确定这是否是问题,但在read
(这不是一个好名字的函数,顺便说一句)你有:
for(int i=1;i=n;i++){
这将i
指定为n
,并且应该是i==n
或更可能的i<=n
,它也总是为真,因此执行永远不会停止。
试试这个:
void read(){
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
cin>>a[i][j];
}
}
}
它应该正确读取用户矩阵
相关文章:
- 通过递归进行因子分解
- 有人能分解一下这个c++模板的语法吗
- 为什么这个运算符<重载函数对 STL 算法不可见?
- 基于ELO的团队匹配算法
- C++选择排序算法中的逻辑错误
- 有没有办法将谓词中的元素偏移量传递给 std 算法?
- C++A*算法并不总是在路径中具有目标节点
- 排序算法c++
- 构建可组合有向图(扫描仪生成器的汤普森构造算法)
- 算法问题:查找从堆栈中弹出的所有序列
- 下面是排序算法O(n)吗
- KMP算法和LPS表构造的运行时间
- 为什么我的排序算法会更改数组值
- 求最大元素位置的分治算法
- 具有非整数边容量的最大流量的Dinic算法
- 到连接组件算法的问题(递归)
- STL算法函数在多个一维容器上的使用
- 用于分解大量文本数据的算法
- 一分解算法以找到多个根
- 矩阵分解算法