[关闭]
@A3-323 2017-04-06T07:06:50.000000Z 字数 3282 阅读 565

【第一次综合训练】安全16-2班第1组

  1. # -*- coding:utf-8 -*-# -*- coding:utf-8 -*-
  2. -------------- 小组信息 ---------------
  3. 长: 李佳星
  4. 员: 王兴、王浩、姜宇峣
  5. ---------------------------------------
  1. 项目五 矩阵和向量的计算
  2. 题目
  3. 实现线性代数中最基本的矩阵和向量计算,包括:
  4. 1)向量加法,减法,点乘,叉乘
  5. 2)矩阵加法,减法,乘法
  6. 3)矩阵与向量的乘法
  7. 4N阶矩阵的行列式(要求N=2,3,4,可选)
  8. 5N阶矩阵的逆矩阵(要求N=2,3,4,可选)
  9. 6)矩阵的秩(可选)
  10. 注:上述知识涉及到线性代数,有一定的难度!!!
  11. 目的
  12. 培养学生分析问题和编写简单程序的能力,主要考察Python基础语法以及高级数据类型的使用。
  13. 要求
  14. 1)所设计的程序能够正确运行;
  15. 2)代码应遵照Python语言的变量、函数命名规则,加入适当的注释;
  16. 3)成果形式:项目报告(教师制定报告模板),严禁抄袭;
  17. 难易程度
  18. 普通/困难(只完成123属于普通级别,后面的456完成1~3道属于困难级别)
  1. # -*- coding:utf-8 -*-
  2. print '输入命令:','\n','输入1:进行向量计算(加,减,点乘,叉乘)'
  3. print '输入2:进行矩阵的加,减,乘运算。'
  4. print '输入3:进行矩阵与向量的乘法。'
  5. print '输入4:计算矩阵行列式。'
  6. print '输入5:计算逆矩阵。'
  7. num=(int(raw_input('输入命令:')))
  8. if num ==1:
  9. a=(float(raw_input('向量坐标X1:')))
  10. b=(float(raw_input('向量坐标y1:')))
  11. c=(float(raw_input('向量坐标z1:')))
  12. d=(float(raw_input('向量坐标x2:')))
  13. e=(float(raw_input('向量坐标y2:')))
  14. f=(float(raw_input('向量坐标z2:')))
  15. num1=a+d
  16. num2=b+e
  17. num3=c+f
  18. num4=a*d+b*e+c*f
  19. num5=b*f-c*e
  20. num6=-a*f+c*d
  21. num7=a*e-b*d
  22. num8=a-d
  23. num9=b-e
  24. num10=c-f
  25. print '向量和:','(',num1,',',num2,',',num3,')'
  26. print '向量差:','(',num8,',',num9,',',num10,')'
  27. print '数量积:',num4
  28. print '向量积:','(',num5,',',num6,',',num7,')'
  29. if num==2:
  30. m=[[1,2],[5,4]]
  31. n=[[3,4],[2,4]]
  32. print 'm=',m,'n=',n
  33. o1=[]
  34. o2=[]
  35. w=[]
  36. o1.append(m[0][0]*n[0][0]+m[0][1]*n[1][0])
  37. o1.append(m[0][0]*n[0][1]+m[0][1]*n[1][1])
  38. o2.append(m[1][0]*n[0][0]+m[1][1]*n[1][0])
  39. o2.append(m[1][0]*n[0][1]+m[1][1]*n[1][1])
  40. w=w+o1+o2
  41. print '矩阵积 :',w
  42. a=(int(raw_input('第一(二)个矩阵行(列)数:')))
  43. d=[]
  44. for i in range(a):
  45. c=[]
  46. for j in range(a):
  47. c.append(float(raw_input()))
  48. d.append(c)
  49. e=[]
  50. for k in range(a):
  51. f=[]
  52. for l in range(a):
  53. f.append(float(raw_input()))
  54. e.append(f)
  55. print d
  56. print e
  57. g=[]
  58. for x in range(a):
  59. for y in range(a):
  60. g.append(d[x][y]+e[x][y])
  61. print '矩阵和:',g
  62. h=[]
  63. for x in range(a):
  64. for y in range(a):
  65. h.append(d[x][y]-e[x][y])
  66. print '矩阵差:',h
  67. if num==3:
  68. print '请输入向量坐标'
  69. a=[]
  70. for i in range(3):
  71. a.append(float(raw_input()))
  72. print '向量:',a
  73. print '输入一个3X3矩阵'
  74. e=[]
  75. for j in range(3):
  76. d=[]
  77. for k in range(3):
  78. d.append(float(raw_input('矩阵数值:')))
  79. e.append(d)
  80. print '矩阵:',e
  81. h=[]
  82. h.append(a[0]*e[0][0]+a[1]*e[0][1]+a[2]*e[0][2])
  83. h.append(a[0]*e[1][0]+a[1]*e[1][1]+a[2]*e[1][2])
  84. h.append(a[0]*e[2][0]+a[1]*e[2][1]+a[2]*e[2][2])
  85. print '矩阵与向量乘积:',h
  86. if num==4:
  87. z=int (raw_input('请输入矩阵行列数(2,3)'))
  88. if z==3:
  89. a=[]
  90. print '请输入一个3*3矩阵:'
  91. for i in range(3):
  92. c=[]
  93. for j in range(3):
  94. c.append(float(raw_input()))
  95. a.append(c)
  96. print '矩阵:',a
  97. e=[]
  98. e.append(a[0][0]*(a[1][1]*a[2][2]+(-1)*a[1][2]*a[2][1]))
  99. e.append(a[0][1]*(a[1][2]*a[2][0]-a[1][0]*a[2][2]))
  100. e.append(a[0][2]*(a[1][0]*a[2][1]-a[2][0]*a[1][0]))
  101. print '矩阵行列式:',e
  102. elif z==2:
  103. a=[]
  104. print '请输入一个2*2矩阵:'
  105. for i in range(2):
  106. c=[]
  107. for j in range(2):
  108. c.append(float(raw_input()))
  109. a.append(c)
  110. print '矩阵:',a
  111. e=a[0][0]*a[1][1]-a[0][1]*a[1][0]
  112. print '矩阵行列式:',e
  113. else:
  114. print'无法计算。'
  115. if num==5:
  116. num = int(raw_input('请输入逆矩阵阶数(2,3):'))
  117. a=[]
  118. b=[]
  119. c=[]
  120. d=[]
  121. if num==2:
  122. for i in range(2):
  123. a.append(float(raw_input('第一个矩阵第一行:')))
  124. for j in range(2):
  125. b.append(float(raw_input('第一个矩阵第二行:')))
  126. c1=b[1]
  127. c2=-a[1]
  128. d1=-b[0]
  129. d2=a[0]
  130. k=1/(a[0]*b[1]-a[1]*b[0])
  131. print '\t',c1,c2,'\n',k,'\t','\n','\t',d1,d2
  132. if num==3:
  133. for i in range(3):
  134. a.append(float(raw_input('第一个矩阵第一行:')))
  135. for j in range(3):
  136. b.append(float(raw_input('第一个矩阵第二行:')))
  137. for k in range(3):
  138. c.append(float(raw_input('第一个矩阵第三行:')))
  139. q1=b[1]*c[2]-c[1]*b[2]
  140. q2=b[2]*c[0]-c[2]*b[0]
  141. q3=b[1]*c[1]-c[0]*b[1]
  142. w2=-(a[2]*c[0]-c[2]*a[0])
  143. w1=-(a[1]*c[2]-c[1]*a[2])
  144. w3=-(a[0]*c[1]-c[0]*a[1])
  145. e1=a[1]*b[2]-a[2]*b[1]
  146. e2=a[2]*b[0]-a[0]*b[2]
  147. e3=a[0]*b[1]-a[1]*b[0]
  148. print q1,w1,e1,'\n',q2,w2,e2,'\n',q3,w3,e3
  149. else:
  150. print '无法计算'
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注