利用 numpy 实现物理计算--物理向量符号与numpy数组的对应 ( jupyterlab 例子)

前言

通过一个简单的例子,聊一聊数理代码设计入门。
使用 py 函数、numpy数组和 Pandas 进行位移计算,逐步演示如何将数理符号的数学形式化公式,转换成易读和易用的py代码,最终给出了一个在 jupyterlab 或 jupyter notebook 中的交互式模型的实现。

运行环境和依赖包

运行环境:jupyter notebook 或 jupyterlab
依赖包:numpy pandas matplotlib sympy ipywidgets

实现一个向量

我们经常使用 python 来进行物理计算,这是由于 py 采用伪代码风格,利于清晰的表达物理模型的业务逻辑,同时,代码又具备一定的工程实现能力。今天想分享一个小例子,演示一下将形式化的数理公式,转换成易读、易⽤的py代码。

使用 numpy 的关键是具有数列(或向量)的编程思维,其实就是如何使用表的思维,设一个向量 r ⃗ \vec{r} r 具有三个分量,即: r ⃗ = ( x , y , z ) \vec{r}= (x,y,z) r =(x,y,z) ,那么该向量在不同时刻的变化,可以记录到如下表格:

x y z
0 0 0
1 1 1
2 2 2
3 3 3

如果我们定义这个表格每一行代表一个时刻,那么每一列就是 r ⃗ \vec{r} r 其中一个向量在每一个时刻的值。当我们用numpy来实现这个向量时,则可以采用如下代码:

import numpy as np

r = np.array([[0,0,0],[1,1,1],[2,2,2],[3,3,3]],dtype='float16')
r.shape # 查看一下numpy数组的形状,输出应为:(3, 3)

假设我们定义第一行为 t 0 t_0 t0 时刻的向量取值,那么可以用 numpy 的切片功能轻松获取该值:

r[0] # t0 时刻的值,输出应为:array([0., 0., 0.], dtype=float16)

同理,其他时刻的值,只需要选择不同的行即可。那么有了这个观点,实现物理计算就容易多了。我个人觉得 numpy 实现数理计算的优势在于代码的表达,首先代码本来也是形式化的,如果代码接近于原始物理模型,那么易读性自然也就具备了。

简化公式表达

来一个简单的二维运动的例子,熟悉一下 numpy 的实现过程,看看代码能不能对小白也很好懂。

例子: 有一只兔子跑过一个停车场,非常奇怪的是停车场上正巧有个坐标系,兔子的位置坐标对于时间的函数有下式给出:
x = − 0.31 t 2 + 7.2 t + 28 y = 0.22 t 2 − 9.1 t + 30 \begin{aligned} x &= -0.31t^2+7.2t+28 \\ y &= 0.22t^2-9.1t+30 \end{aligned} xy=0.31t2+7.2t+28=0.22t29.1t

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值