估计这周的最后一问,我的任务也该结束了。求各位帮助!!!!
好吧,现在在弄本周最后一个问题。。。。要求输入的A必须是上三角矩阵!!!!
我想对A进行变化时,同时对一个n*n的Q矩阵进行相同的列变换。然后输出结果。。。。
得到的是A输出的对,Q输出的不对。
求指正!!!!!!!!!感激不尽!!!!!!!
#include<stdio.h>
#include<stdlib.h>
#define M 30
#define N 30
void main()
{
float a[M][N],c[M][N],B2;
int i,j,t,m,n;
//输入行列数进行控制//
printf("请输入矩阵的行数和列数m与n:\n");
scanf("%d%d",&m,&n);
//对矩阵P、A、Q进行初始化//
printf("请按行输入矩阵A的各个元素\n");
for(i=0;i<m;i++)
for(j=0;j<n;j++)
scanf("%f",&a[i][j]);
for(i=0;i<n;i++)
for(j=0;j<n;j++)
if(i==j)
c[i][j]=1;
else c[i][j]=0;
printf("初始A矩阵\n");
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
printf("%10.2f",a[i][j]);
printf("\n");
}
printf("初始Q矩阵\n");
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
printf("%10.2f",c[i][j]);
printf("\n");
}
//化阶梯型矩阵为标准型,同时对Q矩阵进行相同的变化//
for(t=0;t<m;t++)
{
for(j=0;j<n;j++)
{
if(a[t][t]!=0)
{
B2=a[t][j]/a[t][t];
{
for(i=0;i<m;i++)
if(i!=j)
a[i][j]=a[i][j]-B2*a[i][t];
for(i=0;i<n;i++)
if(i!=j)
c[i][j]=c[i][j]-B2*c[i][t];
}
}
}
}
printf("化为的A矩阵\n");
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
printf("%10.2f",a[i][j]);
printf("\n");
}
printf("对应的Q矩阵\n");
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
printf("%10.2f",c[i][j]);
printf("\n");
}
}
求各位大神不吝赐教!!!
感激不尽!!!!!!!