Numerical linear algebra, Skoltech, Fall 2016, general course info.

Lecture access

Lectures can be downloaded and viewed on github: https://github.com/oseledets/nla2016
They can also be viewed online using nbviewer: http://nbviewer.jupyter.org/github/oseledets/nla2016/tree/master/

The most comfortable way to navigate through course materials is to use table_of_contents.ipynb file in repo.

Team

Ivan Oseledets, i.oseledets@skoltech.ru,
Maxim Rakhuba, m.rakhuba@skoltech.ru,
Marina Munkhoeva, marina.munkhoeva@skolkovotech.ru,
Alexandr Katrutsa, aleksandr.katrutsa@phystech.edu.
Artem Nikitin,
Valentin Khrulkov

Feedback system

We encourage you to use Piazza platform for communication with TAs and with each other.

How do we grade

  • 40% homework. Includes 3 problem sets with coding in Python and theoretical problems.
  • 15% written midterm test (previous year tests are here: v1 and v2)
  • 15% final oral exam in the traditional manner of Russian oral exams.
  • 30% term project. We encourage that you suggest your own term project. Team should be 3-4 people. On Piazza you will find more info and you can use it to find teammates.

<img src="grades.png", width=300>

Deadlines & attendance & late submissions

  1. Strict deadlines. 2 days after deadline gives 80% maximum. Then 50%.
  2. No penalties for absense, but we will collect attendance lists each lection for statistics.

Course description

  • Numerical linear algebra is the basis for computational science and engineering and data science </font>
  • Matrices and their decompositions are the key </font>
  • The tools are different for small-scale and large-scale problems </font>

Learning outcomes

  • Solve medium-scale numerical linear algebra problems (solve linear systems, compute eigenvalues and eigenvectors, solve linear least squares) using matrix factorizations </font>
  • Iterative methods for sparse/structured systems </font>
  • Find which methods are the most appropriate for the particular problem </font>
  • Find appropriate software </font>

Some details

  • We will use Python ecosystem for programming. The first week we will spend for the Python crash course (including today)
  • All the homework will be distributed in the form of Jupyter notebooks

In [4]:
%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
import seaborn  as sns
x = np.linspace(0,1,1024)
plt.plot(np.sin(20*x))
#Do some random plot here


Out[4]:
[<matplotlib.lines.Line2D at 0x110308050>]

(Approximate) Syllabus

  • Week 1: Floating points arithmetics, matrices, vectors, norms, ranks
  • Week 2: Matrix decompositions 1: SVD and its applications
  • Week 3: Matrix decompositions 2: Linear systems and LU, eigendecomposition
  • Week 4: Matrix decompositions 3: QR and Schur + test
  • Week 5: Sparse and structured matrices, iterative methods, preconditioners
  • Week 6: Matrix functions and advanced topics (compressed sensing, tensor decompositions)
  • Week 7: Oral exam
  • Week 8: Application period

From advanced topics, we will try to cover compressed sensing, image procession and tensor factorizations.

Books

  • Golub, Van Loan, "Matrix computations" (4th edition)
  • Tyrtyshnikov, "Brief introduction to numerical analysis"
  • Demmel, "Numerical Linear Algebra"

Coding & Python

If there is a request, we can organize a short Python/Numpy/Jupyter tutorial.


In [1]:
from IPython.core.display import HTML
def css_styling():
    styles = open("./styles/custom.css", "r").read()
    return HTML(styles)
css_styling()


Out[1]: