{"metadata": {"signature": "sha256:69ee781e77f94954a0ec5c0fcadd8bb26f9404c604062e65f62452a8419fc17b", "name": ""}, "nbformat": 3, "worksheets": [{"metadata": {}, "cells": [{"metadata": {}, "source": ["# Orthogonalizing three vectors"], "cell_type": "markdown"}, {"collapsed": false, "prompt_number": 1, "outputs": [], "cell_type": "code", "metadata": {}, "input": ["import numpy as np\n", "import numpy.linalg as la"], "language": "python"}, {"collapsed": false, "prompt_number": 3, "outputs": [], "cell_type": "code", "metadata": {}, "input": ["np.random.seed(13)\n", "xorig = np.random.randn(200)\n", "yorig = np.random.randn(200)\n", "zorig = np.random.randn(200)"], "language": "python"}, {"metadata": {}, "source": ["Orthonormalize $x$ and $y$ as we know:"], "cell_type": "markdown"}, {"collapsed": false, "prompt_number": 4, "outputs": [], "cell_type": "code", "metadata": {}, "input": ["x = xorig/la.norm(xorig)"], "language": "python"}, {"collapsed": false, "prompt_number": 6, "outputs": [], "cell_type": "code", "metadata": {}, "input": ["y = yorig\n", "y = y - x.dot(y)*x\n", "y = y / la.norm(y)"], "language": "python"}, {"metadata": {}, "source": ["Check:"], "cell_type": "markdown"}, {"collapsed": false, "prompt_number": 7, "outputs": [{"stream": "stdout", "text": ["1.0\n", "1.0\n", "-4.07660016855e-17\n"], "output_type": "stream"}], "cell_type": "code", "metadata": {}, "input": ["print(la.norm(x))\n", "print(la.norm(y))\n", "print(x.dot(y))"], "language": "python"}, {"metadata": {}, "source": ["Now what to with $z$?"], "cell_type": "markdown"}, {"collapsed": false, "prompt_number": 8, "outputs": [], "cell_type": "code", "metadata": {}, "input": ["z = zorig\n", "z = z - np.dot(z, x)*x - np.dot(z,y)*y\n", "z = z / la.norm(z)"], "language": "python"}, {"metadata": {}, "source": ["Check:"], "cell_type": "markdown"}, {"collapsed": false, "prompt_number": 9, "outputs": [{"stream": "stdout", "text": ["1.0\n", "-1.38777878078e-17\n", "-3.68628738645e-17\n"], "output_type": "stream"}], "cell_type": "code", "metadata": {}, "input": ["print(la.norm(z))\n", "print(x.dot(z))\n", "print(y.dot(z))"], "language": "python"}]}], "nbformat_minor": 0}