{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Vector addition"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "u     = [3 2]\n",
      "v     = [ 1 -1]\n",
      "u + v = [4 1]\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "\n",
    "u = np.array([3, 2])\n",
    "v = np.array([1, -1])\n",
    "\n",
    "print(f'u     = {u}')\n",
    "print(f'v     = {v}')\n",
    "print(f'u + v = {u + v}')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Scalar multiplication"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      " u = [3 2]\n",
      "2u = [6 4]\n"
     ]
    }
   ],
   "source": [
    "u = np.array([3, 2])\n",
    "\n",
    "print(f' u = {u}')\n",
    "print(f'2u = {2*u}')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Linear combination"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "v1 = [ 1  0 -1]\n",
      "v2 = [ 2 -3  1]\n",
      "v3 = [ 5 -4  0]\n",
      "\n",
      "3v1 + 2v2 - v3 = [ 2 -2 -1]\n"
     ]
    }
   ],
   "source": [
    "v1 = np.array([1,  0, -1])\n",
    "v2 = np.array([2, -3,  1])\n",
    "v3 = np.array([5, -4,  0])\n",
    "\n",
    "print(f'v1 = {v1}')\n",
    "print(f'v2 = {v2}')\n",
    "print(f'v3 = {v3}')\n",
    "\n",
    "print()\n",
    "print(f'3v1 + 2v2 - v3 = {3*v1 + 2*v2 - v3}')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Dot product"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "u = [ 1  2 -3]\n",
      "v = [-3  5  2]\n",
      "\n",
      "u.dot(v) = 1\n",
      "u@v = 1\n"
     ]
    }
   ],
   "source": [
    "u = np.array([ 1, 2, -3])\n",
    "v = np.array([-3, 5,  2])\n",
    "\n",
    "print(f'u = {u}')\n",
    "print(f'v = {v}')\n",
    "\n",
    "print()\n",
    "print(f'u.dot(v) = {u.dot(v)}')\n",
    "print(f'u@v = {u@v}')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Length (norm) of a vector"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "v       = [ 2 -1  3]\n",
      "norm(v) = 3.7416573867739413\n"
     ]
    }
   ],
   "source": [
    "from numpy.linalg import norm\n",
    "\n",
    "v = np.array([2, -1, 3])\n",
    "\n",
    "print(f'v       = {v}')\n",
    "print(f'norm(v) = {norm(v)}')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Normalize a vector"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "      v = [ 2 -1  3]\n",
      "      u = [ 0.53452248 -0.26726124  0.80178373]\n",
      "norm(u) = 1.0\n"
     ]
    }
   ],
   "source": [
    "v = np.array([2, -1, 3])\n",
    "u = (1/norm(v))*v\n",
    "\n",
    "print(f'      v = {v}')\n",
    "print(f'      u = {u}')\n",
    "print(f'norm(u) = {norm(u)}')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
