Coder Social home page Coder Social logo

tengjuilin / intro-sci-computing Goto Github PK

View Code? Open in Web Editor NEW
8.0 1.0 2.0 143.61 MB

UW AMATH 301. Scientific computing and numerical methods for physical, biological, and engineering problems. Topics include root-finding, optimization, curve fitting, solving linear systems, singular value decomposition (SVD, PCA), numerical differentiation and integration, solving first-order and higher order ODEs, stability and stiffness of ODEs, phase portraits, chaotic systems, and Fourier transform.

Home Page: https://intro-sci-computing.netlify.app/

License: Creative Commons Attribution 4.0 International

Jupyter Notebook 100.00% CSS 0.01%
scientific-computing numerical-methods engineering ode optimization linear-systems fourier-transform

intro-sci-computing's Introduction

Introduction to Scientific Computing

License Website DOI

AMATH 301 covers numerical methods and programming skills needed to solve physical, biological, and engineering problems. Content is transcribed from MATLAB (originally taught in the course) to Python for open source reference. Taken in Sp20 with Dr. Craig Gin.

Note: Starred topics (*) are not covered in Sp20 but covered in previous years.

Root-Finding and Optimization

Topic Applications Numerical Methods
Python Skills
Jupyter
Notebook
Online
Root finding algorithms Solving function values Bisection method
Newton's method
scipy.optimize.root_scalar()
ipynb html
Unconstrained optimization Finding max and min of convex functions Golden section search
Gradient descent
scipy.optimize.fminbound()
scipy.optimize.fmin()
ipynb html
Constrained optimization* Finding max and min of functions with constraints Linear programming
Genetic algorithm
scipy.optimize.linprog()
scipy.optimize.differential_evolution()
ipynb html
Curve fitting and interpolation Fitting data
Interpolating between data
Sum of squared error
Sum of absolute error
Maximum absolute error
scipy.optimize.fmin()
scipy.optimize.curve_fit()
numpy.polyfit()
numpy.polyval()
scipy.interpolate.interp1d()
ipynb html

Linear Algebra

Topic Applications Numerical Methods
Python Skills
Jupyter
Notebook
Online
Matrix operations in python Dot product
Norm
Matrix multiplication
@
numpy.linalg.norm()
ipynb html
Solving linear systems
with direct methods
Solving linear systems repeatedly Matrix inversion
LU decomposition
np.linalg.lu()
scipy.linalg.solve()
ipynb html
Solving linear systems
with iterative methods
Solving sparse linear systems Jacobi method
Gauss-Seidel method
numpy.linalg.eig()
numpy.linalg.eigvals()
ipynb html
Singular value decomposition (SVD)
(Principle component analysis, PCA)
Dimensionality reduction
Image compression
SVD, PCA algorithm
scipy.linalg.svd()
ipynb html

Numerical Calculus

Topic Applications Numerical Methods
Python Skills
Jupyter
Notebook
Online
Numerical differentiation Differentiate functions
Differentiate data
Forward difference
Backward difference
Central difference
Other second order methods
numpy.gradient()
ipynb html
Numerical integration Single integrals
Double integrals
Triple integrals
(functions and data)
Left end point rule
Right endpoint rule
Midpoint rule
Trapezoidal rule
Simpson's rule
scipy.integrate.quad()
scipy.integrate.dblquad()
scipy.integrate.tplquad()
ipynb html

Ordinary Differential Equations (ODEs)

Topic Applications Numerical Methods
Python Skills
Jupyter
Notebook
Online
Solving first-order ODEs Solving first-order ODEs Forward Euler
Backward Euler
Midpoint method
Fourth-order Runge-Kutta (RK4)
scipy.integrate.solve_ivp()
ipynb html
Solving higher-order ODEs Solving higher-order ODEs
Systems of first-order ODEs
Forward Euler
Backward Euler
scipy.integrate.solve_ivp()
ipynb html
Stability and stiffness of ODEs Choosing integration methods
Choosing time steps
Forward Euler
Backward Euler
scipy.integrate.solve_ivp()
ipynb html
Chaotic systems part 1* Lorenz system scipy.integrate.solve_ivp() ipynb html
Chaotic systems part 2* Lorenz system scipy.integrate.solve_ivp() ipynb html

Phase Portrait Applications

Topic Applications Numerical Methods
Python Skills
Jupyter
Notebook
Online
Spring-mass-damper system Physics scipy.integrate.solve_ivp() ipynb html
Linear, nonlinear pendulum Physics scipy.integrate.solve_ivp() ipynb html
Two-eyed monster Applied math scipy.integrate.solve_ivp() ipynb html
Population dynamics
Predator-pray model
Competition model
Ecology scipy.integrate.solve_ivp() ipynb html
FitzHugh-Nagumo neuron excitation model part 1* Neuroscience scipy.integrate.solve_ivp() ipynb html
FitzHugh-Nagumo neuron excitation model part 2* Neuroscience scipy.integrate.solve_ivp() ipynb html
FitzHugh-Nagumo neuron excitation model part 3* Neuroscience scipy.integrate.solve_ivp() ipynb html
Coupled harmonic oscillator* Physics scipy.integrate.solve_ivp() ipynb html

Fourier Transform

Topic Applications Numerical Methods
Python Skills
Jupyter
Notebook
Online
Fourier transform* Power spectrum density
Noise filtering
Image compression
Discrete Fourier transform
Fast Fourier transform
numpy.fft.fft()
numpy.fft.ifft()
numpy.fft.fftfreq()
numpy.fft.fft2()
ipynb html

Gallery

lourenz_3d_small_cube.mp4
lourenz_3d_large_cube.mp4
lourenz_3d_rot.mp4
lourenz_spin.mp4
lourzenz_time_step.mp4
neuron_base_case.mp4
neuron_one_eyed.mp4
neuron_two_eyed.mp4
neuron_loop.mp4
neuron_decreaing_current.mp4
neuron_increasing_current.mp4
neuron_oscillating_current_fast.mp4
neuron_oscillating_current_slow.mp4

intro-sci-computing's People

Contributors

tengjuilin avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.