Simulation d'onde avec Python
Je veux simuler la propagation des ondes de l'absorption et de la réflexion sur certains corps dans l'espace tridimensionnel. Je veux le faire avec python. Dois-je utiliser numpy? Certaines bibliothèques spécialisées que je devrais utiliser?
Comment puis-je simuler la vague? Puis-je utiliser l'équation d'onde? Mais que faire si j'ai une réflexion?
Est-il une meilleure méthode? Devrais-je le faire avec des vecteurs? Mais quand les rayons divergent l'intensité devient plus faible. Difficile.
Merci d'avance.
Choisir un algorithme d'abord, puis de demander à propos de la mise en œuvre en Python.
OriginalL'auteur kame | 2011-02-10
Vous devez vous connecter pour publier un commentaire.
Si vous n'avez aucune de calcul intensif de la simulation numérique en Python, vous devez certainement utiliser NumPy.
La plus générale de l'algorithme de simulation d'une onde électromagnétique dans l'arbitraire en forme des matériaux est la différences finies dans le domaine temporel méthode (FDTD). Il résout l'équation d'onde, une étape à la fois, sur un 3-D treillis. Il est assez compliqué de programmer vous-même, cependant, et vous êtes probablement mieux d'utiliser un kit dédié, comme Meep!.
Il y a des livres sur comment écrire vos propres simulations FDTD: voici un, voici un document avec un peu de code, pour les 1-D FDTD et des explications sur plus de 1 dimension, et Googler "écrit FDTD" vous permettra de trouver plus de la même chose.
Vous pourrait également aborder le problème en supposant tous vos ondes sont des ondes planes, alors vous pouvez utiliser les vecteurs et les Les équations de Fresnel. Ou si vous voulez le modèle de faisceau Gaussien être transmise et réfléchie à partir de surfaces planes ou courbes, vous pouvez utiliser l'ABCD de la matrice du formalisme (aussi connu comme ray matrices de transfert). Il prend en compte la divergence des faisceaux.
Il semble difficile de se lancer Meep sur Windows. 🙁
Je sais. C'est très dommage. Cependant, c'est la seule solution open source, je suis conscient de l' - sinon, vous pouvez soit écrire votre propre (voir modification de la réponse) ou l'utilisation d'un coûteux programme commercial (RSoft, Lumerical, etc.)
OriginalL'auteur ptomato
Si vous êtes à la résolution de 3D custom PDEs, je recommande au moins un coup d'oeil à FiPy. Il va vous épargner la peine de la construction d'un beaucoup de votre matrice de climatiseurs et les solveurs à partir de zéro. Il utilise numpy et/ou trilinos. Voici quelques exemples.
OriginalL'auteur Paul
Je vous recommande d'utiliser mon projet GarlicSim comme le cadre dans lequel vous construisez la simulation. Vous aurez toujours besoin d'écrire votre algorithme de vous-même, probablement dans Numpy, mais GarlicSim peut vous faire économiser un tas de standard et de vous permettre d'explorer votre les résultats de la simulation d'une manière souple, similaire aux systèmes de contrôle de version.
OriginalL'auteur Ram Rachum
Ne pas utiliser Python. J'ai essayé de l'utiliser pour le calcul des choses chères et il n'était tout simplement pas fait pour ça.
Si vous besoin pour simuler une onde dans un programme en Python, écrire le code nécessaire en C/C++ et de les exporter vers Python.
Voici un lien vers l'API C: http://docs.python.org/c-api/
Être averti, il n'est pas facile de l'API dans le monde 🙂
Bon, je pense que je n'ai pas à le faire nécessairement en python :/
-1 parce que Python a largement utilisé les bibliothèques scientifiques comme numpy/scipy. Ont également un oeil à d'autres moyens d'optimiser le code python comme cython, psyco. Enfin, l'utilisation d'algorithmes efficaces 😉
Spadaccini et n'oubliez pas d'Armure! 😀 (c'est à l'intérieur de scipy bien, mais vaut la peine de mentionner explicitement)
Je n'ai jamais utilisé de tissage, merci pour l'astuce! 🙂
OriginalL'auteur x10