An open API service indexing awesome lists of open source software.

https://github.com/saadsalmanakram/numerical-computing

Working on core numerical computing using dedicated libraries in this genre...
https://github.com/saadsalmanakram/numerical-computing

cupy jax numpy scipy sympy theano xarray

Last synced: 4 months ago
JSON representation

Working on core numerical computing using dedicated libraries in this genre...

Awesome Lists containing this project

README

        

---

# πŸ”’ Numerical Computing: Mastering NumPy, SciPy, SymPy, and CuPy

![Numerical Computing](https://cdn.pixabay.com/photo/2024/05/06/03/21/ai-generated-8742331_1280.png)

## πŸ“ Introduction

**Numerical Computing** is the foundation of scientific computing, engineering simulations, and data analysis. This repository provides a **comprehensive guide** to **NumPy, SciPy, SymPy, and CuPy**, helping learners master numerical methods, symbolic computation, and GPU-accelerated operations.

πŸ“Œ **Understand the fundamentals of numerical computing**
πŸ“Œ **Learn efficient matrix operations** with NumPy & CuPy
πŸ“Œ **Explore scientific computing** with SciPy
πŸ“Œ **Perform symbolic mathematics** using SymPy
πŸ“Œ **Optimize performance** with GPU acceleration and parallel processing

---

## πŸš€ Features

- πŸ”’ **NumPy**: Vectorized operations, linear algebra, random numbers
- ⚑ **CuPy**: GPU-accelerated numerical computing
- πŸ”¬ **SciPy**: Scientific computing (optimization, signal processing, ODEs)
- πŸ“ **SymPy**: Symbolic mathematics (calculus, algebra, equation solving)
- 🏎 **Performance Optimization**: Parallelism, CUDA, memory-efficient computations
- πŸ“ˆ **Practical Applications**: Signal processing, numerical integration, differential equations

---

## πŸ“Œ Prerequisites

Before getting started, ensure you have the following installed:

- **Python 3.x** β†’ [Download Here](https://www.python.org/downloads/)
- Libraries: NumPy, SciPy, SymPy, CuPy
- Jupyter Notebook for interactive exploration

---

## πŸ“‚ Repository Structure

```
Numerical-Computing/
│── numpy/ # NumPy operations
│── scipy/ # SciPy-based scientific computing
│── sympy/ # Symbolic mathematics with SymPy
│── README.md # Documentation
└── requirements.txt # Python dependencies
```

---

## πŸ† Getting Started

### 1️⃣ Clone the Repository
```bash
git clone https://github.com/saadsalmanakram/Numerical-Computing.git
cd Numerical-Computing
```

### 2️⃣ Install Dependencies
```bash
pip install -r requirements.txt
```

### 3️⃣ Run an Example Notebook
Launch Jupyter Notebook and open one of the provided notebooks:
```bash
jupyter notebook
```

---

## πŸ” Topics Covered

### πŸ”’ **NumPy - The Core of Numerical Computing**
- **Creating & Manipulating Arrays**
- **Matrix Operations & Linear Algebra**
- **Broadcasting & Vectorization**
- **Random Number Generation**
- **Fourier Transforms (FFT)**

### πŸ”¬ **SciPy - Advanced Scientific Computing**
- **Optimization (Minimization, Curve Fitting)**
- **Numerical Integration (Quad, Romberg, Simpson’s Rule)**
- **Differential Equations (ODEs, PDEs)**
- **Signal Processing (Filtering, FFT, Spectral Analysis)**
- **Statistical Functions & Distributions**

### πŸ“ **SymPy - Symbolic Computation**
- **Algebraic Manipulation & Equation Solving**
- **Calculus (Derivatives, Integrals, Limits)**
- **Matrix Algebra & Determinants**
- **Series Expansions & Laplace Transforms**
- **Generating LaTeX Output**

### ⚑ **CuPy - GPU-Accelerated NumPy**
- **Accelerating NumPy with CUDA**
- **Performing Fast Matrix Computations**
- **Memory Management & GPU Array Handling**
- **Parallel Processing**

### 🏎 **Performance Optimization Techniques**
- **Vectorization vs. Loops**
- **Memory Management & Broadcasting**
- **CUDA Acceleration with CuPy**
- **Parallel Computing with SciPy**

---

## πŸš€ Example Code

### πŸ”’ **NumPy: Efficient Matrix Multiplication**
```python
import numpy as np

A = np.random.rand(1000, 1000)
B = np.random.rand(1000, 1000)

# Fast Matrix Multiplication
C = np.dot(A, B)
```

### πŸ”¬ **SciPy: Solving a Differential Equation**
```python
from scipy.integrate import odeint
import numpy as np

def dydt(y, t):
return -y + np.sin(t)

t = np.linspace(0, 10, 100)
y0 = 1.0

solution = odeint(dydt, y0, t)
```

### πŸ“ **SymPy: Solving Algebraic Equations**
```python
from sympy import symbols, Eq, solve

x = symbols('x')
equation = Eq(x**2 - 5*x + 6, 0)

solution = solve(equation, x)
print(solution) # Output: [2, 3]
```

### ⚑ **CuPy: GPU-Accelerated Computations**
```python
import cupy as cp

A = cp.random.rand(1000, 1000)
B = cp.random.rand(1000, 1000)

C = cp.dot(A, B) # GPU-accelerated matrix multiplication
```

---

## πŸ† Real-World Applications

πŸ“Œ **Numerical Optimization** β†’ Solve constrained & unconstrained optimization problems
πŸ“Œ **Differential Equations** β†’ Solve physics and engineering problems
πŸ“Œ **Signal Processing** β†’ Apply FFT, wavelet transforms, and filtering
πŸ“Œ **Computational Physics** β†’ Run simulations for quantum mechanics and electromagnetism
πŸ“Œ **Machine Learning & Data Science** β†’ Feature transformations, probability distributions

---

## πŸ† Contributing

Contributions are welcome! πŸš€

πŸ”Ή **Fork** the repository
πŸ”Ή Create a new branch (`git checkout -b feature-name`)
πŸ”Ή Commit changes (`git commit -m "Added CuPy optimization example"`)
πŸ”Ή Push to your branch (`git push origin feature-name`)
πŸ”Ή Open a pull request

---

## πŸ“œ License

This project is licensed under the **MIT License** – feel free to use, modify, and share the code.

---

## πŸ“¬ Contact

For queries or collaboration, reach out via:

πŸ“§ **Email:** [email protected]
🌐 **GitHub:** [SaadSalmanAkram](https://github.com/saadsalmanakram)
πŸ’Ό **LinkedIn:** [Saad Salman Akram](https://www.linkedin.com/in/saadsalmanakram/)

---

⚑ **Master Numerical Computing & Optimize Performance Efficiently!** ⚑

---