Гравитация.

Тема в разделе "ФИЗИКА", создана пользователем Ahimov, 1 сен 2026.

  1. Ahimov

    Ahimov Active Member

    Публикаций:
    0
    Регистрация:
    14 окт 2024
    Сообщения:
    844
    gemini
    Код (Text):
    1.  
    2. import numpy as np
    3. import matplotlib.pyplot as plt
    4. import matplotlib.animation as animation
    5. from IPython.display import HTML
    6.  
    7. # ============================================================
    8. # 1. ОБЩИЕ ПАРАМЕТРЫ СИСТЕМЫ
    9. # ============================================================
    10. G = 1.0
    11. M = 1.0
    12. c_rel = 6.0         # Скорость света для ОТО (1PN)
    13. c_delay = 8.0       # Скорость поля для задержки
    14. dt = 0.0008
    15. steps = 35000
    16. frames_count = 250
    17. steps_per_frame = steps // frames_count
    18.  
    19. # Начальные условия (небольшой эксцентриситет для наглядности)
    20. r0 = 1.0
    21. e = 0.15
    22. v0 = np.sqrt(G * M * (1 + e) / (r0 * (1 - e)))
    23.  
    24. init_pos = np.array([r0 * (1 - e), 0.0])
    25. init_vel = np.array([0.0, v0])
    26.  
    27. # ============================================================
    28. # 2. ВСПОМОГАТЕЛЬНЫЕ ФУНКЦИИ УСКОРЕНИЙ
    29. # ============================================================
    30.  
    31. # Модель 1: ОТО (1PN)
    32. def accel_oto(pos, vel):
    33.     r = np.linalg.norm(pos)
    34.     v2 = np.dot(vel, vel)
    35.     rv = np.dot(pos, vel)
    36.     a_N = -G * M * pos / r**3
    37.     factor = (4 * G * M / r - v2) / c_rel**2
    38.     v_factor = 4 * rv / c_rel**2
    39.     return a_N * (1 + factor) + (G * M / r**3) * v_factor * vel
    40.  
    41. # Модель 2: Классический Ньютон
    42. def accel_newton(pos):
    43.     r = np.linalg.norm(pos)
    44.     return -G * M * pos / r**3
    45.  
    46. # Модель 3: Наивная Задержка
    47. def accel_delay(pos, vel):
    48.     r = np.linalg.norm(pos)
    49.     delay = r / c_delay
    50.     retarded_center = -vel * delay
    51.     dr = retarded_center - pos
    52.     r_ret = np.linalg.norm(dr)
    53.     return G * M * dr / r_ret**3
    54.  
    55. # ============================================================
    56. # 3. РАСЧЕТ ТРАЕКТОРИЙ
    57. # ============================================================
    58.  
    59. # --- 1. ОТО (1PN) ---
    60. traj_oto = [init_pos.copy()]
    61. p, v = init_pos.copy(), init_vel.copy()
    62. for _ in range(1, steps):
    63.     # RK4
    64.     k1_v = accel_oto(p, v); k1_p = v
    65.     k2_v = accel_oto(p + 0.5*dt*k1_p, v + 0.5*dt*k1_v); k2_p = v + 0.5*dt*k1_v
    66.     k3_v = accel_oto(p + 0.5*dt*k2_p, v + 0.5*dt*k2_v); k3_p = v + 0.5*dt*k2_v
    67.     k4_v = accel_oto(p + dt*k3_p, v + dt*k3_v); k4_p = v + dt*k3_v
    68.     p += (dt/6) * (k1_p + 2*k2_p + 2*k3_p + k4_p)
    69.     v += (dt/6) * (k1_v + 2*k2_v + 2*k3_v + k4_v)
    70.     traj_oto.append(p.copy())
    71.  
    72. # --- 2. Ньютон ---
    73. traj_newton = [init_pos.copy()]
    74. p, v = init_pos.copy(), init_vel.copy()
    75. for _ in range(1, steps):
    76.     a = accel_newton(p)
    77.     v += a * dt
    78.     p += v * dt
    79.     traj_newton.append(p.copy())
    80.  
    81. # --- 3. Задержка ---
    82. traj_delay = [init_pos.copy()]
    83. p, v = init_pos.copy(), init_vel.copy()
    84. for _ in range(1, steps):
    85.     a = accel_delay(p, v)
    86.     v += a * dt
    87.     p += v * dt
    88.     traj_delay.append(p.copy())
    89.  
    90. # --- 4. Квантованная гравитация ---
    91. traj_quant = [init_pos.copy()]
    92. p, v = init_pos.copy(), init_vel.copy()
    93.  
    94. # Параметры квантования
    95. p_quantum = 0.0003     # Квант приращения импульса (дискретность)
    96. t_quantum_steps = 15   # Шагов между квантовыми актами взаимодействия
    97. acc_buffer = np.zeros(2)
    98.  
    99. for step in range(1, steps):
    100.     a = accel_newton(p)
    101.     acc_buffer += a * dt
    102.  
    103.     # Взаимодействие происходит порциями
    104.     if step % t_quantum_steps == 0:
    105.         # Дискретизация приращения импульса/скорости
    106.         v_inc = np.round(acc_buffer / p_quantum) * p_quantum
    107.         v += v_inc
    108.         acc_buffer = np.zeros(2)
    109.  
    110.     p += v * dt
    111.     traj_quant.append(p.copy())
    112.  
    113. traj_oto = np.array(traj_oto)
    114. traj_newton = np.array(traj_newton)
    115. traj_delay = np.array(traj_delay)
    116. traj_quant = np.array(traj_quant)
    117.  
    118. # ============================================================
    119. # 4. ОТРИСОВКА И АНИМАЦИЯ
    120. # ============================================================
    121. fig, axs = plt.subplots(2, 2, figsize=(10, 10), dpi=100)
    122. fig.patch.set_facecolor('#0d1117')
    123.  
    124. titles = ['1. ОТО (1PN: Розетка)', '2. Ньютон (Идеальный эллипс)',
    125.           '3. Задержка (Разгон / Срыв)', '4. Квант (Дискретный хаос)']
    126. colors = ['#58a6ff', '#3fb950', '#ff7b72', '#d2a8ff']
    127. trajs = [traj_oto, traj_newton, traj_delay, traj_quant]
    128.  
    129. lines, planets = [], []
    130.  
    131. for ax, title, color in zip(axs.flat, titles, colors):
    132.     ax.set_facecolor('#0d1117')
    133.     ax.set_xlim(-1.8, 1.8)
    134.     ax.set_ylim(-1.8, 1.8)
    135.     ax.set_aspect('equal')
    136.     ax.grid(True, color='#21262d', linestyle='--')
    137.     ax.set_title(title, color=color, fontsize=11, fontweight='bold')
    138.  
    139.     line, = ax.plot([], [], color=color, lw=1.0, alpha=0.8)
    140.     ax.scatter([0], [0], color='#f2cc60', s=120, zorder=5) # Звезда
    141.     planet = ax.scatter([], [], color='white', s=40, zorder=6)
    142.  
    143.     lines.append(line)
    144.     planets.append(planet)
    145.  
    146. def update(frame):
    147.     idx = (frame + 1) * steps_per_frame
    148.     for line, planet, traj in zip(lines, planets, trajs):
    149.         line.set_data(traj[:idx, 0], traj[:idx, 1])
    150.         planet.set_offsets([traj[idx-1, 0], traj[idx-1, 1]])
    151.     return lines + planets
    152.  
    153. anim = animation.FuncAnimation(
    154.     fig, update, frames=frames_count, blit=True, interval=40
    155. )
    156.  
    157. plt.tight_layout()
    158. plt.close()
    159.  
    160. # Вывод видео в Jupyter/Colab
    161. HTML(anim.to_html5_video())
    Матан что он генерит я не понимаю :wacko:
    --- Сообщение объединено, 6 сен 2026 в 08:46 ---
    Как это работает:
    - это эльфийское, матем попроще.

    Это разложеник в Тейлор дающее силовые поправки, которые накапливаются:
     

    Вложения:

    • _sim13.mp4
      Размер файла:
      145,2 КБ
      Просмотров:
      31
  2. Ahimov

    Ahimov Active Member

    Публикаций:
    0
    Регистрация:
    14 окт 2024
    Сообщения:
    844
    Искал по ТО, нашел этот материал Метафизика, МГУ Ю. С. Владимиров

    Там много упоминается Пуанкаре.

    Автор мыслит матем понятиями прошлого века, такая подача совершенно не понятна. Алгебра это зло..

    После выжимки получается это реляционная физика, как ттр. Только он не видет связей(граф), а тащит алгебру для описания сову на глобус.

    Может кому то интересно, на разбор нужно много времени.
     

    Вложения:

    • MetaPhys.pdf
      Размер файла:
      2,5 МБ
      Просмотров:
      21
  3. Application

    Application Moderator Команда форума

    Публикаций:
    1
    Регистрация:
    8 дек 2007
    Сообщения:
    1.025
    Здесь чуть больше этого вашего матана: https://www.koob.ru/vladimirov/
     
    Ahimov нравится это.