主要内容

广义相对论

这些例子是用爱因斯坦的广义相对论来计算弯曲时空中的测地线。

先决条件

本例没有先决条件。

例:计算水星的进动

这个例子用数值计算了水星的进动。岁差是围绕太阳的椭圆轨道的轻微旋转。根据广义相对论的方程分析,这个值非常小,每世纪多出43英寸(弧秒)。1角秒是1度的1/3600(一圈为360度)。尽管额外的进动非常小,但它与观测结果完全吻合。纯牛顿力学(如果我们选择忽略太阳系的所有其他行星)预测不出岁差。

这个应用程序使用的是欧拉方法,其中主要时间步长为0.5秒。当我们接近一个完整的旋转时,我们减少了时间步长。岁差是在行星到达它与太阳的最大距离时计算出来的,我们计算出它与坐标轴的相对角度。

生成MEX函数:水星进动

使用该命令生成一个MEX功能codegen后面跟着要编译的MATLAB文件的名称。

codegengr_mercury_precession

gr_mercury_precession函数调用其他MATLAB函数,但在调用时只需要指定入口点函数codegen

默认情况下,codegen生成一个名为gr_mercury_precession_mex在当前文件夹中。这允许您测试MATLAB代码和MEX函数,并比较结果。

运行MEX函数:水星进动

运行生成的MEX函数。

gr_mercury_precession_mex
进度:5%
进度:10%
进度:15%
进度:20%
进度:25%
进度:30%
进度:35%
进度:40%
进度:45%
进度:50%
进度:55%
进度:60%
进度:65%
进度:70%
进度:75%
进度:80%
进度:85%
进度:90%
进度:95%
进度:100%

岁差:0.10468"(0年87.87009天)=> 43.481"/世纪

例子:射线追踪黑洞

爱因斯坦在广义相对论中的运动方程可以处理任何速度下的任何物体,所以让我们把它应用到以光速传播的光子上。在这个配置中,我们有一个黑洞在背景图像的前面。为了使效果更明显,我们将黑洞的质量增加到天文比例,以及背景图像。这样我们就可以研究引力透镜效应;背景图像被黑洞产生的弯曲时空扭曲了。

生成一个MEX函数:射线追踪黑洞

codegengr_raytrace

运行MEX函数:射线追踪黑洞

在2ghz的x86机器上,光线追踪图像需要一到两分钟。在你的屏幕上,你可以看到原始图片(意大利米兰的维托里奥·伊曼纽尔购物中心),在右边,是同一张照片的渲染图像,它前面有一个黑洞。

gr_raytrace_mex (“mall.jpg”);

进度:5%
进度:10%
进度:15%
进度:20%
进度:25%
进度:30%
进度:35%
进度:40%
进度:45%
进度:50%
进度:55%
进度:60%
进度:65%
进度:70%
进度:75%
进度:80%
进度:85%
进度:90%
进度:95%
进度:100%