我目前正在尝试绘制并显示光子从太阳中心到到达表面并发射的路径。我还想展示发生这种情况所花费的时间。
到目前为止,我所做的只是设置参数(太阳密度、汤普森横截面、电子质量、质子质量),并使用这些参数找到光子在太阳中的平均自由路径。我知道我将不得不设置某种数组,并为每个随机游走创建随机数。我不知道如何进行随机游走,以便光子可以在 x、y 或 z 值的任何方向上移动。
我也不知道我应该循环什么来创建这个随机游走。我需要它,以便当 d 等于或大于太阳的半径时随机游走将停止。我知道 d=l*sqrt(N),其中 l 是每一步的平均大小,或平均自由路径,N 是所走的步数。
最后,我不知道从哪里开始绘制结果。我想展示光子从中心穿过球体的动画,该球体类似于太阳。
以下是我迄今为止唯一的代码,任何帮助将不胜感激。
from random import random, seed, randint
import numpy as np
import matplotlib.pyplot as plt
N=100000
rho=1408.6 #the mass density of the sun
thompson=6.65*10**-29 #Thompson cross-section for an electro
proton=1.67*10**-27 #mass of a proton
electron=9.11*10**-31 #mass of an electron
radius=6.9634*10**8 #radius of a sun
c=2.99*10**8
mfp=(electron+proton)/(rho*thompson*np.sqrt(2))
timestep=mfp/c