我想在三维空间中的某些物体上模拟具有吸收和反射的传播波。我想用python来做。我应该使用 numpy 吗?我应该使用一些特殊的库吗?
如何模拟波浪?我可以使用波动方程吗?但是,如果我有反思呢?有没有更好的方法?我应该用向量来做吗?但是当光线发散时,强度会降低。难的。
提前致谢。
我想在三维空间中的某些物体上模拟具有吸收和反射的传播波。我想用python来做。我应该使用 numpy 吗?我应该使用一些特殊的库吗?
如何模拟波浪?我可以使用波动方程吗?但是,如果我有反思呢?有没有更好的方法?我应该用向量来做吗?但是当光线发散时,强度会降低。难的。
提前致谢。
如果您在 Python 中进行任何计算密集型数值模拟,则绝对应该使用 NumPy。
模拟任意形状材料中的电磁波的最通用算法是有限差分时域法(FDTD)。它在 3-D 晶格上求解波动方程,一次一个时间步长。但是,自己编程非常复杂,最好使用Meep等专用包。
有一些关于如何编写自己的 FDTD 模拟的书籍:这是一个,这是一个文档,其中包含一些 1-D FDTD 的代码和多维的解释,谷歌搜索“编写 FDTD ”会发现更多相同的内容。
您也可以通过假设所有波都是平面波来解决这个问题,然后您可以使用向量和菲涅耳方程。或者,如果您想模拟从平面或曲面传输和反射的高斯光束,您可以使用 ABCD 矩阵形式(也称为光线传输矩阵)。这考虑了光束的发散。
我建议您使用我的项目GarlicSim作为构建模拟的框架。您仍然需要自己编写算法,可能在 Numpy 中,但 GarlicSim 可能会为您节省大量样板文件,并允许您以类似于版本控制系统的灵活方式探索您的模拟结果。
不要使用 Python。我已经尝试将它用于计算昂贵的东西,但它并不是为此而生的。
如果您需要在 Python 程序中模拟波浪,请用 C/C++ 编写必要的代码并将其导出到 Python。
这是 C API 的链接:http: //docs.python.org/c-api/
请注意,它不是世界上最简单的 API :)