gemini Код (Text): import numpy as np import matplotlib.pyplot as plt import matplotlib.animation as animation from IPython.display import HTML # ============================================================ # 1. ОБЩИЕ ПАРАМЕТРЫ СИСТЕМЫ # ============================================================ G = 1.0 M = 1.0 c_rel = 6.0 # Скорость света для ОТО (1PN) c_delay = 8.0 # Скорость поля для задержки dt = 0.0008 steps = 35000 frames_count = 250 steps_per_frame = steps // frames_count # Начальные условия (небольшой эксцентриситет для наглядности) r0 = 1.0 e = 0.15 v0 = np.sqrt(G * M * (1 + e) / (r0 * (1 - e))) init_pos = np.array([r0 * (1 - e), 0.0]) init_vel = np.array([0.0, v0]) # ============================================================ # 2. ВСПОМОГАТЕЛЬНЫЕ ФУНКЦИИ УСКОРЕНИЙ # ============================================================ # Модель 1: ОТО (1PN) def accel_oto(pos, vel): r = np.linalg.norm(pos) v2 = np.dot(vel, vel) rv = np.dot(pos, vel) a_N = -G * M * pos / r**3 factor = (4 * G * M / r - v2) / c_rel**2 v_factor = 4 * rv / c_rel**2 return a_N * (1 + factor) + (G * M / r**3) * v_factor * vel # Модель 2: Классический Ньютон def accel_newton(pos): r = np.linalg.norm(pos) return -G * M * pos / r**3 # Модель 3: Наивная Задержка def accel_delay(pos, vel): r = np.linalg.norm(pos) delay = r / c_delay retarded_center = -vel * delay dr = retarded_center - pos r_ret = np.linalg.norm(dr) return G * M * dr / r_ret**3 # ============================================================ # 3. РАСЧЕТ ТРАЕКТОРИЙ # ============================================================ # --- 1. ОТО (1PN) --- traj_oto = [init_pos.copy()] p, v = init_pos.copy(), init_vel.copy() for _ in range(1, steps): # RK4 k1_v = accel_oto(p, v); k1_p = v k2_v = accel_oto(p + 0.5*dt*k1_p, v + 0.5*dt*k1_v); k2_p = v + 0.5*dt*k1_v k3_v = accel_oto(p + 0.5*dt*k2_p, v + 0.5*dt*k2_v); k3_p = v + 0.5*dt*k2_v k4_v = accel_oto(p + dt*k3_p, v + dt*k3_v); k4_p = v + dt*k3_v p += (dt/6) * (k1_p + 2*k2_p + 2*k3_p + k4_p) v += (dt/6) * (k1_v + 2*k2_v + 2*k3_v + k4_v) traj_oto.append(p.copy()) # --- 2. Ньютон --- traj_newton = [init_pos.copy()] p, v = init_pos.copy(), init_vel.copy() for _ in range(1, steps): a = accel_newton(p) v += a * dt p += v * dt traj_newton.append(p.copy()) # --- 3. Задержка --- traj_delay = [init_pos.copy()] p, v = init_pos.copy(), init_vel.copy() for _ in range(1, steps): a = accel_delay(p, v) v += a * dt p += v * dt traj_delay.append(p.copy()) # --- 4. Квантованная гравитация --- traj_quant = [init_pos.copy()] p, v = init_pos.copy(), init_vel.copy() # Параметры квантования p_quantum = 0.0003 # Квант приращения импульса (дискретность) t_quantum_steps = 15 # Шагов между квантовыми актами взаимодействия acc_buffer = np.zeros(2) for step in range(1, steps): a = accel_newton(p) acc_buffer += a * dt # Взаимодействие происходит порциями if step % t_quantum_steps == 0: # Дискретизация приращения импульса/скорости v_inc = np.round(acc_buffer / p_quantum) * p_quantum v += v_inc acc_buffer = np.zeros(2) p += v * dt traj_quant.append(p.copy()) traj_oto = np.array(traj_oto) traj_newton = np.array(traj_newton) traj_delay = np.array(traj_delay) traj_quant = np.array(traj_quant) # ============================================================ # 4. ОТРИСОВКА И АНИМАЦИЯ # ============================================================ fig, axs = plt.subplots(2, 2, figsize=(10, 10), dpi=100) fig.patch.set_facecolor('#0d1117') titles = ['1. ОТО (1PN: Розетка)', '2. Ньютон (Идеальный эллипс)', '3. Задержка (Разгон / Срыв)', '4. Квант (Дискретный хаос)'] colors = ['#58a6ff', '#3fb950', '#ff7b72', '#d2a8ff'] trajs = [traj_oto, traj_newton, traj_delay, traj_quant] lines, planets = [], [] for ax, title, color in zip(axs.flat, titles, colors): ax.set_facecolor('#0d1117') ax.set_xlim(-1.8, 1.8) ax.set_ylim(-1.8, 1.8) ax.set_aspect('equal') ax.grid(True, color='#21262d', linestyle='--') ax.set_title(title, color=color, fontsize=11, fontweight='bold') line, = ax.plot([], [], color=color, lw=1.0, alpha=0.8) ax.scatter([0], [0], color='#f2cc60', s=120, zorder=5) # Звезда planet = ax.scatter([], [], color='white', s=40, zorder=6) lines.append(line) planets.append(planet) def update(frame): idx = (frame + 1) * steps_per_frame for line, planet, traj in zip(lines, planets, trajs): line.set_data(traj[:idx, 0], traj[:idx, 1]) planet.set_offsets([traj[idx-1, 0], traj[idx-1, 1]]) return lines + planets anim = animation.FuncAnimation( fig, update, frames=frames_count, blit=True, interval=40 ) plt.tight_layout() plt.close() # Вывод видео в Jupyter/Colab HTML(anim.to_html5_video()) Матан что он генерит я не понимаю --- Сообщение объединено, 6 сен 2026 в 08:46 --- Как это работает: - это эльфийское, матем попроще. Это разложеник в Тейлор дающее силовые поправки, которые накапливаются:
Искал по ТО, нашел этот материал Метафизика, МГУ Ю. С. Владимиров Там много упоминается Пуанкаре. Автор мыслит матем понятиями прошлого века, такая подача совершенно не понятна. Алгебра это зло.. После выжимки получается это реляционная физика, как ттр. Только он не видет связей(граф), а тащит алгебру для описания сову на глобус. Может кому то интересно, на разбор нужно много времени.