🧮 Lesson 50: SciPy Tutorial (Scientific & Mathematical Functions)
1. What is SciPy?
In short → SciPy (Scientific Python) is a library built on top of NumPy, providing advanced functions for mathematics, science, engineering.
English → SciPy is a Python library built on NumPy, providing advanced functions for mathematics, science, and engineering.
2. Why Use SciPy?
- Handles advanced scientific computations like linear algebra, calculus, optimization, and statistics
- Builds on top of NumPy arrays to add even more advanced functions
- Widely used in Data Science, AI, Engineering, and Physics projects
3. Summary
✅ SciPy = a scientific computing library built on top of NumPy
✅ Modules → integrate, optimize, linalg, stats, signal
✅ Supports → calculus, optimization, linear algebra, statistics, signal processing
✅ Real-world → Engineering, Physics, Data Science, Machine Learning
python
# ===== 1. SciPy Installation =====
# pip install scipy
import numpy as np
from scipy import integrate, optimize, linalg, stats, signal
# ===== 2. Integration (Calculus) =====
print("===== Integration =====")
# f(x) = x^2 ကို 0 မှ 1 အထိ integrate
result, error = integrate.quad(lambda x: x**2, 0, 1)
print(f"∫ x² dx (0 to 1) = {result:.4f}")
# ===== 3. Optimization =====
print(f"\n===== Optimization =====")
# f(x) = x^2 + 2x + 1 ကို minimize
func = lambda x: x[0]**2 + 2*x[0] + 1
result = optimize.minimize(func, [0])
print(f"Minimum at x = {result.x[0]:.4f}")
# ===== 4. Linear Algebra =====
print(f"\n===== Linear Algebra =====")
A = np.array([[3, 2], [1, 4]])
b = np.array([7, 5])
x = linalg.solve(A, b)
print(f"Solution: {x}")
# ===== 5. Statistics =====
print(f"\n===== Statistics =====")
data = [2, 4, 4, 4, 5, 5, 7, 9]
print(f"Mean: {np.mean(data)}")
print(f"Median: {np.median(data)}")
mode_result = stats.mode(data, keepdims=True)
print(f"Mode: {mode_result.mode[0]}")
print(f"Std Dev: {np.std(data):.4f}")
# ===== 6. Signal Processing =====
print(f"\n===== Signal Processing =====")
t = np.linspace(0, 1, 500)
sig = np.sin(2 * np.pi * 10 * t)
freq, power = signal.periodogram(sig)
print(f"Frequencies (first 5): {freq[:5]}")
# ===== 7. Use Cases =====
print(f"\n===== Real-World Use Cases =====")
print("✅ Engineering → signal processing, control systems")
print("✅ Physics → calculus, integration, differential equations")
print("✅ Data science → statistics, probability distributions")
print("✅ Machine learning → optimization, linear algebra")You should see
===== Integration ===== ∫ x² dx (0 to 1) = 0.3333 ===== Optimization ===== Minimum at x = -1.0000 ===== Linear Algebra ===== Solution: [1.8 0.8] ===== Statistics ===== Mean: 5.0 Median: 4.5 Mode: 4 Std Dev: 2.0000 ===== Signal Processing ===== Frequencies (first 5): [0. 2. 4. 6. 8.] ===== Real-World Use Cases ===== ✅ Engineering → signal processing, control systems ✅ Physics → calculus, integration, differential equations ✅ Data science → statistics, probability distributions ✅ Machine learning → optimization, linear algebra