| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1060 人关注过本帖
标题:许久没来过了,求论坛的大神帮忙解决下矩阵的问题?希望杨大哥能看到。
只看楼主 加入收藏
罗庇鹏ksq
Rank: 5Rank: 5
来 自:太平洋
等 级:职业侠客
帖 子:220
专家分:310
注 册:2012-6-30
结帖率:93.33%
收藏
已结贴  问题点数:100 回复次数:12 
许久没来过了,求论坛的大神帮忙解决下矩阵的问题?希望杨大哥能看到。
// 问题是这样的:
// 设 int m,n; (3 <= m < n <= 16 ),
// int x[m][n]; 数组的每个数为区间[-17,17]
的随机整数,srand 、rand配合产生,
// 用数组 x[m][n] 构造一个m行n列矩阵,依次排列(先排列行),
// 请问?
// 怎样才能快速构造出一个线性无关的m行n列矩阵,
// 如已构造的矩阵线性相关则重新产生随机数数组。
搜索更多相关主题的帖子: 大哥 
2013-09-05 15:04
yuccn
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:12 
..

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2013-09-05 16:32
罗庇鹏ksq
Rank: 5Rank: 5
来 自:太平洋
等 级:职业侠客
帖 子:220
专家分:310
注 册:2012-6-30
收藏
得分:0 
回复 2楼 yuccn
版主大人好,万岁

从来都是无所谓,现在也该学着有所谓。✿咱们一个人,别坐井观天❀
2013-09-05 16:59
小小程序猿
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:1
帖 子:755
专家分:2785
注 册:2013-7-18
收藏
得分:12 
我只是很单纯的来接分的

孤独与寂寞是催化一个人迅速成长的良药,没有之一
2013-09-05 17:37
pauljames
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:千里冰封
威 望:9
帖 子:1555
专家分:10000
注 册:2011-5-8
收藏
得分:12 
根据线性无关的定义,用穷举测试?

经常不在线不能及时回复短消息,如有c/单片机/运动控制/数据采集等方面的项目难题可加qq1921826084。
2013-09-05 17:48
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:12 
过来看看

DO IT YOURSELF !
2013-09-05 18:15
罗庇鹏ksq
Rank: 5Rank: 5
来 自:太平洋
等 级:职业侠客
帖 子:220
专家分:310
注 册:2012-6-30
收藏
得分:0 
等着杨大哥、各大版主、大神解决...

从来都是无所谓,现在也该学着有所谓。✿咱们一个人,别坐井观天❀
2013-09-05 20:06
czz5242199
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:660
专家分:2400
注 册:2011-10-26
收藏
得分:12 
两个向量只要不成倍数就是线性无关的

3个向量直接验证不久可以了吗
2013-09-05 20:16
你猜猜猜猜
Rank: 2
等 级:论坛游民
帖 子:35
专家分:44
注 册:2013-9-2
收藏
得分:12 
来看一下,,,,,,
2013-09-06 18:38
youngdavid
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:107
专家分:698
注 册:2012-9-24
收藏
得分:12 
楼主所说的线性无关等价于矩阵满秩。根据矩阵秩的定义:
矩阵A中如果存在一个r阶子式不等于0,而所有的r+1阶子式(如果存在的话)全等于0,则规定A的秩R(A)=r。
因此可以等价于判断矩阵的各阶行列式是否等于0,如果都不等于0,则矩阵秩为m,线性无关。代码如下:
程序代码:
#include <stdio.h>

#define M 2 //矩阵的行
#define N 3 //矩阵的列
int Fun(int n, int a[M][M] );            /*函数声明*/


int  main()
{
int x[M][N];//此处假设m=2,n=3
int a[M][M];//取自x[2][3]的方阵
int k=0;//统计行列式不为0的阶数
int i,j;

while(k!=M)//如果最大不为0的行列式不为M,则不是线性无关
{
    for (i=0;i<=M-1;i++)
    {
        for(j=0;j<=N-1;j++)
        {
        x[i][j]=rand()%35;//[-17,17]之间共有35个数字,rand()%35产生0-34的随机数字
        x[i][j]=x[i][j]-17;
        }
    }

    for (i=0;i<=M-1;i++)
    {
        for(j=0;j<=M-1;j++)
        {
        a[i][j]=x[i][j];
        }
    }

    for (i=0;i<=M-1;i++)
    {
        if(Fun(i,a)!=0)
        k +=1;
    }

}

for (i=0;i<=M-1;i++)
{
    for(j=0;j<=N-1;j++)
    {
    printf("%d,",x[i][j]);
    }
    printf("\n");
}

    return 0;  

}


int Fun( int n, int a[M][M] )
{
    int b[M][M] = {{0}};            /*定义数组b并初始化*/
    int i = 0, j = 0, sum = 0;          /*i,j为行与列,sum为行列式的值*/
    int x = 0,c = 0,p=0;                /*用x判断加与减,c,p为中间变量*/

    if(n == 1)
    return a[0][0];

    for(i = 0;i < n; i++)               /*此处大循环实现将余子式存入数组b中*/
    {
        for(c = 0;c < n-1; c++)
        {
            for(j = 0;j < n-1;j++)
            {
                if (c < i){             /*借助c判断每行的移动方法*/
                    p = 0;              /*当p=0时,行列式只向左移,即消去对应的第一列的数*/
                }
                else{                   /*否则行列式左移后再上移*/
                    p = 1;
                }
            b[c][j] = a[c+p][j+1];
            }
        }

        if(i % 2 == 0){                  /*i+j(此时j=0,故只考虑i)为偶数,加法预算*/
            x = 1;
        }
        else{                           /*i+j为奇数,减法运算*/
            x = (-1);
        }
     sum += a[i][0] * Fun(n - 1, b ) * x;         /*计算行列式的值*/
    }

    return sum;                                   /*将值返回*/
}

2013-09-07 21:06
快速回复:许久没来过了,求论坛的大神帮忙解决下矩阵的问题?希望杨大哥能看到。 ...
数据加载中...
 
   



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

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