| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 606 人关注过本帖
标题:估计这周的最后一问,我的任务也该结束了。求各位帮助!!!!
只看楼主 加入收藏
木小子雨
Rank: 2
来 自:中国
等 级:论坛游民
帖 子:30
专家分:15
注 册:2013-6-6
结帖率:100%
收藏
已结贴  问题点数:12 回复次数:7 
估计这周的最后一问,我的任务也该结束了。求各位帮助!!!!
好吧,现在在弄本周最后一个问题。。。。
要求输入的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");
     }
 }
求各位大神不吝赐教!!!
感激不尽!!!!!!!
搜索更多相关主题的帖子: include 
2013-06-07 16:49
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:6 
举个例子呢

DO IT YOURSELF !
2013-06-07 17:39
木小子雨
Rank: 2
来 自:中国
等 级:论坛游民
帖 子:30
专家分:15
注 册:2013-6-6
收藏
得分:0 
我输入
1     2       3
0      -3    -6
系统生成初始化Q
1      0      0
0      1      0
0      0      1
我希望输出A
1      0       0
0      -3     0
Q对应的输出为
1     -2       1
0      1        -2
0      0        1
但A输出的符合要求,
Q输出的不符合要求。
2013-06-07 17:53
木小子雨
Rank: 2
来 自:中国
等 级:论坛游民
帖 子:30
专家分:15
注 册:2013-6-6
收藏
得分:0 
回复 楼主 木小子雨
我输入
1     2       3
0      -3    -6
系统生成初始化Q
1      0      0
0      1      0
0      0      1
我希望输出A
1      0       0
0      -3     0
Q对应的输出为
1     -2       1
0      1        -2
0      0        1
但A输出的符合要求,
Q输出的不符合要求。


请大神帮忙调试一下,
我不会。。。。。只能求助大神了!
2013-06-07 19:26
木小子雨
Rank: 2
来 自:中国
等 级:论坛游民
帖 子:30
专家分:15
注 册:2013-6-6
收藏
得分:0 
回复 2楼 wp231957
我输入
1     2       3
0      -3    -6
系统生成初始化Q
1      0      0
0      1      0
0      0      1
我希望输出A
1      0       0
0      -3     0
Q对应的输出为
1     -2       1
0      1        -2
0      0        1
但A输出的符合要求,
Q输出的不符合要求。
2013-06-07 19:26
蚕头燕尾
Rank: 10Rank: 10Rank: 10
来 自:Gryffindo
等 级:贵宾
威 望:12
帖 子:734
专家分:1546
注 册:2013-3-24
收藏
得分:6 
表示不懂什么是矩阵的标准型和阶梯型,核心的那个公式无法判断对错,简化了下代码如下

/*
要求输入的A必须是上三角矩阵!!!!
 我想对A进行变化时,同时对一个n*n的Q矩阵进行相同的列变换。然后输出结果。。。。
 得到的是A输出的对,Q输出的不对。
 */
#include<stdio.h>
 #include<stdlib.h>
 #define M 30
 #define N 30
 void main()
 {
      void print(float a[M][N],int m,int n);

      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");
      print(a,m,n);

      printf("初始Q矩阵\n");
      print(c,m,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");
      print(a,m,n);

      printf("对应的Q矩阵\n");
      print(c,n,n);
 }

 void print(float a[M][N],int m,int n)
 {
     int i,j;
     for(i=0;i<m;i++)
     {
         for(j=0;j<n;j++)
         {
             printf("%10.2f",a[i][j]);
         }
         printf("\n");
     }

 }


如果楼主能好心科普一下线代知识,不胜感激。

学习编程,为的是表达自己的思想,而不是被别人的思想所禁锢。要先明白自己想干嘛,而不要先问别人让你干嘛。               

                                                                                                                    Black Cat      Hello Tomorrow~
2013-06-08 01:54
木小子雨
Rank: 2
来 自:中国
等 级:论坛游民
帖 子:30
专家分:15
注 册:2013-6-6
收藏
得分:0 
回复 6楼 蚕头燕尾
感谢您的建议,我会把最后的程序简化一下,刚才突然想起控制的关系出错了。。。我改过之后就贴出来:-P
2013-06-08 09:40
木小子雨
Rank: 2
来 自:中国
等 级:论坛游民
帖 子:30
专家分:15
注 册:2013-6-6
收藏
得分:0 
#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)//应为if(j!=t)
                         a[i][j]=a[i][j]-B2*a[i][t];
                 for(i=0;i<n;i++)
                     if(i!=j)//应为if(j!=t)
                         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");
     }
}
自问自答不过谢谢大家的建议!
2013-06-08 10:23
快速回复:估计这周的最后一问,我的任务也该结束了。求各位帮助!!!!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012883 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved