我们在小学的时候,学完了什么是数字之后,接下来学习的是什么呢?

答:数字的加、减、乘、除的基本运算

同理,上一篇学习了什么是向量之后,我们接着来学习向量的基本运算

我们先来看一个东西,如下图

相信,很多人都不会陌生,我们高中学习物理的时候,都学习过平行四边形定则。两个力合成时,以表示这两个力的线段为邻边作平行四边形,这个平行四边形的对角线就表示合力的大小和方向,这就叫做平行四边形定则(Parallelogram law)。

但是为什么会这样啊?大家想过没有??

虽然可以从不同的角度,不同的学科来解释,但是这里数学的几何来直观的解释:

我们知道力是矢量,也就是向量,既有大小又有方向

我们使用下面数学的这个例子来说明平行四边形法则:

我们可以理解为:

从原点出发,先走到(5,2)这个位置,再从(5,2)这个位置出发,再走(2,5)这个向量所对应的这么多的位移,最终我们到达的这个位置就是向量加法的结果最终的结果相当于从(0,0)这个位置到达了(7,7)这个位置的位移

连接起点(0,0)和终点(7,7)就有一个三角形的形状,这不就是我们物理中学习的三角形定则吗?

其实;三角形定则是平行四边形定则的简化。平行四边形定则的实质是一样的 ,都是矢量运算法则的表述方式。

如果我们在三角形的另外一侧相应的补上和这两个向量平行的两条边的话,就出现了平行四边形

总结这个过程:

从原点(0,0)出发,先向x轴方向移动了5个单位,再向y轴移动了2个单位,这个就是(5,2)这个向量表示的含义

接着,从(5,2)这个坐标点,先向x轴移动2个单位,再向y轴移动5个单位,(2,5)向量表示的含义

最终我们从原点(0,0),总共向x轴移动了7个单位,总共向y轴移动了7个单位,这就是我们得到的向量(7,7)

总结出结论:

抽象,从2维扩展到3维:

同样扩展到n维:

这里向量的减法就不做说明和演示了,因为减法的本质其实可以理解为加法,因为“减去一个数相当于加上这个数的相反数”

向量的数量乘法:

总结:

下面使用Python来实现向量的基本运算:

class Vector:

def __init__(self, lst):

self._values = list(lst)

def __add__(self, another):

"""向量加法,返回结果向量"""

assert len(self) == len(another), \

"Error in adding. Length of vectors must be same."

# return Vector([a + b for a, b in zip(self._values, another._values)])

return Vector([a + b for a, b in zip(self, another)])

def __sub__(self, another):

"""向量减法,返回结果向量"""

assert len(self) == len(another), \

"Error in subtracting. Length of vectors must be same."

return Vector([a - b for a, b in zip(self, another)])

def __mul__(self, k):

"""返回数量乘法的结果向量:self * k"""

return Vector([k * e for e in self])

def __rmul__(self, k):

"""返回数量乘法的结果向量:k * self"""

return self * k

def __pos__(self):

"""返回向量取正的结果向量"""

return 1 * self

def __neg__(self):

"""返回向量取负的结果向量"""

return -1 * self

def __iter__(self):

"""返回向量的迭代器"""

return self._values.__iter__()

def __getitem__(self, index):

"""取向量的第index个元素"""

return self._values[index]

def __len__(self):

"""返回向量长度(有多少个元素)"""

return len(self._values)

def __repr__(self):

return "Vector({})".format(self._values)

def __str__(self):

return "({})".format(", ".join(str(e) for e in self._values))

测试代码:

from playLA.Vector import Vector

if __name__ == "__main__":

vec = Vector([5, 2])

print(vec)

print("len(vec) ={}".format(len(vec)))

print("vec[0] ={}, vec[1] ={}".format(vec[0], vec[1]))

vec2 = Vector([3, 1])

print("{}+{}={}".format(vec, vec2, vec + vec2))

print("{}-{}={}".format(vec, vec2, vec - vec2))

print("{}*{}={}".format(vec, 3, vec * 3))

print("{}*{}={}".format(3, vec, 3 * vec))

print("+{}={}".format(vec, +vec))

print("-{}={}".format(vec, -vec))

运行结果:

向量运算的基本性质:

回忆我们⼩学时学习的数的运算,我们也要先有数的运算的相关性质,之后才敢进⾏更加复杂的运算

⽐如:加法交换律,乘法交换律,加法结合律,乘法结合律,等等

对于向量运算,我们也要这么做

零向量

Python实现零向量:

只需要在我们的Vector方法中添加一个这样的类方法:

@classmethod

def zero(cls, dim):

"""返回一个dim维的零向量"""

return cls([0] * dim)

测试效果:

总结:

两个视角看待了向量:有向的线段

高维空间中的数据点

两个视角可以相互转换

python向量运算_Python线性代数学习笔记——向量的基本运算,以及Python代码的实现...相关推荐

  1. python 矩阵除法_Python线性代数学习笔记——矩阵的基本运算和基本性质,实现矩阵的基本运算...

    当学习完矩阵的定义以后,我们来学习矩阵的基本运算,与基本性质 矩阵的基本运算:矩阵的加法,每一个对应元素相加,对应结果的矩阵 例子:矩阵A和矩阵B表示的是同学上学期和下学期的课程的成绩,两个矩阵相加就 ...

  2. python中向量长度_Python线性代数学习笔记——什么是向量?实现我们自己的向量...

    上一篇已经说明了为什么要学习线性代数? 下面我们正式开始学习 一切从向量开始 什么是向量,究竟为什么引⼊向量? 从研究一个数,变成了研究一组数,向量表示的就是一组数 学过中学物理都知道力,速度,加速度 ...

  3. python向量点乘_Python线性代数学习笔记——向量的点乘与几何意义,实现向量的点乘操作...

    好久没有写文章了,抱歉了,以后每天都会更新一篇的.... 向量的点乘,也就是两个向量相乘: 我们是不这么定义的,不是两个向量对应的坐标元素相乘: 两个向量"相乘",结果是⼀个数!, ...

  4. c++矩阵类_Python线性代数学习笔记——矩阵的基本运算和基本性质,实现矩阵的基本运算...

    当学习完矩阵的定义以后,我们来学习矩阵的基本运算,与基本性质 矩阵的基本运算:矩阵的加法,每一个对应元素相加,对应结果的矩阵 例子:矩阵A和矩阵B表示的是同学上学期和下学期的课程的成绩,两个矩阵相加就 ...

  5. python 网络接口 开发_Python自动化学习笔记(八)——接口开发、发送网络请求、发送邮件、写日志...

    1.接口开发(flask模块) Python自动化学习笔记(七)接口开发部分的内容补充 1.1参数为json格式: flask.request.is_json #判断参数是否是json格式 flask ...

  6. python ide安装_Python基础学习笔记(一)安装以及IDE的配置

    一.初识Python 版本:python-3.4.3.amd64 初次接触Python,没有使用Python 2.x进行开发真实项目的经历.所以不知2.x版本和3.x版本孰优孰劣,目前是作为一门兴趣来 ...

  7. python networkx教程_Python NetworkX 学习笔记

    chapter1 快速开始 import networkx as nx from matplotlib import pyplot as plt G = nx.Graph() # create a g ...

  8. python 基础代谢率计算_Python的学习笔记案例3--基础代谢率计算4.0

    前面的3节课已经将BMR计算讲完,这一节主要讲解一下在遇到异常情况怎么处理? 下面是异常处理机制: --引入异常处理机制可以用来解决程序运行时的错误 语法: try: except: except: ...

  9. python画猪猪侠_python的学习笔记/002-3(2018-5-20)

    群集类型 群集类型 列表 元组 字典 集合 list tuple dict set 1.列表 列表的类型是list,特点为有序,具备索引,内容与长度可以变动.要创建列表,可以使用[]直接表示法,列表中 ...

  10. python pywin32教程_python pywin32学习笔记

    参考博客链接 参考博客链接 pyhandle=win32gui.FindWindow(classname,text) pyhandle windows窗体句柄,int 类型 className 窗体类 ...

最新文章

  1. IPSEC ×××实验六:ASA SSL ×××
  2. robotframework 常用关键字
  3. unity2D技术学习与整理
  4. SpringBoot之Interceptor拦截器注入使用
  5. CCNA-(5)-IP路由汇总
  6. 解决默写浏览器中点击input输入框时,placeholder的值不消失的方法
  7. 给大家讲讲在哪些地方发外链最好
  8. Windows 10 下载官方正版ISO镜像文件
  9. 穷举法 解决用3个水桶等分8升水 python实现
  10. String方法汇总
  11. 什么是动态代理?动态代理有哪些应用?如何编写动态代理案例
  12. 规则引擎 Drools:规则引擎概述
  13. 这4款神级软件 最好用的软件
  14. Django教程 —— 初步完善图书管理系统
  15. 图解|什么是缓存系统三座大山
  16. 《新学期,新Flag》乘风破浪
  17. 工行银企互联接入详解(3)--启动NC
  18. 微信昵称表情符号前端显示问题
  19. 软考高项笔记 | 国家信息化体系六要素
  20. vue-echarts画深度图

热门文章

  1. 百度编辑器(UEditor)工具栏扩展秀米的编辑器工具
  2. Android 暗黑模式
  3. 真核有参转录组测序标准分析
  4. C++ 打印机状态查询之SNMP协议
  5. Young不等式的一个新证明
  6. html微博登录代码,微博第三方登陆js实现
  7. 简单线性相关案例-求相关系数
  8. 如何删除wps/word中指定页页眉
  9. 【项目实战】——历史数据归档
  10. PDF/CDF 用matlab计算和绘图1