Релятивистское сложение скоростей на Julia¶
В специальной теории относительности сложение скоростей нелинейно и описывается формулой:
$$u \oplus v = \frac{u + v}{1 + \frac{u \cdot v}{c^2}} $$
Можно представить скорости в виде кватернионов и реализовать это сложение в Julia.
В отличие от обычных векторных операций, кватернионный формализм:
Автоматически учитывает релятивистские эффекты — нелинейность сложения скоростей emerges естественным образом из алгебраических свойств кватернионов, исключая возможность "механического" сложения, запрещенного специальной теорией относительности.
Обеспечивает геометрическую целостность — операции с кватернионами сохраняют инвариантность относительно поворотов системы отсчета, что критически важно для задач астрофизики и квантовой механики.
Упрощает вычисления — одна кватернионная операция заменяет серию матричных преобразований Лоренца, сокращая объем вычислений в сложных системах (например, при моделировании движения релятивистских частиц в ускорителях).
Библиотека Quaternions.jl¶
Сложение релятивистских скоростей при помощи кватернионов можно выполнить при помощи специализированной библиотеки для работы с этими объектами.
Pkg.add("Quaternions")
Рассмотрим умозрительную задачу, где вы движетесь относительно наблюдателя со скоростью 60% от скорости света и производите выстрел вдоль оси движения, причем снаряд или пуля перемещаются относительно вас со скоростью 40% от скорости света.
Мы знаем, что скорость снаряда относительно первоначального наблюдателя не может превышать скорость света, но приблизится к ней.
using Quaternions
# Скорости представим как кватернионы (скалярная часть = 0)
function relativistic_velocity_addition(u, v, c=1.0)
uv = -((u * v).s) # кватернионное произведение
γ = 1 / (1 + uv / c^2) # релятивистский фактор
return γ * (u + v)
end
# Пример: две скорости вдоль оси X
u = quat(0, 0.6, 0, 0) # 0.6c
v = quat(0, 0.4, 0, 0) # 0.4c
u_plus_v = relativistic_velocity_addition(u, v)
println("Результирующая скорость: ", [u_plus_v.v1, u_plus_v.v2, u_plus_v.v3] )
Результат ≈0.806c — это корректная релятивистская сумма для 0.6c + 0.4c.
Визуализация релятивистского сложения скоростей¶
В завершение этого примера создадим интерактивную диаграмму, которой можно будет управлять при помощи удобных слайдеров. Ради скорости используем бэкэнд gr()
.
gr()
# Функции для работы с кватернионами
scalar_part(q) = q.s
vector_part(q) = [q.v1, q.v2, q.v3]
# Релятивистское сложение скоростей
function relativistic_velocity_addition(u, v, c=1.0)
uv = -((u * v).s) # кватернионное произведение
γ = 1 / (1 + uv / c^2) # релятивистский фактор
return γ * (u + v)
end
# Слайдеры для управления скоростями
# @markdown Скорости обоих тел (в долях от c)
blue_slider = 0.62 # @param {type:"slider",min:0,max:0.99,step:0.01}
red_slider = 0.85 # @param {type:"slider",min:0,max:0.99,step:0.01}
# Создаем фигуру
u = quat(0, blue_slider[], 0, 0)
v = quat(0, red_slider[], 0, 0)
result = relativistic_velocity_addition(u, v)
# Создаем 3D-график
Plots.plot(title="Релятивистское сложение скоростей",
xlims=(-0.1, 1.1), ylims=(-0.3, 0.3), zlims=(-0.3, 0.3),
xlabel="X", ylabel="Y", zlabel="Z",
legend=:topleft)
# Рисуем векторы
Plots.plot!( [0,0], [0,0], [-0.22,0.22], c=:red, label=false )
Plots.plot!( [1,1], [0,0], [-0.22,0.22], c=:red, label=false )
Plots.plot!([0,vector_part(u)[1]], [0,vector_part(u)[2]], [0.2,0.2+vector_part(u)[3]],
color=:blue, label="u = 0.6c", lw=8)
Plots.plot!([0,vector_part(v)[1]], [0,vector_part(v)[2]], [0,vector_part(v)[3]], color=:red, label="v = 0.4c", lw=8)
Plots.plot!([0,vector_part(result)[1]], [0,vector_part(result)[2]], [-0.2,-0.2+vector_part(result)[3]],
color=:green, label="u⊕v = $(round(vector_part(result)[1], digits=2))c", lw=8)
# Настройка отображения
Plots.plot!(camera=(30, 30)) # Угол обзора
Заключение¶
Использование кватернионов для релятивистского сложения скоростей — это не просто математическая абстракция, а мощный инструмент, который сохраняет физическую суть явлений.
Особенно ценны кватернионы в задачах, где важна связь между ориентацией и движением — от навигации космических аппаратов до компьютерной томографии. Их применение гарантирует, что результаты расчетов будут не только математически корректны, но и физически осмысленны, что делает кватернионы незаменимым инструментом современной науки.