SciPy for Physics Simulations

Introduction to SciPy

SciPy is a powerful library for scientific computing in Python, particularly useful for physics simulations and calculations.

Basic SciPy Usage


from scipy import constants
from scipy import integrate
import numpy as np

# Physical constants
print(f"Speed of light = {constants.c} m/s")
print(f"Planck constant = {constants.h} Jâ‹…s")
print(f"Electron mass = {constants.m_e} kg")
                    

Differential Equations in Physics

SciPy's integrate module is perfect for solving differential equations commonly found in physics problems.

Simple Harmonic Motion


from scipy.integrate import odeint
import numpy as np
import matplotlib.pyplot as plt

# Define the system of first-order ODEs
def harmonic_oscillator(state, t, omega0):
    x, v = state
    return [v, -omega0**2 * x]

# Parameters
omega0 = 2.0  # Natural frequency
t = np.linspace(0, 10, 1000)
initial_state = [1.0, 0.0]  # Initial position and velocity

# Solve ODE
solution = odeint(harmonic_oscillator, initial_state, t, args=(omega0,))

# Plot results
plt.plot(t, solution[:, 0])
plt.xlabel('Time')
plt.ylabel('Position')
plt.title('Simple Harmonic Motion')
plt.grid(True)
                    

Optimization Problems

Learn how to use SciPy's optimization tools to solve physics problems.

Finding Potential Minimum


from scipy import optimize
import numpy as np

# Define potential energy function
def potential(x, k, m, g):
    return 0.5 * k * x**2 + m * g * x

# Parameters
k = 10.0  # Spring constant
m = 1.0   # Mass
g = 9.81  # Gravity

# Find minimum
result = optimize.minimize(potential, x0=0, args=(k, m, g))
print(f"Equilibrium position: {result.x[0]:.3f} m")
                    

Practice Exercises

Exercise 1: Damped Oscillator

Modify the harmonic oscillator example to include damping. Plot the solution for different damping coefficients.

Exercise 2: Coupled Oscillators

Simulate a system of two coupled oscillators using SciPy's ODE solver.

Additional Resources