求解下列线性规划问题一道线性表示题

扫二维码下载作业帮
2亿+学生的选择
下载作业帮安装包
扫二维码下载作业帮
2亿+学生的选择
一道线性代数题的理解设向量组I:α1,α2 ,...,αr可由向量组II:β1,β2 ,...βs线性表示若向量组I线性无关,则r≤s有个选项有疑问:若向量组II线性相关,则r>s为什么不对呢?能举个反例吗?另外,老师讲过:1、无关向量组不能由比它个数少的向量组线性表示2、个数多的可用少的线性表示,多的必相关不就是暗合这两个选项吗,哪里错了呢?
扫二维码下载作业帮
2亿+学生的选择
其实I能够被II表示,说明I的秩小于等于II的秩;若I线性无关,那么r=r(I)
谢了,挺好记的
有个疑问:“其实I能够被II表示,说明I的秩小于等于II的秩”
这个怎么证的啊?
从直观理解上来说,秩就是说一组向量所张成的线性空间的维数。
I能被II表示,说明I都在II所张成的线性空间中。那么对于I所表示的向量,把I都用II中向量代替,就说明可以被II表示,从而I张成的线性空间属于II张成的线性空间,故维数不会比他大。
假设I中有m个线性无关向量,而II中最大线性无关组向量个数为n,m>n,那么
2、个数多的(m个)可用少的(n个)线性表示,多的必相关,也就是这m个线性相关。
从而矛盾。故I中不会有多过n个线性无关的向量组。
为您推荐:
其他类似问题
扫描下载二维码一道算法题,很难,求大神? - 知乎176被浏览14436分享邀请回答3616 条评论分享收藏感谢收起#include &cstdio&
#include &algorithm&
#include &ctime&
int main()
clock_t t1 = clock();
unsigned n = 0;
unsigned a[14] = { 0, 1,2,3,4,5,6,7,8,9,10,11,12,13 };
if( a[1]+a[3]+a[6]+a[7]+a[12]+a[13] == 42
&& a[4]+a[5]+a[6]+a[7]+a[9]+a[11] == 42
&& a[2]+a[4]+a[5]+a[8]+a[10]+a[13] == 42 )
} while( std::next_permutation(a+1,a+14) );
clock_t t2 = clock();
printf( "%u\n", n );
printf( " ---- %ld.%03ld ---\n", (t2-t1)/CLOCKS_PER_SEC, (t2-t1)%CLOCKS_PER_SEC );
// 输出 1292544, 耗时 58.203 秒
再将楼主的方程组化简一下,用最老土的for来做,以下C代码耗时接近半秒,但代码混乱#define FORLOOP(an)
for( unsigned an=1; an&=13; ++an )
if( mask & (1u&&an) ) \
unsigned temp =
unsigned mask = temp|(1u&&an);
#define ENDLOOP }
#define JUDGE( an, formula )
unsigned an =
if( an&1 || an&13 || (mask&(1u&&an)) ) \
unsigned temp =
unsigned mask = temp|(1u&&an);
#define ENDJUDGE }
#include &stdio.h&
#include &time.h&
int main()
unsigned n = 0;
clock_t t1 = clock();
unsigned mask = 0;
FORLOOP( a9 )
FORLOOP( a11 )
JUDGE( a13, a9+a11-7 )
FORLOOP( a1 )
FORLOOP( a3 )
/**************/
FORLOOP( a4 )
/* 原方程组化简为 */
FORLOOP( a5 )
/* a9+a11-a13 == 7
JUDGE( a12, 7-(a1+a3-a4-a5) )
/* a1+a3-a4-a5+a12 == 7
FORLOOP( a2 )
/* a2-a6-a7+a8+a10 == 7
FORLOOP( a6 )
FORLOOP( a7 )
/* 输出 1292544
FORLOOP( a8 )
/* 耗时 0.468秒
JUDGE( a10, 7-(a2-a6-a7+a8) )
/**********************************************/
clock_t t2 = clock();
printf( "%u\n", n );
printf( " ---- %ld.%03ld ---\n", (t2-t1)/CLOCKS_PER_SEC, (t2-t1)%CLOCKS_PER_SEC );
考虑到 “a9 a11 可互换,a1 a3 a12 可互换,a4 a5 可互换,a2 a8 a10 可互换,a6 a7 可互换” 后,代码还可以优化,优化后运行时间小于 1毫秒,用标准C函数无法计时了。#define FORLOOP(begval,an)
for( unsigned an= an&=13; ++an )
if( mask & (1u&&an) )
unsigned temp =
unsigned mask = temp|(1u&&an);
#define ENDLOOP }
#define JUDGE( e1, e2, an, formula )
unsigned an =
if( e1 & e2 )
if( an&1 || an&13 || (mask&(1u&&an)) ) \
unsigned temp =
unsigned mask = temp|(1u&&an);
#define ENDJUDGE }
#include &stdio.h&
#include &time.h&
int main()
unsigned n = 0;
clock_t t1 = clock();
unsigned mask = 0;
FORLOOP( 1, a9 )
FORLOOP( a9+1, a11 )
JUDGE( 0,0, a13, a9+a11-7 )
FORLOOP( 1, a1 )
FORLOOP( a1+1, a3 )
/**************/
FORLOOP( a3+1, a12 )
/* 原方程组化简为 */
FORLOOP( 1, a4 )
/* a9+a11-a13 == 7
JUDGE( a4,a5, a5, a1+a3+a12-a4-7 )
/* a1+a3+a12-a4-a5 == 7
FORLOOP( 1, a2 )
/* a2+a8+a10-a6-a7 == 7
FORLOOP( a2+1, a8 )
FORLOOP( a8+1, a10 )
/* 输出 1292544
FORLOOP( 1, a6 )
/* 耗时 0.000秒
JUDGE( a6,a7, a7, a2+a8+a10-a6-7 )
/**********************************************/
n += 2*6*2*6*2;
// 因为[a9 a11 可互换] [a1 a3 a12 可互换] [a4 a5 可互换] [a2 a8 a10 可互换] [a6 a7 可互换],所以加上2*6*2*6*2
clock_t t2 = clock();
printf( "%u\n", n );
printf( " ---- %.3f ---\n", (t2-t1+0.0)/CLOCKS_PER_SEC );
175 条评论分享收藏感谢收起更多3 个回答被折叠()

我要回帖

更多关于 向量组的线性表示 的文章

 

随机推荐