Эти примеры используют Общую Относительность Эйнштейна, чтобы вычислить геодезику в изогнутом пространстве-времени.
Для этого примера нет необходимых условий.
Этот пример вычисляет прецессию планеты Меркурий численно. Прецессия является небольшим вращением эллиптической орбиты вокруг Солнца. Аналитически, используя уравнения общей относительности, значение чрезвычайно мало, дополнительные 43 "(угловые секунды) на век. Дуговая секунда - 1/3600-я часть одной степени (считая 360 степени для полного оборота.) Хотя дополнительная прецессия чрезвычайно мала, она точно совпадает с наблюдением. Чистая ньютоновская механика (если мы принимаем решение игнорировать все другие планеты нашей Солнечной системы) не предсказывает прецессии.
Это приложение использует метод Эйлера с переменным временным шагом, где основной временной шаг составляет 5 секунд. Мы сокращаем временной шаг, приближаясь к одной полной революции. Прецессия вычисляется, когда планета достигает своего максимального расстояния от Солнца, для которого мы вычисляем ее относительный угол к координатной оси.
Сгенерируйте MEX-функцию, используя команду codegen
далее указывается имя файла MATLAB для компиляции.
codegen gr_mercury_precession
Code generation successful.
The gr_mercury_precession
функция вызывает другие функции MATLAB, но при вызове необходимо задать только функцию точки входа codegen
.
По умолчанию codegen
генерирует MEX-функцию с именем gr_mercury_precession_mex
в текущей папке. Это позволяет вам протестировать код MATLAB и MEX-функцию и сравнить результаты.
Запустите сгенерированную MEX-функцию.
gr_mercury_precession_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 years 87.87009 days) => 43.481"/century
Уравнения движения Эйнштейна в общей относительности могут обрабатывать любой объект с любой скоростью, поэтому давайте применим его к фотонам, которые перемещаются со скоростью света. В этом строении у нас перед фоновым изображением чёрное отверстие. Чтобы сделать эффект более заметным, мы увеличиваем массу чёрного отверстия до астрономических пропорций, а также фоновое изображение. Таким образом мы можем изучить эффекты гравитационного линзирования; фоновое изображение искажается изогнутым пространством-временем, образованным чёрным отверстием.
codegen gr_raytrace
Code generation successful.
Трассировка снимка занимает минуту или две на машине x86 с частотой 2 ГГц. На вашем экране вы видите оригинальную картину (торговый центр Vittorio Emanuele в Милано, Италия) и, справа, визуализированное изображение той же картинки с чёрным отверстием перед ней.
gr_raytrace_mex('mall.jpg');
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%