我想模擬三維空間中某些物體吸收和反射的傳播波。我想用python來做。我應該使用numpy嗎?我應該使用一些特殊的圖書館嗎?使用Python進行波浪模擬
如何模擬波?我可以使用波動方程嗎?但是如果我有反思呢? 有沒有更好的方法?我應該使用矢量嗎?但是當射線發散時,強度變得更低。難。
在此先感謝。
我想模擬三維空間中某些物體吸收和反射的傳播波。我想用python來做。我應該使用numpy嗎?我應該使用一些特殊的圖書館嗎?使用Python進行波浪模擬
如何模擬波?我可以使用波動方程嗎?但是如果我有反思呢? 有沒有更好的方法?我應該使用矢量嗎?但是當射線發散時,強度變得更低。難。
在此先感謝。
如果您在Python中進行任何計算密集型數值模擬,您應該使用NumPy來確定的確實。
在任意形狀的材料中模擬電磁波的最一般的算法是finite-difference time domain method(FDTD)。它一次一個地在三維網格上求解波動方程。但是,編寫自己的程序相當複雜,而且您最好使用專用包(如Meep)。
有關於如何編寫自己的FDTD仿真書:here's one,here's帶1-d FDTD一些代碼和解釋就超過1種尺寸文檔,谷歌搜索「writing FDTD」會找到你更多相同的。
你也可以通過假設你所有的波都是平面波來解決問題,然後你可以使用矢量和Fresnel equations。或者,如果您想要建模從平面或曲面傳輸和反射的高斯光束,則可以使用ABCD矩陣形式(也稱爲ray transfer matrices)。這考慮了光束的發散。
請勿使用Python。我試過用它來計算昂貴的東西,它只是沒有做到這一點。
如果需要來模擬一個Python程序一揮手,用C/C++必要的代碼,並將其導出到Python。
這裏的C API鏈接:http://docs.python.org/c-api/
被警告,這是不是世界:)
我建議您使用我的項目GarlicSim作爲構建仿真的框架。您仍然需要自己編寫算法,可能在Numpy中,但GarlicSim可以爲您節省大量樣板,並允許您以靈活的方式探索仿真結果,類似於版本控制系統。
先選擇算法,然後詢問Python中的實現。 – 2011-02-10 11:21:10