文档

广义相对论

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

先决条件

本例没有任何先决条件。

创建新文件夹并复制相关文件

下面的代码将在当前工作文件夹(pwd)中创建一个文件夹。新文件夹将只包含与本示例相关的文件。如果不想影响当前文件夹(或者不能在此文件夹中生成文件),则应更改工作文件夹。

运行命令:新建文件夹并复制相关文件

coderdemo_setup (“coderdemo_gr”);

例如:计算水星的岁差

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

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

生成MEX函数:水星岁差

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

codegengr_水星旋进

“gr_mercury_进动”函数调用其他MATLAB函数,但在调用“codegen”时只需指定入口点函数。

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

运行MEX功能:水星岁差

运行生成的MEX函数。

水星进动
Progress: 5% Progress: 10% Progress: 15% Progress: 20% Progress: 25% Progress: 30% Progress: 35% Progress: 40% Progress: 45% Progress: 50% Progress: 55% Progress: 60% Progress: 65% Progress: 70% Progress: 75% Progress: 80% Progress: 85% Progress: 90% Progress: 95% Progress: 100% precession: 0.10468"(0年87.87009天)=> 43.481"/century

例如:射线追踪黑洞

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

生成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%

清理

删除文件并返回到原始文件夹

运行命令:清除

清理
这个话题有用吗?