1
Fork 0
mirror of https://github.com/Steffo99/unisteffo.git synced 2024-11-30 03:44:19 +00:00
triennale-appunti-steffo/docs/route-CalcoloNumerico.chunk.feb65.esm.js

207 lines
58 KiB
JavaScript
Raw Normal View History

2021-02-02 03:08:22 +00:00
(window.webpackJsonp=window.webpackJsonp||[]).push([[5],{"2w3n":function(l){l.exports={red:"red__2y1B_",orange:"orange__dD2kx",yellow:"yellow__OEpwl",lime:"lime__CVe41",cyan:"cyan__26ZAg",blue:"blue__LO7Xm",magenta:"magenta__1Akee",example:"example__2PzAa"}},"31Ft":function(l,i,n){"use strict";(function(l){var e=n("hosL"),a=n("mbOI"),o=n("ke5e");let t,r,u,s,c,d,p,m,_,b,f,g,z,h,x,v,q,k,L,A,S,y,C,w,I,O,G,R=l=>l;const F=String.raw;i.a=function(){return l(e.Fragment,null,l(a.s,{title:"Problema: Interpolazione"},l(a.r,{title:"Descrizione"},l("p",null,"Si vuole trovare una funzione in grado di ",l("b",null,"approssimarne")," un'altra, di cui si conoscono però solo alcuni punti."),l(o.a,null,"È utile in un sacco di casi! Ad esempio, quando si vuole scalare un'immagine."),l("p",null,"I punti sono detti ",l("b",null,"nodi")," ",l(a.i,null,F(t||(t=R`(x_i, y_i)`))),", mentre la funzione costruita su di essi è detta ",l("b",null,"interpolante")," ",l(a.i,null,F(r||(r=R`g`))),":"),l(a.q,null,F(u||(u=R`g(x_i) = y_i`))),l("p",null,"Dato un insieme di punti, esistono ",l("b",null,"infinite")," funzioni interpolanti.")),l(a.r,{title:"Interpolazione polinomiale"},l("p",null,"Il ",l("u",null,"teorema fondamentale dell'algebra")," dice che ",l("b",null,"esiste una sola interpolante ",l("i",null,"polinomiale"))," che interpola un dato insieme di punti."),l("p",null,"Con ",l(a.i,null,"n+1")," punti, l'interpolante sarà al massimo di grado ",l(a.i,null,"n"),", e viene detta ",l(a.i,null,F(s||(s=R`p_n`))),"."),l("p",null,"La sua ",l("b",null,"forma canonica")," sarà:"),l(a.q,null,F(c||(c=R`p_n(x) = a_0 + a_1 x + a_2 x^2 + a_3 x^3 + \dots + a_n x^n`))))),l(a.s,{title:"Metodi di interpolazione"},l(a.r,{title:"Metodo dei coefficienti indeterminati"},l("p",null,"È possibile scrivere la forma canonica come ",l("b",null,"matrice"),":"),l(a.q,null,F(d||(d=R`A \cdot x = b`))),l("p",null,"Costruiamo la ",l("b",null,"matrice di Vandermonde"),":"),l(a.q,null,F(p||(p=R`
A =
\begin{pmatrix}
1 & x_0 & x_0^2 & \dots & x_0^n\\\\
1 & x_1 & x_1^2 & \dots & x_1^n\\\\
1 & x_2 & x_2^2 & \dots & x_2^n\\\\
\vdots & \vdots & \vdots & \ddots & \vdots\\\\
1 & x_n & x_n^2 & \dots & x_n^n
\end{pmatrix}
`))),l("p",null,"Costruiamo il ",l("b",null,"vettore delle incognite"),":"),l(a.q,null,F(m||(m=R`
x =
\begin{pmatrix}
a_0\\\\
a_1\\\\
a_2\\\\
\vdots\\\\
a_n
\end{pmatrix}
`))),l("p",null,"Costruiamo il ",l("b",null,"vettore dei termini noti"),":"),l(a.q,null,F(_||(_=R`
b =
\begin{pmatrix}
y_0\\\\
y_1\\\\
y_2\\\\
\vdots\\\\
y_n
\end{pmatrix}
`))),l(o.a,null,"Per trovare il polinomio di interpolazione è sufficiente risolvere il problema!"),l("p",null,"È efficace perchè una volta calcolati i coefficienti essi ",l("b",null,"valgono per tutti i punti"),", ma ha come svantaggio che la matrice di Vandermonde è ",l("b",null,"spesso malcondizionata."))),l(a.r,{title:"Metodo di Lagrange"},l("p",null,"È possibile scrivere il polinomio di interpolazione ",l("b",null,"raccogliendo le ",l(a.i,null,F(b||(b=R`y`)))),":"),l(a.q,null,F(f||(f=R`p_n (x) = y_0 L_0 + y_1 L_1 + y_2 L_2 + \dots + y_n L_n`))),l("p",null,"I polinomi ",l(a.i,null,F(g||(g=R`L_k`)))," sono detti ",l("b",null,"polinomi di Lagrange"),", e hanno le seguenti proprietà:"),l("ul",null,l("li",null,"Valgono ",l(a.i,null,"1")," in corrispondenza del nodo con lo stesso indice, ",l(a.i,null,"0")," in corrispondenza dei nodi con indice diverso e ",l(a.i,null,F(z||(z=R`0 < n < 1`)))," in tutti gli altri casi.",l(a.q,null,F(h||(h=R`
\begin{cases}
L_k(x_k) = 1 \qquad (nel\ nodo)\\
L_k(x_j) = 0 \qquad (altri\ nodi)
\end{cases}
`)))),l("li",null,"Si compongono con questo prodotto:",l(a.q,null,F(x||(x=R`L_k = \frac{(x - x_0) \cdot \dots \cdot (x - x_{k-1}) \cdot (x - x_{k+1}) \cdot \dots \cdot (x_k - x_n)}{(x_k - x_0) \cdot \dots \cdot (x_k - x_{k-1}) \cdot (x_k - x_{k+1}) \cdot \dots \cdot (x_k - x_n)}`))))),l(o.a,null,"Non c'è il termine con ",l(a.i,null,F(v||(v=R`x_k`))),"!"),l("p",null,"Tutti insieme formano la ",l("b",null,"base di Lagrange"),"."),l(o.a,null,"Si chiama base perchè sono ",l("b",null,"linearmente indipendenti"),"!"),l("p",null,"Questo metodo permette di calcolare il valore del polinomio di interpolazione ",l("b",null,"in un singolo punto"),":"),l(o.a,null,l("p",null,"Si può risparmiare tempo di calcolo calcolando una singola volta il numeratore con ",l("i",null,"tutti")," i termini:"),l(a.q,null,F(q||(q=R`\omega_n = (x - x_0) \cdot (x - x_1) \cdot \dots \cdot (x - x_n)`))),l("p",null,"E poi dividendo per il termine che andrebbe escluso:"),l(a.q,null,F(k||(k=R`L_k(x) = \frac{ \omega_n }{ (x - x_k) \cdot \prod_{i=0, i \neq k} (x_k - x_i) }`)))),l("p",null,"Ha costo computazionale ",l(a.i,null,F(L||(L=R`O(n^2)`))),"."))),l(a.s,{title:"Resto di interpolazione"},l(a.r,{title:"Definizione"},l("p",null,"È l'",l("b",null,"errore compiuto durante l'interpolazione"),"."),l("p",null,"Se la funzione ",l(a.i,null,"f")," è interpolata da ",l(a.i,null,"p_n"),", allora esso varrà:"),l(a.q,null,F(A||(A=R`R_n(x) = f(x) - p_n(x)`))),l("p",null,"In particolare, è interessante la sua norma a infinito, ",l(a.i,null,F(S||(S=R`\| f - p_n \|_\infty`))),", che corrisponde alla distanza massima tra le due funzioni."),l("p",null,"Un teorema dice che esso è uguale a:"),l(a.q,null,F(y||(y=R`R_n(x) = \frac{ \omega_n(x) }{ (n + 1)! } \cdot f^{(n+1)}(\xi)`)))),l(a.r,{title:"Stima"},l("p",null,"L'errore nell'interpolazione dipende principalmente da due fattori:"),l("ul",null,l("li",null,"Come sono ",l("b",null,"distribuiti sull'asse X")," i punti da interpolare"),l("li",null,"Il grado del polinomio di interpolazione")))),l(a.s,null,l(a.r,{title:"Fenomeno di Runge"},l("p",null,"Fenomeno che si verifica cercando di interpolare la ",l("i",null,"funzione di Runge")," (",l(a.i,null,F(C||(C=R`\frac{1}{1 + 25x^2}`))),")."),l("p",null,"Scegliendo ",l("b",null,"nodi equispaziati"),", l'errore di interpolazione sarà ",l("b",null,"enorme")," vicino ai due estremi dell'intervallo."),l(o.a,null,"Addirittura, più nodi verranno scelti, più esso sarà alto!"),l("p",null,"Si evita scegliendo i nodi in una maniera diversa.")),l(a.r,{title:"Nodi di Chebychev"},l("p",null,"Nodi ottenuti partizionando una ",l("b",null,"semicirconferenza"),", e proiettando le partizioni sul diametro."),l("p",null,"La formula usata per ottenere ",l(a.i,null,F(w||(w=R`n`)))," punti è:"),l(a.q,null,F(I||(I=R`x_i = \cos \left( \frac{ (2 \cdot i + 1) \cdot \pi }{ 2 \cdot (n+1) } \right)`))),l("p",null,l("u",null,"Proprietà di min-max"),": sono la ",l("b",null,"scelta ottimale")," dei punti di interpolazione."),l(a.q,null,F(O||(O=R`\omega_n(\star) = \max_{x \in [a, b]} \left| \omega_n(x) \right|`))),l("p",null,"In particolare, si ha che:"),l(a.q,null,F(G||(G=R`\omega_n(\star) = 2 \left( \frac{b-a}{4} \right)^{n+1}`))))))}}).call(this,n("hosL").h)},"5aVd":function(l){l.exports={menulist:"menulist__2Cmnq"}},FEtp:function(l,i,n){"use strict";(function(l){var e=n("hosL"),a=n("mbOI"),o=n("ke5e");let t,r,u,s,c,d,p,m,_,b,f,g,z,h,x,v,q,k,L,A,S,y,C,w,I,O,G,R,F,P,M,E,U,Q,N,T,D,Y,H,j,V,J,X,B,Z,K,W,$,ll,il,nl,el,al,ol,tl,rl,ul,sl,cl=l=>l;const dl=String.raw;i.a=function(){return l(e.Fragment,null,l(a.s,{title:"Problema: Ricerca degli zeri di funzione"},l(a.r,{title:"Descrizione"},l("p",null,"Si vogliono trovare i punti (",l("i",null,"zeri"),") in cui una funzione ",l("b",null,"continua")," ",l(a.i,null,"f : [a, b] \\to R")," vale ",l(a.i,null,"0"),"."),l("p",null,"Per il ",l("b",null,"teorema del valore medio"),", se ",l(a.i,null,dl(t||(t=cl`f(a) \cdot f(b) \leq 0`))),", allora esiste sicuramente un punto in cui la funzione vale 0."),l("p",null,"Denominiamo il punto in cui la f
\forall \ i \in \{0,\ \dots\ ,\ m - 1\},\
\begin{cases}
s_i (x_{i+1}) = s_{i+1} (x_{i+1})\\\\
s'_i (x_{i+1}) = s'_{i+1} (x_{i+1})\\\\
s''_i (x_{i+1}) = s''_{i+1} (x_{i+1})
\end{cases}
`))),l(a.q,null,E(z||(z=M`
\forall \ i \in \{0,\ \dots\ ,\ m + 1\},\
\begin{cases}
s_i(x_i) = y_i
\end{cases}
`))),l("p",null,"Esse hanno la seguente equazione:"),l(a.q,null,E(h||(h=M`s_i(x) = \alpha_i + \beta_i \ ( x - x_i ) + \gamma_i \ ( x - x_i )^2 + \delta_i \ ( x - x_i )^3`))),l(o.a,null,"Spesso si indica con ",l(a.i,null,E(x||(x=M`h`)))," la distanza orizzontale tra due punti di un sottointervallo."))),l(a.s,null,l(a.r,{title:"Spline cubica vincolata"},l("p",null,"Classe di spline cubiche in cui:"),l("ul",null,l("li",null,l(a.i,null,E(v||(v=M`\beta_0`)))," e ",l(a.i,null,E(q||(q=M`\beta_{m+1}`)))," sono prefissati")),l("p",null,"È ",l("b",null,"unica"),"."),l("p",null,"Forma il seguente sistema di equazioni:"),l(a.q,null,E(k||(k=M`T z = c`))),l(a.q,null,E(L||(L=M`
b_i = h_{i+1} \beta_i + 2 ( h_i + h_{i+1} ) + h_{i} \beta_i+2
`))),l(a.q,null,E(A||(A=M`
T =
\begin{pmatrix}
2 (h_0 + 2 h_1) & h_0 & {\color{Gray} 0} & {\color{Gray} 0} & {\color{Gray} 0} \\\\
h_2 & 2 (h_1 + h_2) & h_1 & {\color{Gray} 0} & {\color{Gray} 0} \\\\
{\color{Gray} 0} & \ddots & \ddots & \ddots & {\color{Gray} 0} \\\\
{\color{Gray} 0} & {\color{Gray} 0} & h_{m-1} & 2 (h_{m-2} + h_{m-1}) & h_{m-2} \\\\
{\color{Gray} 0} & {\color{Gray} 0} & {\color{Gray} 0} & h_m & 2 (h_{m-1} + h_m)
\end{pmatrix}
`))),l(a.q,null,E(S||(S=M`
z =
\begin{pmatrix}
\beta_1\\\\
\beta_2\\\\
\vdots\\\\
\beta_{m-1}\\\\
\beta_{m}
\end{pmatrix}
`))),l(a.q,null,E(y||(y=M`
c =
\begin{pmatrix}
b_0 - h_1 \beta_0\\\\
b_1\\\\
\vdots\\\\
b_{m-2}\\\\
b_{m-1} - h_{m-1} \beta_{m+1}
\end{pmatrix}
`))))),l(a.s,null,l(a.r,{title:"Spline cubica naturale"},l("p",null,"Classe di spline cubiche in cui:"),l("ul",null,l("li",null,l(a.i,null,E(C||(C=M`s''(x_0) = s''(x_{m+1}) = 0`))))),l("p",null,"È ",l("b",null,"unica"),".")),l(a.r,{title:"Spline cubica periodica"},l("p",null,"Classe di spline cubiche in cui:"),l("ul",null,l("li",null,l(a.i,null,E(w||(w=M`s(x) = s(m+1)`)))),l("li",null,l(a.i,null,E(I||(I=M`s'(x) = s'(m+1)`)))),l("li",null,l(a.i,null,E(O||(O=M`s''(x) = s''(m+1)`))))),l("p",null,"È ",l("b",null,"unica"),".")),l(a.r,{title:"Spline cubica not-a-knot"},l("p",null,"Classe di spline cubiche in cui:"),l("ul",null,l("li",null,"Negli intervalli ",l(a.i,null,E(G||(G=M`[x_0, x_2]`)))," e ",l(a.i,null,E(R||(R=M`[x_{m-1}, x_{m+1}]`)))," si presenta ",l("b",null,"obbligatoriamente")," un polinomio di ",l("b",null,"grado 3"),".")),l("p",null,"È ",l("b",null,"unica"),"."))),l(a.s,null,l(a.r,{title:"Proprietà di minima curvatura"},l("p",null,'Tra tutte le funzioni che interpolano dei punti, le tre classi di funzioni sopraelencate sono quelle che interpolano la funzione più "dolcemente".'),l("p",null,"Per loro è valida la seguente proprietà:"),l(a.q,null,E(F||(F=M`\int_a^b ( s''(x) )^2 dx \leq \int_a^b ( f''(x) )^2 dx`)))),l(a.r,{title:"Errore di interpolazione"},l("p",null,"Più diminuisce la lunghezza ",l(a.i,null,E(P||(P=M`h`)))," degli intervalli, più aumenta l'accuratezza."),l("p",null,l("b",null,"Non")," si verifica il fenomeno di Runge."),l("p",null,"Si ha un'interpolazione anche della ",l("b",null,"derivata prima"),"."))))}}).call(this,n("hosL").h)},T2GU:function(l,i,n){"use strict";(function(l){var e=n("5aVd"),a=n.n(e);i.a=function(i){return l("ul",{class:a.a.menulist},i.children)}}).call(this,n("hosL").h)},ke5e:function(l,i,n){"use strict";(function(l){var e=n("2w3n"),a=n.n(e);i.a=function(i){return l("div",{class:a.a.example},i.children)}}).call(this,n("hosL").h)},lijF:function(l,i,n){"use strict";(function(l){var e=n("mbOI"),a=n("YNhk"),o=n("ke5e"),t=n("hosL");let r,u,s,c,d,p,m,_,b,f,g,z,h,x,v,q,k,L,A,S,y,C,w,I,O,G,R,F,P,M,E,U,Q,N,T,D,Y,H,j,V,J,X,B,Z,K,W,$,ll,il,nl,el,al,ol,tl,rl,ul,sl,cl,dl,pl,ml,_l,bl,fl,gl,zl,hl,xl,vl,ql,kl,Ll,Al,Sl,yl,Cl,wl,Il,Ol,Gl,Rl,Fl,Pl,Ml,El=l=>l;const Ul=String.raw;i.a=function(){return l(t.Fragment,null,l(e.s,{title:"Problema: Risoluzione di sistemi lineari"},l(e.r,{title:"Descrizione"},l("p",null,"Dato un sistema di equazioni lineari, si vuole trovare la sua soluzione."),l("p",null,"In forma matriciale, avrà una ",l("b",null,"matrice dei coefficienti")," ",l(e.i,null,Ul(r||(r=El`A`))),", un ",l("b",null,"vettore dei termini noti")," ",l(e.i,null,Ul(u||(u=El`b`)))," e un ",l("b",null,"vettore delle incognite"),l(e.i,null,Ul(s||(s=El`x`))),"."),l("p",null,"L'equazione matriciale del sistema è:"),l(e.q,null,Ul(c||(c=El`A \cdot x = b`)))),l(e.r,{title:"Condizionamento"},l("p",null,"Il condizionamento della risoluzione di sistemi lineari è:"),l(e.q,null,Ul(d||(d=El`\frac{{\color{yellow} \|A\| \cdot \|A^{-1}\|} \cdot \| \Delta b \|}{\| b \|}`))),l("p",null,"In particolare, è segnato in giallo nella formula il ",l("b",null,"numero di condizionamento"),":"),l(e.q,null,Ul(p||(p=El`k(A) = \| A \| \cdot \| A^{-1} \|`))))),l(e.s,null,l(e.r,{title:"Metodi diretti"},l("p",null,"Metodi che trovano la soluzione esatta",l("abbr",{title:"Per quanto possibile nell'algebra di macchina."},"*")," di un sistema lineare."),l("p",null,"Tipicamente prevedono la ",l("b",null,"fattorizzazione")," della matrice dei coefficienti in due sottomatrici più facili da risolvere."),l("p",null,"Generalmente hanno una complessità temporale ",l(e.i,null,Ul(m||(m=El`O(n^3)`))),".")),l(e.r,{title:"Metodi iterativi"},l("p",null,"Metodi che trovano una soluzione imperfetta",l("abbr",{title:"Che però può essere la migliore ottenibile, considerando la precisione di macchina."},"*")," di un sistema lineare."),l("p",null,"Tipicamente prevedono l'applicazione ripetuta di un ",l("b",null,"metodo"),", in base al quale cambia la ",l("b",null,"velocità di convergenza")," alla soluzione."),l("p",nu
\begin{cases}
L_{ii} = 1 \qquad \qquad (diagonale)\\
L_{ik} = -\frac{A_{ik}}{A_{kk}} \qquad (tri.\ infer.)
\end{cases}
`))),l(o.a,null,"Sono i moltiplicatori usati per rendere annullare il triangolo inferiore!"),l("p",null,"La matrice ",l(e.i,null,Ul(A||(A=El`U`)))," è così composta:"),l(e.q,null,Ul(S||(S=El`
\begin{cases}
U_{ik} = A_{ik} \quad se\ i \leq k \quad (tri.\ super.)\\
U_{ik} = 0 \qquad se\ i > k \quad (tri.\ infer.)
\end{cases}
`))),l(o.a,null,"È la parte triangolare superiore di ",l(e.i,null,Ul(y||(y=El`A`))),"!"),l("p",null,"Il sistema può essere poi risolto applicando due volte il metodo di sostituzione (all'avanti e all'indietro):"),l(e.q,null,Ul(C||(C=El`
\begin{cases}
L \cdot y = b\\
U \cdot x = y
\end{cases}
`))),l("p",null,"Questo metodo ha costo computazionale:"),l(e.q,null,Ul(w||(w=El`{\color{Yellow} O\left(\frac{n^3}{3}\right)} + 2 \cdot O\left(\frac{n^2}{2}\right)`)))),l(e.r,{title:l("span",null,"Fattorizzazione ",l(e.i,null,Ul(I||(I=El`LU`)))," con pivoting parziale")},l("p",null,"È possibile applicare la fattorizzazione ",l(e.i,null,Ul(O||(O=El`LU`)))," a ",l("b",null,"qualsiasi matrice non-singolare")," permettendo lo scambio (",l("i",null,"pivoting"),") delle righe, potenzialmente ",l("b",null,"aumentando la stabilità")," dell'algoritmo."),l(o.a,null,"Abbiamo fatto questo metodo in Algebra Lineare, chiamandolo ",l("b",null,"metodo di Gauss-Jordan"),"!"),l("p",null,"Alla formula precedente si aggiunge una ",l("b",null,"matrice di permutazione")," che indica quali righe sono state scambiate:"),l(e.q,null,Ul(G||(G=El`P \cdot A = L \cdot U`))),l("p",null,"Per massimizzare la stabilità, si cerca di ",l("b",null,"usare come perno l'elemento più grande")," della colonna."),l("p",null,"Questo metodo ha costo computazionale:"),l(e.q,null,Ul(R||(R=El`{\color{Yellow} O\left(\frac{n^2}{2}\right)} + O\left(\frac{n^3}{3}\right) + 2 \cdot O\left(\frac{n^2}{2}\right)`)))),l(e.r,{title:l("span",null,"Fattorizzazione ",l(e.i,null,Ul(F||(F=El`LU`)))," con pivoting totale")},l("p",null,"È possibile anche permettere il ",l("i",null,"pivoting")," ",l("b",null,"sulle colonne")," per ",l("b",null,"aumentare ulteriormente la stabilità")," dell'algoritmo, a costo di maggiore costo computazionale:"),l(e.q,null,Ul(P||(P=El`P \cdot A \cdot Q = L \cdot U`))),l("p",null,"Per massimizzare la stabilità, si cerca di ",l("b",null,"ordinare in modo decrescente la diagonale"),", assicurandoci che il primo perno sia più grande del secondo e così via."),l("p",null,"Questo metodo ha costo computazionale:"),l(e.q,null,Ul(M||(M=El`{\color{Yellow} O\left(\frac{n^3}{3}\right)} + O\left(\frac{n^3}{3}\right) + 2 \cdot O\left(\frac{n^2}{2}\right)`))))),l(e.s,null,l(e.r,{title:l("span",null,"Fattorizzazione ",l(e.i,null,Ul(E||(E=El`LU`)))," a banda")},l("p",null,"Se la matrice ",l(e.i,null,Ul(U||(U=El`A`)))," è ",l("b",null,"a banda"),", è possibile risparmiare spazio durante la fattorizzazione, in quanto sia ",l(e.i,null,Ul(Q||(Q=El`L`)))," sia ",l(e.i,null,Ul(N||(N=El`U`)))," saranno a banda!")),l(e.r,{title:l("span",null,"Fattorizzazione ",l(e.i,null,Ul(T||(T=El`LU`)))," sparsa")},l("p",null,"Se la matrice ",l(e.i,null,Ul(D||(D=El`A`)))," è ",l("b",null,"sparsa"),", non è detto che ",l(e.i,null,Ul(Y||(Y=El`L`)))," e ",l(e.i,null,Ul(H||(H=El`U`)))," siano sparse a loro volta."),l("p",null,"Per evitare il ",l("u",null,"fill-in"),", è necessario ",l("b",null,"riordinare")," la matrice ",l(e.i,null,Ul(j||(j=El`A`)))," in modo che sia il più possibile simile a una matrice a banda."))),l(e.s,null,l(e.r,{title:l("span",null,"Fattorizzazione ",l(e.i,null,Ul(V||(V=El`LDL^{-1}`))))},l("p",null,"È possibile ",l("b",null,"ridurre la complessità computazionale")," della fattorizzazione ",l(e.i,null,Ul(J||(J=El`LU`)))," se la matrice dei coefficienti è ",l("b",null,"simmetrica"),":"),l(e.q,null,Ul(X||(X=El`A = L \cdot D \cdot L^{-1}`))),l("p",null,"In questo caso, si calcola solo la matrice L, utilizzando il ",l("b",null,"metodo di pavimentazione"),"."),l(e.q,null,Ul(B||(B=El`
\begin{cases}
d_{ii} = A_{ii} - \sum_{k=1}^{i-1} ( d_{kk} \cdot (l_{jk})^2 )\\
\\
l_{ij} = \frac{A_{ij} - \sum_{k=1}^{j-1} l_{ik} \cdot d_{kk} \cdot l_{jk}}{d_{ii}}
\end{cases}
`))),l(o.a,null,l("p",null,"La prima colonna della matrice sarà:"),l(e.q,null,Ul(Z||(Z=El`
\begin{cases}
d_{11} = A_{11}\\
\\
l_{i1} = \frac{A_{i1}}{d_{11}}
\end{cases}
`))),l("p",null,"La seconda colonna della matrice sarà:"),l(e.q,null,Ul(K||(K=El`
\begin{cases}
d_{22} = A_{22} - d_{11} \cdot (l_{21})^2\\
\\
l_{i2} = \frac{A_{i2} - l_{i1} \cdot d_{11} \cdot l_{21}}{d_{ii}}
\end{cases}
`)))),l("p",null,"Questo metodo ha costo computazionale:"),l(e.q,null,Ul(W||(W=El`{\color{Yellow} O\left(\frac{n^3}{6}\right)} + O\left(\frac{n^3}{3}\right) + 2 \cdot O\left(\frac{n^2}{2}\right)`)))),l(e.r,{title:l("span",null,"Fattorizzazione ",l(e.i,null,Ul($||($=El`\mathcal{L} \mathcal{L}^{-1}`))))},l("p",null,"È possibile dare ",l("b",null,"stabilità forte")," alla fattorizzazione ",l(e.i,null,Ul(ll||(ll=El`LDL^{-1}`)))," se la matrice dei coefficienti è ",l("b",null,"simmetrica definita positiva"),":"),l(e.q,null,Ul(il||(il=El`A = \mathcal{L} \cdot \mathcal{L}^{-1}`))),l("p",null,"Il ",l("b",null,"metodo di pavimentazione")," diventa:"),l(e.q,null,Ul(nl||(nl=El`
\begin{cases}
l_{ii} = \sqrt{A_{ii} - \sum_{k=1}^{i-1} (l_{ik})^2 }\\
\\
l_{ij} = \frac{A_{ij} - \sum_{k=1}^{j-1} l_{ik} \cdot l_{jk}}{l_{ii}}
\end{cases}
`))),l("p",null,"Questo metodo ha costo computazionale:"),l(e.q,null,Ul(el||(el=El`O\left(\frac{n^3}{3}\right) + O\left(\frac{n^3}{3}\right) + 2 \cdot O\left(\frac{n^2}{2}\right)`))))),l(e.s,null,l(e.r,{title:"Trasformazione di Householder"},l("p",null,"Matrice ricavata dalla seguente formula, dove ",l(e.i,null,Ul(al||(al=El`v`)))," è la colonna di un'altra matrice:"),l(e.q,null,Ul(ol||(ol=El`U(v) = \mathbf{I} - \frac{2 \cdot v \cdot v^T}{\| v \|_{(2)}^2}`))),l("p",null,"Se moltiplicata per per la matrice da cui proviene ",l(e.i,null,Ul(tl||(tl=El`v`))),", sostituirà la colonna ",l(e.i,null,Ul(rl||(rl=El`v`)))," con la colonna:"),l(e.q,null,Ul(ul||(ul=El`
\begin{pmatrix}
- \| v \|\\\\
0\\\\
0\\\\
\vdots\\\\
0
\end{pmatrix}
`))),l("p",null,"Si calcola con una complessità computazionale nell'ordine di ",l(e.i,null,Ul(sl||(sl=El`O(n)`))),".")),l(e.r,{title:l("span",null,"Fattorizzazione ",l(e.i,null,Ul(cl||(cl=El`QR`))))},l("p",null,"Metodo che fornisce una ",l("b",null,"maggiore stabilità")," a costo di una ",l("b",null,"maggiore complessità computazionale"),"."),l("p",null,"La matrice ",l(e.i,null,Ul(dl||(dl=El`A`)))," viene ",l("i",null,"fattorizzata")," in due matrici, una ",l("b",null,"ortogonale")," ",l(e.i,null,Ul(pl||(pl=El`Q`)))," e una ",l("b",null,"triangolare superiore"),l(e.i,null,Ul(ml||(ml=El`R`))),":"),l(e.q,null,Ul(_l||(_l=El`A = Q \cdot R`))),l("p",null,"Le matrici si ottengono dal ",l("b",null,"prodotto delle trasformazioni di Householder")," (che concatenate formano ",l(e.i,null,Ul(bl||(bl=El`Q`))),") sulla matrice ",l(e.i,null,Ul(fl||(fl=El`A`)))," necessarie a trasformarla in una matrice triangolare superiore (",l(e.i,null,Ul(gl||(gl=El`R`))),")."),l(o.a,null,"C'è un bell'esempietto ",l(a.a,{href:"https://web.archive.org/web/20200828003151/https://rpubs.com/aaronsc32/qr-decomposition-householder"},"qui"),"."),l("p",null,"Una volta fattorizzata, il sistema si può risolvere con:"),l(e.q,null,Ul(zl||(zl=El`
\begin{cases}
y = Q^T \cdot b\\
R \cdot x = y
\end{cases}
`))),l("p",null,"Questo metodo ha costo computazionale:"),l(e.q,null,Ul(hl||(hl=El`{\color{Yellow} O\left(\frac{2 \cdot n^3}{3}\right)} + 2 \cdot O\left(\frac{n^2}{2}\right)`))))),l(e.s,{title:"Metodi iterativi"},l(e.r,{title:"Forma generale"},l("p",null,"Se si pone che:"),l(e.q,null,Ul(xl||(xl=El`
\begin{cases}
G = I - M^{-1} \cdot A\\
c = M^{-1} \cdot b
\end{cases}
`))),l("p",null,"Allora la formula generale di un sistema lineare può anche essere scritta in questo modo:"),l(e.q,null,Ul(vl||(vl=El`x = G \cdot x + c`))),l("p",null,"È particolarmente utile perchè ci permette di definire un ",l("b",null,"algoritmo ricorsivo")," che trovi ",l(e.i,null,Ul(ql||(ql=El`x`))),":"),l(e.q,null,Ul(kl||(kl=El`x_{(i+1)} = G \cdot x_{(i)} + c`))),l("p",null,l(e.i,null,Ul(Ll||(Ll=El`G`)))," è il ",l("b",null,"metodo"),", e in base ad esso cambiano stabilità e velocità di convergenza."),l("p",null,"Ponendo ",l(e.i,null,Ul(Al||(Al=El`A = M - N`))),", la formula può essere scritta anche in questo modo:"),l(e.q,null,Ul(Sl||(Sl=El`M \cdot x_{(i+1)} = N \cdot x_{(i)} + b`))),l("p",null,"Possiamo ottenere alcuni metodi separando ",l(e.i,null,"A")," in tre matrici:"),l("ul",null,l("li",null,"La parte diagonale ",l(e.i,null,Ul(yl||(yl=El`D`)))),l("li",null,"L'opposto del triangolo inferiore ",l(e.i,null,Ul(Cl||(Cl=El`E`)))),l("li",null,"L'opposto del triangolo superiore ",l(e.i,null,Ul(wl||(wl=El`F`))))),l(e.q,null,Ul(Il||(Il=El`A = D - E - F`)))),l(e.r,{title:"Convergenza di un metodo"},l("p",null,"Un metodo è convergente se e solo se:"),l(e.q,null,Ul(Ol||(Ol=El`\rho (M) < 1`))),l("p",null,"(dove ",l(e.i,null,Ul(Gl||(Gl=El`\rho`)))," è il ",l("b",null,"raggio spettrale"),", il massimo autovalore della matrice)"),l("p",null,"Perchè un metodo sia convergente, è sufficiente che:"),l(e.q,null,Ul(Rl||(Rl=El`\| M \| < 1`))))),l(e.s,null,l(e.r,{title:"Metodo di Jacobi"},l("p",null,"Il metodo di Jacobi si ottiene ponendo:"),l(e.q,null,Ul(Fl||(Fl=El`
\begin{cases}
M = D\\
N = E + F
\end{cases}
`))),l("p",null,l("u",null,"Spostamenti simultanei"),": Permette di ottenere ogni componente di ",l(e.i,null,Ul(Pl||(Pl=El`x`)))," indipendentemente dagli altri: è ",l("b",null,"parallelizzabile"),"."),l("p",null,"Se la matrice è ",l("b",null,"diagonale dominante"),", allora il metodo di Jacobi ",l("b",null,"converge")," sicuramente.")),l(e.r,{title:"Metodo di Gauss-Seidel"},l("p",null,"Il metodo di Gauss-Seidel si ottiene ponendo:"),l(e.q,null,Ul(Ml||(Ml=El`
\begin{cases}
M = D - E\\
N = F
\end{cases}
`))),l("p",null,"Ha una velocità di convergenza ",l("b",null,"maggiore o uguale")," rispetto al metodo di Jacobi."),l("p",null,l("u",null,"Spostamenti successivi"),": Non è parallelizzabile, perchè ogni componente ",l("b",null,"dipende da quelle calcolate in precedenza"),"."),l("p",null,"Se la matrice è ",l("b",null,"diagonale dominante"),", allora il metodo di Gauss-Seidel ",l("b",null,"converge")," sicuramente."))))}}).call(this,n("hosL").h)},qXt2:function(l,i,n){"use strict";n.r(i),function(l){var e=n("sl5E"),a=n("lijF"),o=n("FEtp"),t=n("31Ft"),r=n("LHkx"),u=n("uqDQ");i.default=function(){return l("div",null,l("h1",null,"Calcolo Numerico"),l(e.a,null),l(a.a,null),l(o.a,null),l(t.a,null),l(r.a,null),l(u.a,null))}}.call(this,n("hosL").h)},sl5E:function(l,i,n){"use strict";(function(l){var e=n("mbOI"),a=n("YNhk"),o=n("T2GU"),t=n("ke5e"),r=n("hosL");let u,s,c,d,p,m,_,b,f,g,z,h,x,v,q,k,L,A,S,y,C,w=l=>l;const I=String.raw;i.a=function(){return l(r.Fragment,null,l(e.s,{title:"Esame"},l(e.r,{title:"Contatti"},l("ul",null,l("li",null,l(a.a,{href:"mailto:silvia.bonettini@unimore.it"},"Prof.ssa Silvia Bonettini")))),l(e.r,{title:"Orale"},l("p",null,"E' composto da:"),l("ul",null,l("li",null,"2 domande sugli argomenti teorici"),l("li",null,"1 domanda di implementazione algoritmo in MATLAB")))),l(e.s,{title:"Extra"},l(e.r,{title:"Ripasso di Algebra Lineare"},l("p",null,"Prima di iniziare a studiare Calcolo Numerico, potrebbe essere una buona idea ripassare un pochino Algebra Lineare:"),l(o.a,null,l("li",null,l("a",{href:"/calcolonumerico/ripassodialgebralineare"},"Ripasso di Algebra Lineare")," ",l("small",null,"(per studenti sperduti di Calcolo Numerico)")))),l(e.r,{title:"Anki"},l("p",null,"Ho provato a fare un deck ",l(a.a,{href:"https://apps.ankiweb.net/"},"Anki")," con tutte le formule di Calcolo numerico."),l("p",null,"Sappiatemi dire com'è! ",l("small",null,"Io non l'ho usato moltissimo perchè ho studiato scrivendo questa pagina di Appuntiweb...")),l(o.a,null,l("li",null,l(a.a,{href:"https://ryg.s3.fr-par.scw.cloud/builds/anki-decks/formule-di-calcolo-numerico.apkg"},"Scarica il deck Anki"))))),l(e.s,{title:"Algoritmi"},l(e.r,{title:"Algoritmi numerici"},l("p",null,"Particolari algoritmi che hanno:"),l("ul",null,l("li",null,"numeri reali in input e output"),l("li",null,"successioni delle quattro operazioni aritmetiche fondamentali come passi")))),l(e.s,{title:"Errore di rappresentazione"},l(e.r,{title:"Cos'è?"},l("p",null,"Con i numeri floating point può capitare che un certo numero ",l(e.i,null,I(u||(u=w`\alpha`)))," non sia rappresentato correttamente."),l("p",null,"In tal caso, il numero si indica con ",l(e.i,null,I(s||(s=w`\alpha^\star`))),"."))),l(e.s,null,l(e.r,{title:"Errore assoluto"},l("p",null,"È la differenza tra il numero desiderato e il numero rappresentato:"),l(e.q,null,I(c||(c=w`E_a = \left | \alpha - \alpha^\star \right |`)))),l(e.r,{title:"Errore relativo"},l("p",null,"Indica quanto il numero rappresentato differisce dal numero desiderato:"),l(e.q,null,I(d||(d=w`\forall \alpha \neq 0, E_r = \frac{E_a}{\left | \alpha \right |}`))))),l(e.s,null,l(e.r,{title:"Troncamento"},l("p",null,"Metodo con cui gestire gli ",l("b",null,"underflow floating point"),": le cifre meno significative vengono ",l("b",null,"rimosse"),"."),l(t.a,null,l("pre",null,"1.00 → 1.0",l("br",null),"1.01 → 1.0",l("br",null),"1.10 → 1.1",l("br",null),"1.11 → 1.1"))),l(e.r,{title:"Arrotondamento"},l("p",null,"Metodo con cui gestire gli ",l("b",null,"underflow floating point"),": se la cifra più significativa di quelle che devono essere rimosse è 1, allora ",l("b",null,"aumenta di 1")," anche quella meno signficativa che viene tenuta."),l(t.a,null,l("pre",null,"1.00 → 1.0",l("br",null),"1.01 → 1.0",l("br",null),"1.10 → 1.1",l("br",null),"1.11 → 10.")))),l(e.s,null,l(e.r,{title:"Precisione di macchina"},l("p",null,"Un numero reale rappresentato in ",l("b",null,"virgola mobile")," ha un ",l("b",null,"errore relativo")," minore o uguale alla ",l("i",null,"precisione di macchina"),":"),
\min {\color{Red} Q } = \sum_{i = 1}^m ( {\color{Yellow} a_0 + a_1 \cdot x_i} - {\color{Orange} f(x_i)} )^2
`)))),l(a.r,{title:"Regressione lineare matriciale"},l("p",null,"Possiamo costruire una ",l("b",null,"matrice di regressione")," ",l(a.i,null,sl(g||(g=ul`A`)))," contenente tutti i ",l("b",null,"punti sperimentali"),":"),l(a.q,null,sl(z||(z=ul`
A =
\begin{pmatrix}
1 & x_1\\\\
1 & x_2\\\\
\vdots & \vdots\\\\
1 & x_m
\end{pmatrix}
`))),l("p",null,"Inoltre, se costruiamo il ",l("b",null,"vettore dei parametri")," ",l(a.i,null,sl(h||(h=ul`\alpha`))),":"),l(a.q,null,sl(x||(x=ul`
\alpha =
\begin{pmatrix}
a_0\\\\
a_1
\end{pmatrix}
`))),l("p",null,"Avremo che:"),l(a.q,null,sl(v||(v=ul`{\color{Yellow} q(x) } = A \cdot \alpha`))),l("p",null,"Inoltre, potremo calcolare l'errore attraverso la norma:"),l(a.q,null,sl(q||(q=ul`{\color{Red} Q } = \| A \cdot \alpha - y \|^2`))))),l(a.s,null,l(a.r,{title:"Regressione polinomiale"},l("p",null,"Trova il ",l("b",null,"polinomio")," ",l(a.i,null,sl(k||(k=ul`{\color{Yellow} q}`)))," di grado ",l(a.i,null,sl(L||(L=ul`n-1`)))," che meglio approssima tutti gli ",l(a.i,null,sl(A||(A=ul`m`)))," dati sperimentali."),l("p",null,"Essendo un polinomio di grado ",l(a.i,null,sl(S||(S=ul`n-1`))),", avrà ",l(a.i,null,sl(y||(y=ul`n`)))," parametri."),l(a.q,null,sl(C||(C=ul`{\color{Yellow} q(x) } = a_0 + a_1 \cdot {\color{Green} x} + a_2 \cdot {\color{Green} x^2} +\ \dots \ + a_{n-1} \cdot {\color{Green} x^{n-1}`))),l(o.a,null,l("p",null,"La regressione lineare è un caso particolare di regressione generale in cui i parametri sono 2!")),l("p",null,"L'errore da minimizzare per ricavare i parametri sarà:"),l(a.q,null,sl(w||(w=ul`
\min {\color{Red} Q} = \sum_{i = 1}^m ( {\color{Yellow} a_0 + a_1 \cdot x_i + a_2 \cdot x_i^2 +\ \dots \ + a_{n-1} \cdot x_i^{n-1}} - {\color{Orange} y_i} )^2
`)))),l(a.r,{title:"Regressione polinomiale matriciale"},l("p",null,"Possiamo costruire una ",l("b",null,"matrice di regressione")," ",l(a.i,null,sl(I||(I=ul`A`)))," contenente tutti i ",l("b",null,"punti sperimentali")," a tutti i gradi del polinomio:"),l(a.q,null,sl(O||(O=ul`
A =
\begin{pmatrix}
1 & x_1 & x_1^2 & \dots & x_1^{n-1} \\\\
1 & x_2 & x_2^2 & \dots & x_2^{n-1} \\\\
\vdots & \vdots & \vdots & \ddots & \vdots \\\\
1 & x_m & x_m^2 & \dots & x_m^{n-1}
\end{pmatrix}
`))),l("p",null,"Inoltre, se costruiamo il ",l("b",null,"vettore dei parametri")," ",l(a.i,null,sl(G||(G=ul`\alpha`))),":"),l(a.q,null,sl(R||(R=ul`
\alpha =
\begin{pmatrix}
a_0\\\\
a_1\\\\
\vdots\\\\
a_{n-1}
\end{pmatrix}
`))),l("p",null,"Avremo che:"),l(a.q,null,sl(F||(F=ul`{\color{Yellow} q(x) } = A \cdot \alpha`))),l("p",null,"Inoltre, potremo calcolare l'errore attraverso la norma:"),l(a.q,null,sl(P||(P=ul`{\color{Red} Q } = \| A \cdot \alpha - y \|^2`))),l(o.a,null,"Normalmente, i dati sono molti di più, ma se il numero di parametri ",l(a.i,null,sl(M||(M=ul`n`)))," fosse uguale al numero di dati ",l(a.i,null,sl(E||(E=ul`m`))),", allora si otterrebbe il ",l("b",null,"polinomio di interpolazione"),"!"))),l(a.s,null,l(a.r,{title:"Regressione generale"},l("p",null,"Trova i ",l("b",null,"coefficienti della combinazione lineare"),l(a.i,null,sl(U||(U=ul`{\color{Yellow} q}`)))," che meglio approssima tutti gli ",l(a.i,null,sl(Q||(Q=ul`m`)))," dati sperimentali."),l(a.q,null,sl(N||(N=ul`{\color{Yellow} q(x) } = a_0 \cdot {\color{Green} \phi_0 (x)} + a_1 \cdot {\color{Green} \phi_1 (x)} + \dots + a_2 \cdot {\color{Green} \phi_2 (x)} +\ \dots\ + a_{n-1} \cdot {\color{Green} \phi_{n-1} (x)}`))),l(o.a,null,l("p",null,"La regressione polinomiale è un caso particolare di regressione generale in cui:"),l(a.q,null,sl(T||(T=ul`{\color{Green} \phi_{n} (x)} = x^n`)))),l("p",null,"L'errore da minimizzare per ricavare i parametri sarà:"),l(a.q,null,sl(D||(D=ul`
\min {\color{Red} Q } = \sum_{i = 1}^m ( {\color{Yellow} a_0 \cdot \phi_0 (x) + a_1 \cdot \phi_1 (x) + \dots + a_2 \cdot \phi_2 (x) +\ \dots\ + a_{n-1} \cdot \phi_{n-1} (x)} - {\color{Orange} f(x_i)} )^2
`)))),l(a.r,{title:"Regressione polinomiale generale"},l("p",null,"Possiamo costruire una ",l("b",null,"matrice di regressione")," ",l(a.i,null,sl(Y||(Y=ul`A`)))," contenente tutti i ",l("b",null,"punti sperimentali")," a tutti i gradi del polinomio:"),l(a.q,null,sl(H||(H=ul`
A =
\begin{pmatrix}
\phi_0(x_1) & \phi_1(x_1) & \phi_2(x_1) & \dots & \phi_{n_1}(x_1) \\\\
\phi_0(x_2) & \phi_1(x_2) & \phi_2(x_2) & \dots & \phi_{n-1}(x_2) \\\\
\vdots & \vdots & \vdots & \ddots & \vdots \\\\
\phi_0(x_m) & \phi_1(x_m) & \phi_2(x_m) & \dots & \phi_{n-1}(x_m)
\end{pmatrix}
`))),l("p",null,"Inoltre, se costruiamo il ",l("b",null,"vettore dei parametri")," ",l(a.i,null,sl(j||(j=ul`\alpha`))),":"),l(a.q,null,sl(V||(V=ul`
\alpha =
\begin{pmatrix}
a_0\\\\
a_1\\\\
\vdots\\\\
a_{n-1}
\end{pmatrix}
`))),l("p",null,"Avremo che:"),l(a.q,null,sl(J||(J=ul`{\color{Yellow} q(x) } = A \cdot \alpha`))),l("p",null,"Inoltre, potremo calcolare l'errore attraverso la norma:"),l(a.q,null,sl(X||(X=ul`{\color{Red} Q } = \| A \cdot \alpha - y \|^2`))))),l(a.s,{title:"Trovare i parametri"},l(a.r,{title:"Caso non degenere"},l("p",null,"Caso che prevede che le colonne di ",l(a.i,null,sl(B||(B=ul`A`)))," siano ",l("b",null,"linearmente indipendenti"),"."),l("p",null,"La soluzione ",l("b",null,"esiste")," sempre, ed è ",l("b",null,"unica"),"."),l("p",null,"Per trovarla:"),l("ul",null,l("li",null,"Fattorizziamo ",l(a.i,null,sl(Z||(Z=ul`A = Q \cdot \begin{pmatrix} R\\ 0 \end{pmatrix}`))),"."),l("li",null,"Calcoliamo ",l(a.i,null,sl(K||(K=ul`w = Q^T \cdot y`))),"."),l("li",null,"Teniamo solo i primi ",l(a.i,null,"n")," valori di ",l(a.i,null,sl(W||(W=ul`w`)))," e mettiamoli in ",l(a.i,null,sl($||($=ul`w_1`))),"."),l("li",null,"Calcoliamo ",l(a.i,null,sl(ll||(ll=ul`R \cdot \alpha = w_1`))),"."))),l(a.r,{title:"Caso generale"},l("p",null,"Caso che non preclude alcuna composizione di ",l(a.i,null,sl(il||(il=ul`A`))),"."),l("p",null,"Ci sono ",l("b",null,"infinite")," soluzioni, con ",l(a.i,null,"n-k")," gradi di libertà."),l("p",null,"Si cerca sempre di trovare la ",l("i",null,"soluzione di norma minima"),", che, se ",l(a.i,null,sl(nl||(nl=ul`k \leq n \leq m`))),", allora è ",l("b",null,"unica"),"."),l("p",null,"Per trovarla:"),l("ul",null,l("li",null,"Fattorizziamo ",l(a.i,null,sl(el||(el=ul`A = U \cdot \Sigma \cdot V^T`)))," con la ",l("i",null,"fattorizzazione SVD")),l("li",null,"Calcoliamo ",l(a.i,null,sl(al||(al=ul`\zeta = U^T \cdot y`)))),l("li",null,l("p",null,"Calcoliamo:"),l(a.q,null,sl(ol||(ol=ul`
\gamma =
\begin{pmatrix}
\frac{z_1}{\sigma_1}\\\\
\frac{z_2}{\sigma_2}\\\\
\vdots\\\\
\frac{z_{k-1}}{\sigma_{k-1}}\\\\
\frac{z_k}{\sigma_k}\\\\
0\\\\
0\\\\
\vdots\\\\
0
\end{pmatrix}
`)))),l("li",null,"Calcoliamo ",l(a.i,null,sl(tl||(tl=ul`\alpha = V \cdot \gamma`))))),l(o.a,null,"Gli zeri nella ",l(a.i,null,sl(rl||(rl=ul`\gamma`)))," sono i gradi di libertà, sono zero in modo che essi diano la norma minima."))))}}).call(this,n("hosL").h)}}]);
//# sourceMappingURL=route-CalcoloNumerico.chunk.feb65.esm.js.map