Гравитация.

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

  1. Ahimov

    Ahimov Active Member

    Публикаций:
    0
    Регистрация:
    14 окт 2024
    Сообщения:
    855
    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 ---
    Как это работает:
    - это эльфийское, матем попроще.

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

    Вложения:

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

    Ahimov Active Member

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

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

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

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

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

    Вложения:

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

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

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

    Ahimov Active Member

    Публикаций:
    0
    Регистрация:
    14 окт 2024
    Сообщения:
    855
    Эффект Джанибекова

    Код (Text):
    1. import numpy as np
    2. import matplotlib.pyplot as plt
    3. from matplotlib.animation import FuncAnimation
    4. from IPython.display import HTML
    5. from scipy.spatial.transform import Rotation as R
    6.  
    7. # ==========================================
    8. # 1. ГЕОМЕТРИЯ И МАССЫ (Абсолютно твердое тело)
    9. # ==========================================
    10. # Начальные положения 4 точек Т-образной гайки
    11. init_positions = np.array([
    12.     [0.0,  0.0, 0.0],  # 0: Центр
    13.     [0.0, -0.25, 0.0], # 1: Левое крыло
    14.     [0.0,  0.25, 0.0], # 2: Правое крыло
    15.     [0.35, 0.0, 0.0]   # 3: Хвост (штырь)
    16. ])
    17.  
    18. masses = np.array([4.0, 1.0, 1.0, 1.5])
    19. total_mass = np.sum(masses)
    20.  
    21. # Сдвигаем начальные координаты, чтобы центр масс был строго в (0,0,0)
    22. cm_init = np.sum(init_positions * masses[:, None], axis=0) / total_mass
    23. init_positions -= cm_init
    24.  
    25. # Функция для вычисления тензора инерции
    26. def get_inertia_tensor(pos):
    27.     I = np.zeros((3, 3))
    28.     for i in range(len(masses)):
    29.         r = pos[i]
    30.         I += masses[i] * (np.dot(r, r) * np.eye(3) - np.outer(r, r))
    31.     return I
    32.  
    33. # Начальный вектор момента импульса L (он СТРОГО сохраняется в пространстве!)
    34. w0 = np.array([0.15, 6.0, 0.0]) # Вращение вокруг Y + малое возмущение по X
    35. L = get_inertia_tensor(init_positions) @ w0
    36.  
    37. # Настройки симуляции
    38. dt = 0.001
    39. steps = 16000
    40. skip = 50
    41.  
    42. positions = init_positions.copy()
    43. history = []
    44.  
    45. # ==========================================
    46. # 2. ЧЕСТНЫЙ ИНЕРЦИОННЫЙ ШАГ НЬЮТОНА (БЕЗ ДЕФОРМАЦИИ)
    47. # ==========================================
    48. for step in range(steps):
    49.     I = get_inertia_tensor(positions)
    50.     I_inv = np.linalg.inv(I)
    51.    
    52.     # Находим текущую угловую скорость из неизменного L
    53.     w = I_inv @ L
    54.    
    55.     # Строгое вращение без изменения расстояний через матрицу поворота
    56.     rot_vector = w * dt
    57.     rot = R.from_rotvec(rot_vector)
    58.     positions = rot.apply(positions)
    59.        
    60.     if step % skip == 0:
    61.         history.append(positions.copy())
    62.  
    63. # ==========================================
    64. # 3. ВИЗУАЛИЗАЦИЯ ИДЕАЛЬНОГО КУВЫРКА
    65. # ==========================================
    66. fig = plt.figure(figsize=(6, 6))
    67. ax = fig.add_subplot(111, projection='3d')
    68.  
    69. # Фиксируем куб, чтобы убрать иллюзию смещения
    70. ax.set_xlim([-0.4, 0.4])
    71. ax.set_ylim([-0.4, 0.4])
    72. ax.set_zlim([-0.4, 0.4])
    73. ax.set_title("Эффект Джанибекова из элементарных масс")
    74. ax.view_init(elev=20, azim=55)
    75.  
    76. # Создаем объекты линий с пустыми массивами нужной формы
    77. line_bar, = ax.plot(np.array([]), np.array([]), np.array([]), 'b-o', lw=4, markersize=6)
    78. line_tail, = ax.plot(np.array([]), np.array([]), np.array([]), 'r-o', lw=5, markersize=6)
    79. center_dot, = ax.plot(np.array([0.0]), np.array([0.0]), np.array([0.0]), 'go', markersize=10)
    80.  
    81. def update(frame):
    82.     pos = history[frame]
    83.    
    84.     # Синяя перекладина: Лево (1) -> Центр (0) -> Право (2)
    85.     bx = np.array([pos[1, 0], pos[0, 0], pos[2, 0]], dtype=float)
    86.     by = np.array([pos[1, 1], pos[0, 1], pos[2, 1]], dtype=float)
    87.     bz = np.array([pos[1, 2], pos[0, 2], pos[2, 2]], dtype=float)
    88.    
    89.     line_bar.set_data(bx, by)
    90.     line_bar.set_3d_properties(bz)
    91.    
    92.     # Красный штырь: Центр (0) -> Хвост (3)
    93.     tx = np.array([pos[0, 0], pos[3, 0]], dtype=float)
    94.     ty = np.array([pos[0, 1], pos[3, 1]], dtype=float)
    95.     tz = np.array([pos[0, 2], pos[3, 2]], dtype=float)
    96.    
    97.     line_tail.set_data(tx, ty)
    98.     line_tail.set_3d_properties(tz)
    99.    
    100.     # Центр масс строго в нуле
    101.     center_dot.set_data(np.array([0.0]), np.array([0.0]))
    102.     center_dot.set_3d_properties(np.array([0.0]))
    103.    
    104.     return line_bar, line_tail, center_dot
    105.  
    106. # Запускаем анимацию (blit=False для стабильности в Jupyter/Colab)
    107. anim = FuncAnimation(fig, update, frames=len(history), interval=30, blit=False)
    108. plt.close()
    109.  
    110. HTML(anim.to_html5_video())
    111.  


    К теме инерциоидов, на симуляции падает вертикально. Но это ничего не доказывает. Боковая сила возникает при наличии веса.

    Код (Text):
    1. import numpy as np
    2. import matplotlib.pyplot as plt
    3. from matplotlib.animation import FuncAnimation
    4. from IPython.display import HTML
    5. from scipy.spatial.transform import Rotation as R
    6.  
    7. # ==========================================
    8. # 1. ГЕОМЕТРИЯ, МАССЫ И МЯГКАЯ ГРАВИТАЦИЯ
    9. # ==========================================
    10. init_positions = np.array([
    11.     [0.0,  0.0, 0.0],  # 0: Центр
    12.     [0.0, -0.25, 0.0], # 1: Левое крыло
    13.     [0.0,  0.25, 0.0], # 2: Правое крыло
    14.     [0.35, 0.0, 0.0]   # 3: Хвост (штырь)
    15. ])
    16.  
    17. masses = np.array([4.0, 1.0, 1.0, 1.5])
    18. total_mass = np.sum(masses)
    19.  
    20. # Центрируем начальное тело строго в локальный ноль
    21. cm_init = np.sum(init_positions * masses[:, None], axis=0) / total_mass
    22. init_positions -= cm_init
    23.  
    24. def get_inertia_tensor(pos):
    25.     I = np.zeros((3, 3))
    26.     for i in range(len(masses)):
    27.         r = pos[i]
    28.         I += masses[i] * (np.dot(r, r) * np.eye(3) - np.outer(r, r))
    29.     return I
    30.  
    31. # Начальное вращение вокруг Y + возмущение по X
    32. w0 = np.array([0.15, 6.0, 0.0])
    33. L = get_inertia_tensor(init_positions) @ w0
    34.  
    35. # Ускорение падения (сделали еще меньше, чтобы падало дольше)
    36. g_acc = np.array([0.0, 0.0, -0.06])
    37.  
    38. # Увеличенные настройки времени для долгого полета
    39. dt = 0.001
    40. steps = 40000     # Увеличили число шагов в 2.5 раза
    41. skip = 80         # Скорректировали шаг кадров
    42.  
    43. positions = init_positions.copy()
    44. cm_position = np.array([0.0, 0.0, 0.3]) # Стартуем повыше
    45. cm_velocity = np.array([0.0, 0.0, 0.0])
    46.  
    47. history_pts = []
    48. history_cm = []
    49.  
    50. # ==========================================
    51. # 2. РАСЧЕТ ДЛИТЕЛЬНОГО ПАДЕНИЯ
    52. # ==========================================
    53. for step in range(steps):
    54.     I = get_inertia_tensor(positions)
    55.     w = np.linalg.inv(I) @ L
    56.     rot = R.from_rotvec(w * dt)
    57.     positions = rot.apply(positions)
    58.    
    59.     # Падение центра масс
    60.     cm_velocity += g_acc * dt
    61.     cm_position += cm_velocity * dt
    62.    
    63.     if step % skip == 0:
    64.         world_positions = positions + cm_position
    65.         history_pts.append(world_positions.copy())
    66.         history_cm.append(cm_position.copy())
    67.  
    68. # ==========================================
    69. # 3. ВИЗУАЛИЗАЦИЯ (ВЫТЯНУТЫЙ КУБ ПО ОСИ Z)
    70. # ==========================================
    71. fig = plt.figure(figsize=(6, 7))
    72. ax = fig.add_subplot(111, projection='3d')
    73.  
    74. # Вытянули ось Z вниз, чтобы гайка не вылетала
    75. ax.set_xlim([-0.4, 0.4])
    76. ax.set_ylim([-0.4, 0.4])
    77. ax.set_zlim([-1.2, 0.4])
    78. ax.set_title("Затяжное падение с эффектом Джанибекова")
    79. ax.view_init(elev=15, azim=45)
    80.  
    81. line_bar, = ax.plot([], [], [], 'b-o', lw=4, markersize=6)
    82. line_tail, = ax.plot([], [], [], 'r-o', lw=5, markersize=6)
    83. center_dot, = ax.plot([], [], [], 'go', markersize=10)
    84.  
    85. def update(frame):
    86.     pos = history_pts[frame]
    87.     cm = history_cm[frame]
    88.    
    89.     # Синяя перекладина: явные плоские списки координат по осям
    90.     bx = [pos[1,0], pos[0,0], pos[2,0]]
    91.     by = [pos[1,1], pos[0,1], pos[2,1]]
    92.     bz = [pos[1,2], pos[0,2], pos[2,2]]
    93.    
    94.     line_bar.set_data(bx, by)
    95.     line_bar.set_3d_properties(bz)
    96.    
    97.     # Красный штырь
    98.     tx = [pos[0,0], pos[3,0]]
    99.     ty = [pos[0,1], pos[3,1]]
    100.     tz = [pos[0,2], pos[3,2]]
    101.    
    102.     line_tail.set_data(tx, ty)
    103.     line_tail.set_3d_properties(tz)
    104.    
    105.     # Зеленый падающий центр масс
    106.     center_dot.set_data([cm[0]], [cm[1]])
    107.     center_dot.set_3d_properties([cm[2]])
    108.    
    109.     return line_bar, line_tail, center_dot
    110.  
    111. anim = FuncAnimation(fig, update, frames=len(history_pts), interval=25, blit=False)
    112. plt.close()
    113.  
    114. HTML(anim.to_html5_video())
    115.  
    :scratch_one-s_head:
     

    Вложения:

    Application нравится это.
  5. Aoizora

    Aoizora Active Member

    Публикаций:
    0
    Регистрация:
    29 янв 2017
    Сообщения:
    377
    Я в университете изучал как раз алгебру и алгебраическую геометрию. Прошлый век это мат. анализ. Просто в рфе образование отсталое, и тут студентов только учат брать интегралы под водовку с картофаном.
    Мат. анализ изучен вдоль и поперек. Новых открытий там не делают. Все открытия - в алгебре.

    У меня мышление алгебраическое, я люблю симметрии, структуру. Мат. анализ это про непрерывно текущие процессы, мне такое менее интересно.

    Мат анализ примитивен, это буквально описание природных процессов и все. А алгебра возвышенная, там всякие алгебраические многообразия, идеалы, дивизоры, кольца с богатым внутренним миром. С жертвами российского образования даже разговаривать не о чем, они позади всей планеты в математике. Просто зря потратили 5 лет жизни, чтобы их научили только мат анализу и все.
    В алгбере понятие дифференциалов тоже есть. Но оно там дается не как в матане, а на алгебраическом языке колец с нильпотентом.
    --- Сообщение объединено, 23 сен 2026 в 09:40 ---
    Жертвы российского образования даже понять современные научные труды не могут. Там все дается на языке алгебры: категории, гомологии, пучки, кольца, многообразия. А жертвы р-образования привыкли интегралы под водовку брать.
    --- Сообщение объединено, 23 сен 2026 в 09:43 ---
    Интересно, тут кто-то понимает вообще, что продукт работы математика это новые теоремы и доказательства, а не ручной счет интегралов? С ручным счетом хорошо справляется компьютер и ИИ.
     
    Последнее редактирование: 23 сен 2026 в 09:36
  6. Ahimov

    Ahimov Active Member

    Публикаций:
    0
    Регистрация:
    14 окт 2024
    Сообщения:
    855
    Aoizora,

    Выше пример описания системы не графом, а алгеброй. Матрицы/множества, многомерности и прочая алгебра оторванная от реальности.

    :bad:

    Система связей описывается графом и понимается как граф. У них алгебра ради алгебры..
    Это ставит первый вопрос - математик в адеквате ?
    Это они натащили в физику искривления пространств и тп., придавая физ смысл своим измышлениям над цифрами. Поэтому и сказал что это зло.
    Толк какой в задачах тысячилетия", это дает какой то метод или технологию ?
     
  7. Aoizora

    Aoizora Active Member

    Публикаций:
    0
    Регистрация:
    29 янв 2017
    Сообщения:
    377
    Никогда не интересовался физикой. По идее физикам водовки с картофаном должно хватить.
    А вся современная криптография, включая постквантовую, и теория кодирования основана на алгебре и алгебраической геометрии. Например, есть постквантовые алгоритмы шифрования на основе теории решеток.
     
  8. Application

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

    Публикаций:
    1
    Регистрация:
    8 дек 2007
    Сообщения:
    1.031
    Aoizora, ты вроде впереди планеты всей в этой вашей алгебре и своим богатым внутренним миром, а мыслишь не структурами, а какими то бинарными, черно-белыми категориями.
     
    Ahimov нравится это.