Эти примеры используют Общую теорию относительности Эйнштейна, чтобы вычислить геодезию в кривом пространстве-времени.
Нет никаких предпосылок для этого примера.
Этот пример вычисляет прецессию планеты Меркурий численно. Прецессия является небольшим вращением эллиптической орбиты вокруг солнца. Аналитически, использование уравнений Общей теории относительности значение чрезвычайно мало, дополнительные 43 дюйма (секунды дуги) в век. Вторая дуга является 1/3600-й из одной степени (считающий 360 градусов для полного оборота.) Даже при том, что дополнительная прецессия чрезвычайно мала, она соответствует точно с наблюдением. Чистая ньютонова механика (если мы принимаем решение проигнорировать все другие планеты нашей солнечной системы) не предсказывает прецессии.
Это приложение использует метод Эйлера с переменным временным шагом, где главный временной шаг составляет.5 секунд. Мы уменьшаем временной шаг, когда мы приближаемся к одному полному обороту. Прецессия вычисляется, когда планета достигает своего максимального расстояния от солнца, для которого мы вычисляем ее относительный угол к координатной оси.
Сгенерируйте MEX-функцию с помощью команды codegen
сопровождаемый под названием файл MATLAB, чтобы скомпилировать.
codegen gr_mercury_precession
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
Уравнения Эйнштейном движения в Общей теории относительности могут обработать любой объект на любой скорости, поэтому давайте применим его к фотонам, которые перемещаются со скоростью света. В этой настройке у нас есть черная дыра перед фоновым изображением. Чтобы сделать эффект более видимым, мы увеличиваем массу черной дыры к астрономическим пропорциям, а также фоновому изображению. Таким образом мы можем изучить эффекты гравитационного lensing; фоновое изображение становится искаженным кривым пространством-временем, произведенным черной дырой.
codegen gr_raytrace
Трассировка лучей изображение занимает минуту или два на 2 ГГц x86 машина. На вашем экране вы видите исходное изображение (Vittorio Emanuele Mall в Милане, Италия) и, направо, представленное изображение того же изображения с черной дырой перед ним.
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%