Je suis en train de réécrire un modèle de simulation de monte carlo dans Matlab en mettant l'accent sur la lisibilité. Le modèle implique de nombreuses particules (représentées par (x, y, z)) suite à une marche aléatoire sur un petit ensemble d'états avec certaines probabilités de terminaison. L'information pertinente pour la sortie est le nombre de particules qui se terminent dans un état donné.Comment vectoriser une simulation de marche aléatoire dans Matlab
La simulation nécessite suffisamment de particules pour que chaque particule soit individuellement coûteuse. La vectorisation semble être le moyen d'obtenir des performances de Matlab, mais existe-t-il une manière idiomatique de créer une version vectorisée de cette simulation dans Matlab? Je me bats la tête contre le mur pour y arriver - j'ai même essayé de créer une matrice nStates x nParticles représentant chaque combinaison particule-état, mais cette approche devient rapidement hors de contrôle (lisibilité) car les particules rebondissent état à déclarer indépendamment l'un de l'autre. Devrais-je juste mordre la balle et passer à une langue plus appropriée pour cela?
Difficile de faire des commentaires utiles lorsque vous donnez si peu de détails sur la nature du problème. –
Excuses, j'essayais de le garder abstrait pour plus de clarté. Je simule le transport de la lumière à travers des couches de matière organique. Chaque particule (photon) frappe le matériau et peut être réfléchie ou réfractée. Ceci est déterminé avec une certaine probabilité proportionnelle aux propriétés du matériau et à l'angle d'incidence. La particule peut "rebondir" à l'intérieur des couches. Je veux savoir combien sont reflétés dans l'ensemble, et combien le traversent. Je fais ceci en tirant beaucoup de particules et en traçant leurs chemins. La question est, comment tracer ces chemins en tant que code vectorisé plutôt qu'une boucle while pour chaque particule. – Cosbynator