{ "cells": [ { "cell_type": "code", "execution_count": 8, "id": "c5dc3dd5-c340-4aa6-a898-b467845121e6", "metadata": { "tags": [] }, "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from scipy.linalg import hilbert" ] }, { "cell_type": "code", "execution_count": 102, "id": "073124ba-d6bd-4f82-9431-fe81bdc77c21", "metadata": { "tags": [] }, "outputs": [], "source": [ "def decompoQR(A):\n", " \"\"\"\n", " A = QR\n", " \n", " Q = Matrice vecteurs orthogonaux (colonnes)\n", " R = Coéfficients des projections sur les vecteurs (triangulaire sup)\n", " \n", " \"\"\"\n", " m, n = A.shape\n", " Q = np.zeros((m,m))\n", " R = np.zeros((m,n))\n", " \n", " for i in range(m):\n", " # Vecteur ligne de A = \n", " v = A[:,i]\n", " pr = 0\n", " \n", " # Retirer projection sur v des autres vecteurs\n", " # proj A sur B = A@B/(B@B) * B\n", " for j in range(0, i):\n", " av = Q[:,j]\n", "\n", " pr += (av.T@v)* av\n", " v = v - pr\n", "\n", " # normalisation vecteur\n", " Q[:,i] = v/np.linalg.norm(v)\n", " \n", " \n", " R = Q.T@A\n", " \n", " return Q, R" ] }, { "cell_type": "code", "execution_count": 103, "id": "e35d7cf5-cbbe-4948-98ed-a241643110d0", "metadata": { "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "-4.393707619954057e-14\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "x = np.arange(2, 201)\n", "y = np.zeros(len(x))\n", "\n", "for i in range(len(x)):\n", " A = hilbert(x[i])\n", " Q, R = decompoQR(A)\n", " y[i] = np.linalg.norm(Q.T@Q - np.identity(x[i]))\n", " \n", "Q, R = decompoQR(hilbert(8))\n", "print(Q[:,1]@Q[:,2])\n", "#print(y)\n", "plt.plot(x, y, color= 'b')\n", "plt.xlabel('dimension n')\n", "plt.ylabel('Erreur ||Q\\'Q - I||')\n", "plt.title('Perte d\\'orthogonalité')\n", "\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "id": "ea75b7ed-f555-46b7-af0c-6549d09ffe82", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.11.5" } }, "nbformat": 4, "nbformat_minor": 5 }