网站首页 > 基础教程 正文
如同对标量可以进行“数”运算一样,我们可以对向量进行运算,从而得到一个新的向量。不过,向量跟标量不同。标量只有大小,比如:质量、密度、温度等,而向量(物理学中称作矢量)既有大小,又有方向,比如:力、位移、速度等。
到图中指定点,长度为K的线段(标量),会有多条,但是确定方向(与X坐标轴夹角)后,可以唯一确定一个向量。
本章以二维向量为例,将介绍基本向量运算:向量加减法,向量分量和长度,向量数乘。
向量加减法
我们小时候可能玩过FC射击类游戏《魂斗罗》,玩家控制游戏角色可以在屏幕上移动:前进、后退、上下跳、斜跳(不考虑下落)等。
1.我们以屏幕左下角作为原点,建立坐标系。
角色所在的位置记为向量v。假设向量v的坐标是:
2.我们控制角色向前移动一步
跟向量w相加即可:v+w=+=
向量加法满足平行四边形法则:
3.我们控制角色往左上方向斜跳(不考虑下落)一步
1)使用向量加法
跟向量w相加即可:v+w=+=
向量加法满足平行四边形法则:
2)使用向量减法
跟向量w相减即可:
v-w=-=v+(-w)=+=
从运算过程可以看出,v-w相当于v+(-w),依然满足平行四边形法则。
向量分量和长度
根据平行四边形法则,我们可以将某一个向量,分别沿X轴和Y轴进行分解,会产生两个向量分量。
比如:我们将向量w沿X轴和Y轴进行分解,会得到和两个向量。
我们可以找到一个直角三角形,应用“勾股定理”计算向量w的长度。向量的长度也叫做向量的模。
向量数乘
向量的数乘运算,可以看作多次向量加法运算。比如:向量w,进行数乘运算:
3w=++= =
可以看出,向量的数乘运算,会将向量(包括:向量的分量)按给定的系数进行缩放。
解决问题
1.上一章我们绘制了一个正方形,运用向量运算可以将该正方形整体移动到右上角。
def add(*vectors):
return (sum([vector[0] for vector in vectors]),
sum([vector[1] for vector in vectors]))
#定义一组二维向量
two_dim_vectors=[(-2,2),(0,2),(2,2),(2,0),(2,-2),(0,-2),(-2,-2),(-2,0)]
move_vector=(1,1)
move_two_dim_vectors=[add(two_dim_vector,move_vector) for two_dim_vector in two_dim_vectors]
#绘制正方形
draw_objects(Points(two_dim_vectors,color=red),
Lines(two_dim_vectors,color=red),
Points(move_two_dim_vectors),
Lines(move_two_dim_vectors)
)
绘制效果图:
2.令u为向量。假定有另一个正整数坐标为向量v,且它与u的距离为13,那么如何从u到v?
直接求解比较困难,我们可以使用“穷举法”。假设以u为圆点画一个圆,圆的半径为13,可得待搜索的值域范围:X轴为[-12,14],Y轴坐标为[-14,12]。
from math import sqrt
#向量减法
def subtract(v1,v2):
return (v1[0]-v2[0],v1[1]-v2[1])
#向量的长度
def length(v1):
return sqrt(v1[0]**2+v1[1]**2)
#计算向量距离:
def distance(v1,v2):
return length(subtract(v1,v2))
#穷举法寻找
for n in range(-12,15):
for m in range(-14,13):
if distance((1,-1),(n,m)) == 13 and n>m>0:
print((n,m))
输出结果:
(13, 4)
从u到v,可以先右移12个单元格,再上移5个单元格。
- 上一篇: 高中数学——平面向量
- 下一篇: Java中Vector和ArrayList之间的区别
猜你喜欢
- 2024-12-06 Java中Vector和ArrayList之间的区别
- 2024-12-06 高中数学——平面向量
- 2024-12-06 高中数学:向量垂直、共线在解析几何中的应用
- 2024-12-06 复数在高中数学中的应用
- 2024-12-06 不一样的余弦定理
- 2024-12-06 9.理解点和向量的基本操作
- 2024-12-06 深入理解:推荐系统中的召回与排序(一)
- 2024-12-06 空间向量的基本概念、空间向量的数乘运算(小知识点)
- 2024-12-06 高等数学之向量代数与空间解析几何知识点与题型总结
- 2024-12-06 C++ vector 简介
- 最近发表
- 标签列表
-
- gitpush (61)
- pythonif (68)
- location.href (57)
- tail-f (57)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- css3动画 (57)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- canvasfilltext (58)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- node教程 (59)
- console.table (62)
- c++time_t (58)
- phpcookie (58)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)