全文共4206字,预计学习时长8分钟
觉得物理太难了?本文将模拟N维空间中的某些向量场(例如电磁场),以便你更清晰地理解这些概念。
理论基础
向量
任何物理场景的基本元素都是向量。我们需要什么?需要向量的算术运算、距离、模块以及一些技术层面的东西。从列表中得到向量。下面是它初始化的样子:
class Vector(list): def __init__(self, *el): for e in el: self.append(e)
现在,创造一个向量:
v = Vector(1, 2, 3)
再进行加法算术运算:
class Vector(list):... def __add__(self, other): if type(other) is Vector: assert len(self) == len(other), "Error 0" r = Vector() for i in range(len(self)): r.append(self[i] + other[i]) return r else: other = Vector.emptyvec(lens=len(self), n=other) return self + other
结果:
v1 = Vector(1, 2, 3)v2 = Vector(2, 57, 23.2)v1 + v2>>> [3, 59, 26.2]
同样需定义所有的算术运算(向量的完整代码放在最后)。现在需要一个距离函数。创建dist (v1, v2)并不难—但也并不美观,因此重新定义 %运算符。
class Vector(list):... def __mod__(self, other): return sum((self - other) ** 2) ** 0.5
结果:
v1 = Vector(1, 2, 3)v2 = Vector(2, 57, 23.2)v1 % v2>>> 58.60068258988115
还需要一些方法来快速生成向量并且完美地输出。这没有什么棘手的