numerical-methods - 乘风破浪双曲 PDE 的数值方案,lorena barba 课程,需要帮助
问题描述
我是一名 Python 初学者,正在尝试了解计算机科学,我一直在通过学习我已经熟悉的概念/主题来学习如何使用它,例如计算流体力学和有限元分析。我获得了机械工程学位,因此没有多少CS背景。
我正在学习 Lorena Barba 在 jupyter notebook viewer 上的系列,实用数值方法,我正在寻求一些帮助,希望有人熟悉 CFD 和 FEA 的一般主题。
如果您单击下面的链接并转到以下输出行,您会在下面找到我的内容。对在定义的函数内操作的这段代码真的很困惑。
反正。如果有人在那里,对如何解决学习 python 有任何建议,帮助
在[9]
rho_hist = [rho0.copy()]
rho = rho0.copy() **# im confused by the role of this variable here**
for n in range(nt):
# Compute the flux.
F = flux(rho, *args)
# Advance in time using Lax-Friedrichs scheme.
rho[1:-1] = (0.5 * (rho[:-2] + rho[2:]) -
dt / (2.0 * dx) * (F[2:] - F[:-2]))
# Set the value at the first location.
rho[0] = bc_values[0]
# Set the value at the last location.
rho[-1] = bc_values[1]
# Record the time-step solution.
rho_hist.append(rho.copy())
return rho_hist
解决方案
前两行的目的是为rho0
历史保留和提供它的副本(复制以便以后的更改rho0
不会在此处反映),并作为rho
在计算期间使用和修改的“工作”变量的初始值.
背景是python列表和数组变量始终是对相关对象的引用。通过分配变量,您可以生成引用的副本、对象的地址,而不是对象本身。两个变量都指向同一个内存区域。因此不使用.copy()
会改变rho0
。
a = [1,2,3]
b = a
b[2] = 5
print a
#>>> [1, 2, 5]
本身包含结构化数据对象的复合对象将需要deepcopy
复制所有级别的数据。
推荐阅读
- python - 我想显示类别明智的产品并分页
- ios - 当每次都没有进入for循环时,如何等到在Swift中执行查询?
- api - Jasperreports 服务器:未通过 REST 显示的报告
- java - Cassandra 中的顺序批量查询
- java - 使用 ANT 在 Wildfly 上部署 JavaEE 项目
- javascript - 当 webpack 处于生产模式时,为什么 babel 将普通函数编译为箭头函数?
- sql - 将具有相同 ID 的行组合成具有更多列的单行
- javascript - 数据表多重过滤功能
- dialogflow-cx - 如何在 Dialogflow CX 中将条件设置为真
- sql - 提高 CTE 的性能