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.