{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Parte 8\n",
    "Sperimentazione numerica relativa all'approssimazione ai minimi quadrati. Si impiegano le funzioni per la fattorizzazione LU."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "addpath (\"./functions\");"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Metodo delle equazioni normali\n",
    "\n",
    "Risoluzione di un sistema lineare sovradeterminato per determinare i coefficienti di un polinomio approssimato ai minimi quadrati con il metodo delle equazioni normali.\n",
    "\n",
    "    [a] = metodoEN(x, y, n)\n",
    "\n",
    "Output:\n",
    "- `a` vettore dei coefficienti del polinomio approssimante.\n",
    "\n",
    "Input:\n",
    "- `n` grado del polinomio approssimante,\n",
    "- `x` vettore delle ascisse,\n",
    "- `y` vettore delle ordinate.\n",
    "\n",
    "Si effettua la costruzione della matrice rettangolare di Vandermonde"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "function [a] = NEmethod(x, y, n)\n",
    "\n",
    "l = length(x);\n",
    "H_completa = vander(x);\n",
    "\n",
    "%{\n",
    "dati n + 1 punti per il polinomio di grado n\n",
    "si prelevano le colonne da l-n a l\n",
    "il grado del polinomio determina le prime n colonne scartate\n",
    "%}\n",
    "\n",
    "H = H_completa(:, l - n : l); \n",
    "\n",
    "% Risolve il sistema delle equazioni normali H' ∗ Ha = H' y\n",
    "% con fattorizzazione di Cholesky\n",
    "A = H' * H;\n",
    "b = H' * y;\n",
    "[R, p] = chol(A);\n",
    "\n",
    "if p > 0 % A non è definita positiva\n",
    "    a = A \\ b;\n",
    "else % A è definita positiva\n",
    "    b1 = lsolve(R' , b);\n",
    "    a = usolve(R, b1);\n",
    "end\n",
    "\n",
    "l = length(x);\n",
    "\n",
    "H_completa = vander(x);\n",
    "H = H_completa(:, l - n : l); \n",
    "\n",
    "A = H' * H;\n",
    "b = H' * y;\n",
    "\n",
    "[R, p] = chol(A);\n",
    "\n",
    "b1 = lsolve(R' , b);\n",
    "a = usolve(R, b1);\n",
    "\n",
    "end"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Metodo QR\n",
    "\n",
    "Risoluzione di un sistema lineare sovradeterminato per determinare i coefficienti di un polinomio approssimato ai minimi quadrati con il metodo QRLS.\n",
    "\n",
    "    [a] = metodoQR(x, y, n)\n",
    "\n",
    "- `n` grado del polinomio approssimante;\n",
    "- `a` vettore dei suoi coefficienti;\n",
    "\n",
    "Partendo dai sperimentali, coppie `(x,y)`:\n",
    "- `x` vettore delle ascisse;\n",
    "- `y` vettore delle ordinate.\n",
    "\n",
    "Si effettua la costruzione della matrice rettangolare di Vandermonde\n",
    "\n",
    "- `Q` matrice ortogonale\n",
    "- `R` matrice trapezoidale superiore\n",
    "- `R_1` matrice triangolare superiore, blocco di `R`\n",
    "- `y_1` vettore dei termini noti costruito a partire da `Q`\n",
    "- `y_1` vettore dei termini noti, blocco di dimensioni pari a `R_1`"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "function [a] = QRmethod(x, y, n)\n",
    "\n",
    "l = length(x);\n",
    "H_completa = vander(x);\n",
    "\n",
    "%{\n",
    "dati n + 1 punti per il polinomio di grado n\n",
    "si prelevano le colonne da l-n a l. Il grado del \n",
    "polinomio determina le prime n colonne scartate\n",
    "%}\n",
    "H = H_completa(:, l - n : l);\n",
    "\n",
    "[Q, R] = qr(H);\n",
    "R_1 = R(1 : n + 1, :);\n",
    "y_1 = Q' * y;\n",
    "y_1 = y_1(1 : n + 1);\n",
    "\n",
    "a = usolve(R_1, y_1);\n",
    "\n",
    "end"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Esercizio 1\n",
    "\n",
    "Si effettua un confronto tra i risultati ottenuti a partire dal metodo delle equazioni normali e della fattorizzazione QR, sia dal punto di vista qualitativo, tramite grafici dei polinomi risolventi, che dal punto di vista quantitativo tramite il calcolo dei residui."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The degree of the polynomial must be greater than 1 and less than 5\n"
     ]
    },
    {
     "name": "stdin",
     "output_type": "stream",
     "text": [
      " degree: 3\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "% Dati sperimentali\n",
    "\n",
    "%x = [-3.5, -3, -2, -1.5, -0.5, 0.5, 1.7, 2.5, 3]';\n",
    "%y = [-3.9, -4.8, -3.3, -2.5, 0.3, 1.8, 4, 6.9, 7.1]';\n",
    "%x = [-3.14, -2.4, -1.57, -0.7, -0.3, 0, 0.4, 0.7, 1.57]';\n",
    "%y = [0.02, -1, -0.9, -0.72, -0.2, -0.04, 0.65, 0.67, 1.1]';\n",
    "%x = linspace(0, 3, 12)';\n",
    "%y = exp(x_3 ).* cos(4 * x_3) + randn(12, 1);\n",
    "x = [1.001, 1.0012, 1.0013, 1.0014, 1.0015, 1.0016]';\n",
    "y = [-1.2, -0.95, -0.9, -1.15, -1.1, -1]';\n",
    "\n",
    "% campionamento di x in base ai dati sperimentali\n",
    "xx = linspace(min(x), max(x), 200)';\n",
    "\n",
    "% punti iniziali su grafico\n",
    "close\n",
    "figure (1)\n",
    "hold on\n",
    "plot(x, y, 'k*');\n",
    "\n",
    "% grado del polinomio\n",
    "disp(\"The degree of the polynomial must be greater than 1 and less than 5\");\n",
    "n = input(\" degree: \");\n",
    "% blocco 1\n",
    "[a_1] = NEmethod(x, y, n);\n",
    "[a_1_qr] = QRmethod(x, y, n);\n",
    "    \n",
    "yy_1 = polyval(a_1, xx);\n",
    "yy_1_qr = polyval(a_1_qr, xx);\n",
    "\n",
    "plot(xx, yy_1, \"g-\", xx, yy_1_qr, \"r--\");\n",
    "legend(\"punti\", \"metodoEN\",\"metodoQR\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "res_en =  0.23746\n",
      "res_qr =  0.22746\n"
     ]
    }
   ],
   "source": [
    "% residui\n",
    "res_en = norm(y - polyval(a_1, x))\n",
    "res_qr = norm(y - polyval(a_1_qr, x))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Esercizio 2\n",
    "\n",
    "Si effettua un confronto, a partire dai dati sperimentali forniti, tra la qualità delle approssimazioni fornite dalla retta di regressione, dall'approssimazione ai minimi quadrati  espressa tramite parabola e tramite basi esponenziali."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "% Dati sperimentali\n",
    "x = [0.0004, 0.2507, 0.5008, 2.0007, 8.0013]';\n",
    "y = [0.0007, 0.0162, 0.0288, 0.0309, 0.0310]';\n",
    "\n",
    "% campionamento di x in base ai dati sperimentali\n",
    "xx = linspace(min(x), max(x));\n",
    "\n",
    "% dati iniziali su grafico\n",
    "close\n",
    "figure(1)\n",
    "hold on\n",
    "plot(x, y, 'k*');\n",
    "\n",
    "% retta di regressione\n",
    "[a_1] = QRmethod(x, y, 1);\n",
    "yy_1 = polyval(a_1, xx);\n",
    "\n",
    "% parabola di approssimazione\n",
    "[a_2] = QRmethod(x, y, 2);\n",
    "yy_2 = polyval(a_2, xx);\n",
    "\n",
    "% approssimazione ai minimi quadrati espressa \n",
    "% in termini di basi esponenziali\n",
    "\n",
    "n = 2;\n",
    "% per pol del tipo a * x + b * exp(-x) + c * exp(- 2 * x)\n",
    "M = [ones(size(x)), exp(-x), exp(-2*x)];\n",
    "% per polinomi del tipo a * x^3 + b * x^2 + c * x^1 + d * x^0 \n",
    "C = vander(x);\n",
    "% dato che lo si vuole valutare di un grado <4 si taglia la matrice\n",
    "F = C(:, 3 : 5);\n",
    "\n",
    "[Q, R] = qr(M);\n",
    "R_1 = R(1: n + 1 ,:);\n",
    "y_1 = Q' * y;\n",
    "y_1 = y_1( 1 : n + 1);\n",
    "a = usolve(R_1, y_1);\n",
    "yy_3 = a(1) + a(2) * exp(-xx) + a(3) * exp(-2 * xx);\n",
    "\n",
    "plot(xx, yy_1, \"g-\", xx, yy_2, \"r--\", xx, yy_3, \"b--\");\n",
    "legend(\"punti\", \"retta\", \"parabola\", \"basi esp.\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "E_1 =    4.848327762313227e-04\n",
      "E_2 =    2.364635594024985e-04\n",
      "E_3 =    1.224973312890183e-05\n"
     ]
    }
   ],
   "source": [
    "% norma euclidea al quadrato dei vettori residui\n",
    "% calcolo errori quadratici commessi a causa della scelta dei nodi\n",
    "format long\n",
    "E_1 = sum((polyval(a_1, x) - y).^2)\n",
    "E_2 = sum((polyval(a_2, x) - y).^2)\n",
    "E_3 = sum((a(1) + a(2) * exp(-x) + a(3) * exp(-2 * x) - y).^2 )"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Dato che $E_3 < E_2 < E_1$ si ha la conferma che la migliore approssimazione dei punti forniti è data dalla curva nella base esponenziale mentre la peggiore è data dalla retta di regressione."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Esercizio 3"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "% dati sperimentali e dati perturbati\n",
    "x = [10 : .5/5 : 10.5]';\n",
    "y = [11.0320, 11.1263, 11.1339, 11.1339, 11.1993, 11.1844]';\n",
    "\n",
    "\n",
    "xx = linspace(min(x), max(x));\n",
    "\n",
    "n = 4;\n",
    "\n",
    "[a_1_qr] = QRmethod(x, y, n);\n",
    "[a_1] = NEmethod(x, y, n);\n",
    "\n",
    "yy_qr = polyval(a_1_qr, xx);\n",
    "yy = polyval(a_1, xx);\n",
    "\n",
    "close\n",
    "figure(1)\n",
    "hold on\n",
    "plot(x, y, \"k*\");\n",
    "\n",
    "plot(xx, yy, \"r--\", xx, yy_qr, \"b-.\");\n",
    "legend(\"punti\", \"eq. normali\", \"QRLS\",\"location\", \"eastoutside\");"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "x(2) = x(2) + 0.013;\n",
    "y(2) = y(2) - 0.001;\n",
    "\n",
    "% [a_2] = polyfit(x, y, n); BADLY CONDITIONED\n",
    "[a_1_qr] = QRmethod(x, y, n);\n",
    "[a_1] = NEmethod(x, y, n);\n",
    "\n",
    "% yy_2 = polyval(a_2, n);\n",
    "yy_qr = polyval(a_1_qr, xx);\n",
    "yy = polyval(a_1, xx);\n",
    "\n",
    "figure(2)\n",
    "hold on\n",
    "plot(x, y, \"k*\");\n",
    "\n",
    "plot(xx, yy, \"r--\", xx, yy_qr, \"b-.\");\n",
    "legend(\"punti\", \"eq. normali\", \"QRLS\", \"location\", \"eastoutside\");"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Si nota che il risultato del metodo QRLS mantiene una buona accuratezza anche a fronte della perturbazione mentre con il metodo delle equazioni normali si ottiene una peggiore approssimazione a seguito della perturbazione dei dati."
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Octave",
   "language": "octave",
   "name": "octave"
  },
  "language_info": {
   "file_extension": ".m",
   "help_links": [
    {
     "text": "GNU Octave",
     "url": "https://www.gnu.org/software/octave/support.html"
    },
    {
     "text": "Octave Kernel",
     "url": "https://github.com/Calysto/octave_kernel"
    },
    {
     "text": "MetaKernel Magics",
     "url": "https://metakernel.readthedocs.io/en/latest/source/README.html"
    }
   ],
   "mimetype": "text/x-octave",
   "name": "octave",
   "version": "5.2.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}