pc-1
This commit is contained in:
dison0331-ThinkPad
2026-03-11 21:32:58 +08:00
commit 8c8ad9fe07
29 changed files with 4005 additions and 0 deletions

94
test_import.py Normal file
View File

@@ -0,0 +1,94 @@
#!/usr/bin/env python3
"""
测试三体问题求解器导入和基本功能
"""
import sys
import os
# 添加当前目录到路径
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
print("测试三体问题求解器导入...")
print("=" * 60)
try:
# 测试导入
from three_body_problem import Particle, ThreeBodySolver, ThreeBodyConfig, ThreeBodyVisualizer
print("✓ 成功导入核心模块")
# 测试创建质点
p = Particle(mass=1.0, position=[1, 0, 0], velocity=[0, 1, 0], name='Test Star')
print(f"✓ 成功创建质点: {p.name}, 质量: {p.mass}, 位置: {p.position}")
# 测试能量计算
energy = p.get_energy()
print(f"✓ 质点动能: {energy:.6f}")
# 测试创建配置
particles = ThreeBodyConfig.create_figure8_config()
print(f"✓ 成功创建8字形轨道配置: {len(particles)}个质点")
for i, particle in enumerate(particles):
print(f" 质点{i+1}: {particle.name}, 质量: {particle.mass:.3f}")
# 测试创建求解器
solver = ThreeBodySolver(particles, dt=0.001)
print(f"✓ 成功创建求解器,时间步长: {solver.dt}")
# 测试单步积分
initial_positions = [particle.position.copy() for particle in particles]
new_particles = solver.step()
print(f"✓ 单步积分完成,时间: {solver.time:.4f}")
# 检查位置是否变化
for i, (old_pos, new_particle) in enumerate(zip(initial_positions, new_particles)):
moved = not all(abs(old_pos[j] - new_particle.position[j]) < 1e-10 for j in range(3))
print(f" 质点{i+1} 位置变化: {'' if moved else ''}")
# 测试质心计算
com = solver.get_center_of_mass()
print(f"✓ 系统质心: [{com[0]:.6f}, {com[1]:.6f}, {com[2]:.6f}]")
# 测试能量计算
energy = solver._calculate_total_energy()
print(f"✓ 系统总能量: {energy:.6e}")
# 测试守恒误差计算
momentum_error, angular_momentum_error, energy_error = solver.get_conservation_errors()
print(f"✓ 守恒定律误差:")
print(f" 动量误差: {momentum_error:.2e}")
print(f" 角动量误差: {angular_momentum_error:.2e}")
print(f" 能量相对误差: {energy_error:.2e}")
# 测试配置管理
print("\n测试配置管理...")
random_particles = ThreeBodyConfig.create_random_config()
print(f"✓ 成功创建随机配置: {len(random_particles)}个质点")
lagrange_particles = ThreeBodyConfig.create_lagrange_point_config(lagrange_point=4)
print(f"✓ 成功创建拉格朗日点L4配置: {len(lagrange_particles)}个质点")
# 测试可视化器创建
visualizer = ThreeBodyVisualizer()
print("✓ 成功创建可视化器")
print("\n" + "=" * 60)
print("所有测试通过! 三体问题求解器工作正常。")
print("=" * 60)
# 显示使用示例
print("\n使用示例:")
print("1. 运行简单示例: python three_body_problem/run_example.py")
print("2. 运行8字形轨道: python three_body_problem/examples/figure8.py")
print("3. 运行拉格朗日点示例: python three_body_problem/examples/lagrange.py")
print("4. 运行随机系统示例: python three_body_problem/examples/random.py")
print("5. 运行测试: python three_body_problem/tests/test_solver.py")
except ImportError as e:
print(f"✗ 导入失败: {e}")
print("请确保在项目根目录下运行此测试")
except Exception as e:
print(f"✗ 测试失败: {e}")
import traceback
traceback.print_exc()