博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Coding the Matrix Week 1 The Vector Space作业
阅读量:6956 次
发布时间:2019-06-27

本文共 2772 字,大约阅读时间需要 9 分钟。

  本周的作业较少,只有一个编程任务hw2.作业比较简单,如果大学学习过矩阵代数的话,基本上没有什么问题,不过要注意的一点是基2的Span的求法。

  基2空间上,在所有基向量中取任意个数个,叠加组合就得到了Span。但是如何取任意个呢?下面给出几种方法。

  一种方法是对于任意可能的个数,利用Python中的排列组合module生成对应于此个数的所有排列,即得到Span。感兴趣的话可以百度一下。这种方法概念较为清晰,但需要对Python的库较为了解。

  第二种方法,利用了从n个元素中任选任意个的方法只有2^n个的排列组合知识。具体来说,就是对于任意从0到2^n-1的整数,使用bin()函数得到其二进制表示,对应位为1即代表选中此基向量。这种方法稍微Smart一些。但过程较为冗杂。

  第三种,就是下面程序给出的方法,一行语句就可以完成运算,原理和上一种方法相同,就不再赘述。但要注意结果为0的情况下要单独考虑。

  其他的向量运算都比较简单,最后几道判断是否为向量空间的问题,只需要牢记向量空间三特征(包含0,加减和向量乘法组合仍在空间内)就不会出错。

  作业代码如下,模版中注释部分给出了验证范例。

 

# version code 761# Please fill out this stencil and submit using the provided submission script.from vec import Vecfrom GF2 import one## Problem 1def vec_select(veclist, k):     '''    >>> D = {'a','b','c'}    >>> v1 = Vec(D, {'a': 1})    >>> v2 = Vec(D, {'a': 0, 'b': 1})    >>> v3 = Vec(D, {        'b': 2})    >>> v4 = Vec(D, {'a': 10, 'b': 10})    >>> vec_select([v1, v2, v3, v4], 'a') == [Vec(D,{'b': 1}), Vec(D,{'b': 2})]    True    '''    return [x for x in veclist if x[k]==0]def vec_sum(veclist, D):     '''    >>> D = {'a','b','c'}    >>> v1 = Vec(D, {'a': 1})    >>> v2 = Vec(D, {'a': 0, 'b': 1})    >>> v3 = Vec(D, {        'b': 2})    >>> v4 = Vec(D, {'a': 10, 'b': 10})    >>> vec_sum([v1, v2, v3, v4], D) == Vec(D, {'b': 13, 'a': 11})    True    '''    return sum(veclist) if len(veclist)!=0 else Vec(D,{})def vec_select_sum(veclist, k, D):     '''    >>> D = {'a','b','c'}    >>> v1 = Vec(D, {'a': 1})    >>> v2 = Vec(D, {'a': 0, 'b': 1})    >>> v3 = Vec(D, {        'b': 2})    >>> v4 = Vec(D, {'a': 10, 'b': 10})    >>> vec_select_sum([v1, v2, v3, v4], 'a', D) == Vec(D, {'b': 3})    True    '''    return vec_sum(vec_select(veclist,k),D)## Problem 2def scale_vecs(vecdict):    '''    >>> v1 = Vec({1,2,3}, {2: 9})    >>> v2 = Vec({1,2,4}, {1: 1, 2: 2, 4: 8})    >>> scale_vecs({3: v1, 5: v2}) == [Vec({1,2,3},{2: 3.0}), Vec({1,2,4},{1: 0.2, 2: 0.4, 4: 1.6})]    True    '''    return [y/x for (x,y) in vecdict.items()]## Problem 3def GF2_span(D, L):    '''    >>> from GF2 import one    >>> D = {'a', 'b', 'c'}    >>> L = [Vec(D, {'a': one, 'c': one}), Vec(D, {'b': one})]    >>> len(GF2_span(D, L))    4    >>> Vec(D, {}) in GF2_span(D, L)    True    >>> Vec(D, {'b': one}) in GF2_span(D, L)    True    >>> Vec(D, {'a':one, 'c':one}) in GF2_span(D, L)    True    >>> Vec(D, {x:one for x in D}) in GF2_span(D, L)    True    '''    if len(L)==0:return []    maxind=2**len(L)-1    res=[sum([L[j] for j in range(len(L)) if i//(2**j)%2]) for i in range(maxind+1)]    res.append(Vec(D,{}))    del res[0]    return res## Problem 4# Answer with a boolean, please.is_it_a_vector_space_1 = Trueis_it_a_vector_space_2 = False## Problem 5is_it_a_vector_space_3 = Trueis_it_a_vector_space_4 = False## Problem 6is_it_a_vector_space_5 = Trueis_it_a_vector_space_6 = False

 

  

 

转载地址:http://hllil.baihongyu.com/

你可能感兴趣的文章
急!JDBC问题,发生通信错误。错误位置:Reply.fill()。消息:数据不足。 ERRORCODE=-4499, SQLSTATE=08001...
查看>>
Java中的DatagramPacket与DatagramSocket的初步(转)
查看>>
Linux命令行下创建纳入版本控制下的新目录
查看>>
【转】【Python】Python中的__init__.py与模块导入(from import 找不到模块的问题)
查看>>
Redis内存存储结构分析
查看>>
建立个人网站
查看>>
算法大全—2-冒泡排序法百钱买百鸡算法
查看>>
Web网站IP过滤功能第二版(C#)
查看>>
远程服务器返回错误 (401) 未经授权 解决方案
查看>>
用RMI开发基于Java的企业分布式应用
查看>>
wpf之文件浏览上传
查看>>
love2d教程13--图形界面
查看>>
struts学习
查看>>
itext处理pdf
查看>>
POJ 1276 Cash Machine
查看>>
Oracle EBS Color 色彩设置
查看>>
C语言中 struct成员变量顺序对内存的占用
查看>>
POJ1291-并查集/dfs
查看>>
广州项目实施步骤II_练习配置HaProxy的重定向负载均衡
查看>>
INNO SETUP 5.5.0以上版本中文语言包
查看>>