Python的波浪模拟

时间:2011-02-10 11:11:30

标签: python numpy simulation physics wave

我想在三维空间中模拟一些具有吸收和反射的传播波。我想用python做。我应该使用numpy吗?我应该使用一些特殊的库吗?

我该如何模拟波浪?我可以使用波动方程吗?但是,如果我有反思怎么办? 有更好的方法吗?我应该用矢量吗?但是当光线发散时,强度会降低。困难的。

提前致谢。

4 个答案:

答案 0 :(得分:12)

如果你在Python中进行任何计算密集型数值模拟,你应该肯定使用NumPy。

在任意形状材料中模拟电磁波的最通用算法是finite-difference time domain method(FDTD)。它在3-D晶格上一次一个地解决波动方程。但是,对自己编程非常复杂,而且使用Meep等专用软件包可能会更好。

有关于如何编写自己的FDTD模拟的书籍:here's onehere's包含一维FDTD代码的文档以及超过1维的解释,以及Google搜索“{{3 “会找到更多相同的东西。

您也可以通过假设所有波都是平面波来解决问题,然后您可以使用向量和writing FDTD。或者,如果要对从平面或曲面传输和反射的高斯光束建模,可以使用ABCD矩阵形式(也称为Fresnel equations)。这考虑了光束的发散。

答案 1 :(得分:3)

如果您要解决3D自定义PDE,我建议至少查看FiPy。它将为您省去从头开始构建大量矩阵调节器和求解器的麻烦。它使用numpy和/或trilinos。以下是一些examples

答案 2 :(得分:0)

我建议您使用我的项目GarlicSim作为构建模拟的框架。您仍然需要自己编写算法,可能是在Numpy中,但GarlicSim可以为您节省大量样板,并允许您以灵活的方式探索模拟结果,类似于版本控制系统。

答案 3 :(得分:-3)

不要使用Python。我已经尝试过将它用于计算成本高昂的东西,但事实并非如此。

如果您需要在Python程序中模拟wave,请在C / C ++中编写必要的代码并将其导出到Python。 以下是C API的链接:http://docs.python.org/c-api/
请注意,它不是世界上最简单的API:)