{"metadata": {"name": "", "signature": "sha256:5a9317d71f0a72fc50c9be61898caa613606100e3965c2716f401b5dfcf9523d"}, "nbformat": 3, "nbformat_minor": 0, "worksheets": [{"metadata": {}, "cells": [{"metadata": {}, "source": ["# Making vectors orthogonal"], "cell_type": "markdown"}, {"input": ["import numpy as np\n", "import matplotlib.pyplot as pt"], "metadata": {}, "language": "python", "collapsed": false, "prompt_number": 4, "cell_type": "code", "outputs": []}, {"input": ["np.random.seed(13)\n", "x = np.random.randn(2)\n", "y = np.random.randn(2)"], "metadata": {}, "language": "python", "collapsed": false, "prompt_number": 25, "cell_type": "code", "outputs": []}, {"input": ["pt.arrow(0, 0, x[0], x[1], color=\"blue\")\n", "pt.arrow(0, 0, y[0], y[1], color=\"red\")\n", "pt.xlim([-1, 1])\n", "pt.ylim([-1, 1])\n", "pt.gca().set_aspect(\"equal\")\n", "pt.grid()"], "metadata": {}, "language": "python", "collapsed": false, "prompt_number": 22, "cell_type": "code", "outputs": [{"metadata": {}, "text": [""], "output_type": "display_data", "png": "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\ngg==\n"}]}, {"metadata": {}, "source": ["Are those orgonal? How would we find out?"], "cell_type": "markdown"}, {"input": ["x.dot(y)"], "metadata": {}, "language": "python", "collapsed": false, "prompt_number": 26, "cell_type": "code", "outputs": [{"metadata": {}, "text": ["0.37226452785072001"], "prompt_number": 26, "output_type": "pyout"}]}, {"metadata": {}, "source": ["Now use the formula to make `ynew` which *is* orthogonal to `x`:"], "cell_type": "markdown"}, {"input": ["ynew = y - y.dot(x)/x.dot(x)*x"], "metadata": {}, "language": "python", "collapsed": false, "prompt_number": 27, "cell_type": "code", "outputs": []}, {"input": ["pt.arrow(0, 0, x[0], x[1], color=\"blue\")\n", "pt.arrow(0, 0, ynew[0], ynew[1], color=\"red\")\n", "pt.xlim([-1, 1])\n", "pt.ylim([-1, 1])\n", "pt.gca().set_aspect(\"equal\")\n", "pt.grid()"], "metadata": {}, "language": "python", "collapsed": false, "prompt_number": 28, "cell_type": "code", "outputs": [{"metadata": {}, "text": [""], "output_type": "display_data", "png": "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\n"}]}, {"input": [], "metadata": {}, "language": "python", "collapsed": false, "cell_type": "code", "outputs": []}]}]}