Engee 文档
Notebook

朱莉娅速度的相对论加法

在狭义相对论中,速度的加法是非线性的,由公式描述:

您可以将速度表示为四元数并在Julia中实现此添加。

与通常的向量运算不同,四元数形式主义:

  1. 自动考虑相对论效应-速度相加的非线性自然产生于四元数的代数性质,排除了狭义相对论所禁止的"机械"相加的可能性。

  2. 确保几何完整性-具有四元数的操作保持参考系统旋转的不变性,这对于天体物理学和量子力学问题至关重要。

  3. 简化计算-单个四元数操作取代了一系列洛伦兹矩阵变换,减少了复杂系统中的计算量(例如,在加速器中对相对论粒子的运动进行建模时)。

的四元数。jl图书馆

使用四元数添加相对论速度可以使用专门的库来处理这些对象。

In [ ]:
Pkg.add("Quaternions")

考虑一个推测性问题,你以光速的60%相对于观察者移动,并沿着运动轴发射一枪,射弹或子弹以光速的40%相对于你移动。

我们知道射弹相对于原始观察者的速度不能超过光速,但它会接近它。

In [ ]:
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.8064516129032259, 0.0, 0.0]

结果≈0.806c是0.6c+0.4C的正确相对论和。

相对论速度加成的可视化

在本例的最后,我们将创建一个交互式图表,可以使用方便的滑块进行控制。 为了速度,我们使用后端 gr().

In [ ]:
gr()
Out[0]:
Plots.GRBackend()
In [ ]:
# Функции для работы с кватернионами
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))  # Угол обзора
Out[0]:

结论

使用四元数进行速度的相对论加法不仅仅是数学抽象,而是保留现象物理本质的强大工具。

四元数在方向和运动之间的关系很重要的任务中特别有价值,从航天器导航到计算机断层扫描。 它们的使用确保了计算结果不仅在数学上是正确的,而且在物理上也是有意义的,这使得四元数成为现代科学不可或缺的工具。