RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1592094
Accepted
Fox Fox
Fox Fox
Asked:2024-08-28 03:14:18 +0000 UTC2024-08-28 03:14:18 +0000 UTC 2024-08-28 03:14:18 +0000 UTC

Python:计算往返另一个恒星系统的飞行参数

  • 772

根据 Stanislav Volodarsky 的计算(见下文),我们似乎能够建立一定的理论并编写计算脚本:

'''
Задача: экспедиция стартует из Солнечной системы в другую звёздную систему с постоянным ускорением. Первую часть пути корабль ускоряется,
вторую часть пути летит по инерции, третью часть пути тормозится (с тем же ускорением, но отрицательным, и на таком же участке пути).
К моменту прибытия в другую звёздную систему скорость корабля равна 0. Далее - путь домой, точно по такой же схеме.
Вычислить время полёта туда и обратно в земной системе отсчёта, время полёта туда и обратно в системе отсчёта корабля, максимальную скорость корабля.
'''

import os
import math

print("-" * 65 + "\nРасчёт параметров полёта в другую звёздную систему и обратно:\n" + "-" * 65)

c = 1  # скорость света: 1 световой год / год
a = 2  # ускорение корабля: 1 световой год / год ** 2 = 9,5 м / c ** 2 (близко к значению ускорения свободного падения на поверхности Земли)
star = "Фомальгаут"
l = 25  # расстояние до звёздной системы (световых лет)
l_a = l * 0.1  # расстояние, пройденное в режиме разгона (торможения) в одну сторону (световых лет)
l_i = l * 0.8  # расстояние, пройденное в режиме движения по инерции  в одну сторону (световых лет)

# время разгона (торможения) в одну сторону в земной системе отсчёта (лет)
t1 = c / a * math.sqrt((a * l_a / c ** 2 + 1) ** 2 - 1)

# время разгона (торможения) в одну сторону в системе отсчёта корабля (лет)
t2 = c / a * math.log(math.sqrt(1 + (a * t1 / c) ** 2) + a * t1 / c)

# максимальная скорость корабля, которую удалось достичь (долей скорости света)
v = a * t1 / math.sqrt(1 + (a * t1 / c) ** 2)

# время движения по инерции в одну сторону в земной системе отсчёта (лет)
t1_i = l_i / v

# время движения по инерции в одну сторону в системе отсчёта корабля (лет)
t2_i = t1_i * math.sqrt(1 - (v / c) ** 2)

# общее время полёта в земной системе отсчёта (лет)
t1_full = 4 * t1 + 2 * t1_i

# общее время полёта в системе отсчёта корабля (лет)
t2_full = 4 * t2 + 2 * t2_i

# Вывод результатов
print(f"Звёздная система: {star}")
print(f"Расстояние до звёздной системы (световых лет): {l: .2f}")
print(f"Ускорение корабля (световых лет / (год ** 2)): {a: .2f}")
print(f"Расстояние, пройденное в режиме разгона (торможения) туда и обратно (в %): {4 * l_a / l: .2%}")
print(f"Расстояние, пройденное в режиме движения по инерции туда и обратно (в %): {2 * l_i / l: .2%}")
print(f"Время полёта туда и обратно в земной системе отсчёта (лет): {t1_full: .2f}")
print(f"Время полёта туда и обратно в системе отсчёта корабля (лет): {t2_full: .2f}")
print(f"Максимальная скорость корабля (% от скорости света): {v: .2%}")

print("\nНажмите любую клавишу для продолжения...")
os.system("pause > nul")

结果如下:

-----------------------------------------------------------------
Расчёт параметров полёта в другую звёздную систему и обратно:
-----------------------------------------------------------------
Звёздная система: Фомальгаут
Расстояние до звёздной системы (световых лет):  25.00
Ускорение корабля (световых лет / (год ** 2)):  2.00
Расстояние, пройденное в режиме разгона (торможения) туда и обратно (в %):  40.00%
Расстояние, пройденное в режиме движения по инерции туда и обратно (в %):  160.00%
Время полёта туда и обратно в земной системе отсчёта (лет):  52.40
Время полёта туда и обратно в системе отсчёта корабля (лет):  11.72
Максимальная скорость корабля (% от скорости света):  98.60%
python
  • 2 2 个回答
  • 133 Views

2 个回答

  • Voted
  1. CrazyElf
    2024-08-28T05:28:34Z2024-08-28T05:28:34Z

    我不太明白的是你的想法,你到底是如何考虑相对论效应的。是否有可以查看这些公式的文本链接?

    对于飞行本身来说,主要问题是您纯粹根据加速度的大小来计算飞行时间。你没有考虑到这样一个事实:你实际上无法加速到 0.9 光速。我看了一下,你的中途最高时速是44.1万公里/秒,这在现实中当然是不可能达到的。不仅因为物理粒子的最大速度(等于光速)受到物理限制,还因为你想加速得越多,你需要付出的努力就越多(指数级地更多)。火箭根本不可能有足够的燃料来实现这样的加速。

    一般来说,将最大速度设置为至少0.9c(例如0.7c更现实),然后计算加速到这个速度需要多长时间,这样你就会有三段路线:

    • 加速到最大速度
    • 以最高速度行驶
    • 制动到零速这甚至是在不考虑相对论效应的情况下,我们仍然需要考虑如何在这里应用。

    事实上,你把 0.99c 作为最大值,只有加速器中的质子才能加速到这个速度,即使这样也需要很大的困难和特殊的技巧。将我们规模的物理体(而不是小粒子)加速到这个速度根本不是一项现实的任务。

    一般来说,重新计算后你的飞行时间可能不会延长很多,但这里你仍然需要看看火箭加速到高速时需要多少能量的公式。最有可能的是,当达到一定速度时,继续以相同的速度加速是不现实的。即使有大量燃料储备。速度越高,额外加速所需的能量就越多。最有可能的是,所有计算通常都限于某个低速,这就是火箭必须飞行很长时间的原因。

    • 2
  2. Best Answer
    Stanislav Volodarskiy
    2024-08-29T04:23:33Z2024-08-29T04:23:33Z
    import math
    
    print("-" * 50 + "\nРасчёт времени полёта до другой звёздной системы:\n" + "-" * 50)
    
    d = 4.3  # расстояние до звёздной системы в световых годах
    c = 1 # скорость света: 1 световой год / год
    a = 1 # ускорение: 1 световой год / год^2 = 9,5 м/c^2 (близко к значению ускорения свободного падения на повержности Земли)
    d1 = d / 2  # половина пути в одну сторону
    
    # земное время достижения половины расстояния
    t1 = ((d1 * a / c ** 2 + 1) ** 2 - 1) ** 0.5 * c / a
    
    # скорость по окончании разгона - максимальная скорость
    u1 = a * t1 / (1 + (a * t1 / c) ** 2) ** 0.5
    
    # корабельное время по окончании разгона - половина корабельного времени полета
    tau1 = c / a * math.log((1 + (a * t1 / c) ** 2) ** 0.5 + a * t1 / c)
    
    # Расчёт времени полёта в земной системе отсчёта:
    t_earth = 2 * t1
    
    # Расчёт времени в системе отсчёта корабля:
    t_ship = 2 * tau1
    
    # Вывод результатов
    print(f"Расстояние до звёздной системы (световых лет): {d:.2f}")
    print(f"Ускорение корабля (световых лет / (год ^ 2)): {a:.2f}")
    print(f"Время полёта в одну сторону в земной системе отсчёта (лет): {t_earth:.2f}")
    print(f"Время полёта в одну сторону по часам на корабле: {t_ship:.2f} лет")
    print(f"Максимальная скорость корабля: {u1:.2%} от скорости света")
    
    $ python starship.py
    --------------------------------------------------
    Расчёт времени полёта до другой звёздной системы:
    --------------------------------------------------
    Расстояние до звёздной системы (световых лет): 4.30
    Ускорение корабля (световых лет / (год ^ 2)): 1.00
    Время полёта в одну сторону в земной системе отсчёта (лет): 5.97
    Время полёта в одну сторону по часам на корабле: 3.63 лет
    Максимальная скорость корабля: 94.83% от скорости света
    
    • 2

相关问题

  • 是否可以以某种方式自定义 QTabWidget?

  • telebot.anihelper.ApiException 错误

  • Python。检查一个数字是否是 3 的幂。输出 无

  • 解析多个响应

  • 交换两个数组的元素,以便它们的新内容也反转

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5