1
Fork 0
mirror of https://github.com/Steffo99/unisteffo.git synced 2024-11-22 16:04:21 +00:00
This commit is contained in:
Steffo 2020-08-23 18:03:16 +02:00
parent 2f31057e4a
commit ea82a5995b
2 changed files with 105 additions and 11 deletions

View file

@ -256,14 +256,14 @@ export default function (props) {
<p>
È particolarmente utile perchè ci permette di definire un <b>algoritmo ricorsivo</b> che trovi <ILatex>{r`x`}</ILatex>:
</p>
<PLatex>{r`x^{(i+1)} = G \cdot x^{(i)} + c`}</PLatex>
<PLatex>{r`x_{(i+1)} = G \cdot x_{(i)} + c`}</PLatex>
<p>
<ILatex>{r`G`}</ILatex> è il <b>metodo</b>, e in base ad esso cambiano stabilità e velocità di convergenza.
</p>
<p>
Ponendo <ILatex>{r`A = M - N`}</ILatex>, la formula può essere scritta anche in questo modo:
</p>
<PLatex>{r`M \cdot x^{(i+1)} = N \cdot x^{(i)} + b`}</PLatex>
<PLatex>{r`M \cdot x_{(i+1)} = N \cdot x_{(i)} + b`}</PLatex>
<p>
Possiamo ottenere alcuni metodi separando <ILatex>A</ILatex> in tre matrici:
</p>

View file

@ -1,6 +1,7 @@
import style from "./02_ZeriDiFunzione.less";
import {Fragment} from "preact";
import {Section, Panel, ILatex, BLatex, PLatex, Todo} from "bluelib";
import Example from "../../components/Example";
const r = String.raw;
@ -17,14 +18,29 @@ export default function (props) {
Per il <b>teorema del valore medio</b>, se <ILatex>{r`f(a) \cdot f(b) \leq 0`}</ILatex>, allora esiste sicuramente un punto in cui la funzione vale 0.
</p>
<p>
Denominiamo il punto in cui la funzione vale <ILatex>0</ILatex> come <ILatex>{r`x^*`}</ILatex>.
Denominiamo il punto in cui la funzione vale <ILatex>0</ILatex> come <ILatex>{r`x_{(*)}`}</ILatex>.
</p>
</Panel>
<Panel title={"Condizionamento"}>
<p>
Più la <b>derivata prima</b> della funzione <b>si avvicina allo 0</b>, <b>peggio</b> il problema sarà condizionato.
</p>
<PLatex>{r`f'(x^*) \simeq 0 \implies mal\ condizionato`}</PLatex>
<PLatex>{r`f'(x_{(*)}) \simeq 0 \implies mal\ condizionato`}</PLatex>
</Panel>
</Section>
<Section>
<Panel title={"Ordine di convergenza"}>
<p>
Indice <ILatex>{r`{\color{Orange} p}`}</ILatex> di quanto in fretta una successione converge alla soluzione.
</p>
<PLatex>{r`\lim_{i \to +\infty} \frac{ \left| x_{(i+1)} - x_{(*)} \right| }{ \left| x_{(k)} - x_{(*)} \right|^{\color{Orange} p}}`}</PLatex>
<ul>
<li><u>Convergenza lineare</u>: <ILatex>{r`p = 1`}</ILatex> e <ILatex>{r`0 < C < 1`}</ILatex></li>
<li><u>Convergenza superlineare</u>: <ILatex>{r`p = 1`}</ILatex> e <ILatex>{r`C = 0`}</ILatex></li>
<li><u>Convergenza quadratica</u>: <ILatex>{r`p = 2`}</ILatex> e <ILatex>{r`0 < C < 1`}</ILatex></li>
<li><u>Convergenza superquadratica</u>: <ILatex>{r`p = 2`}</ILatex> e <ILatex>{r`C = 0`}</ILatex></li>
<li>...</li>
</ul>
</Panel>
</Section>
<Section>
@ -38,31 +54,109 @@ export default function (props) {
<p>
Richiedono <b>una valutazione di funzione non-lineare</b> ad ogni iterazione.
</p>
</Panel>
<Panel title={"Metodi di Newton"}>
<p>
Sono <b>metodi iterativi</b> che sfruttano la <b>derivabilità</b> della funzione per ottenere <b>velocità di convergenza più alte</b>, a costo di <b>maggiore complessità computazionale</b>.
Hanno <b>convergenza lineare</b>.
</p>
</Panel>
<Panel title={"Metodi delle approssimazioni successive"}>
<p>
Sono <b>metodi iterativi</b> che <Todo>TODO</Todo>
Sono <b>metodi iterativi</b> che funzionano in modo molto simile ai metodi iterativi per i sistemi lineari, utilizzando una funzione <ILatex>{r`\phi`}</ILatex> come "metodo".
</p>
<PLatex>{r`x = x - \phi(x) \cdot f(x)`}</PLatex>
<p>
Che diventa:
</p>
<PLatex>{r`x_{(k+1)} = g( x_{(k)} )`}</PLatex>
<p>
Sfruttano i <b>punti fissi</b> <ILatex>{r`g(x_{(*)}) = x_{(*)}`}</ILatex> della funzione per convergere.
</p>
</Panel>
</Section>
<Section title={"Metodi dicotomici"}>
<Panel title={"Metodo di bisezione"}>
<Todo>TODO</Todo>
<p>
Calcoliamo il <b>punto medio</b> dell'intervallo <ILatex>{r`[a_{(n)}, b_{(n)}]`}</ILatex>:
</p>
<PLatex>{r`c_{(n)} = a_{(n)} + \frac{b_{(n)} - a_{(n)}}{2}`}</PLatex>
<p>
Dividiamo l'intervallo in due parti, separate da <ILatex>{r`c_{(n)}`}</ILatex>:
</p>
<ul>
<li><ILatex>{r`[a_{(n)}, c_{(n)}]`}</ILatex> è la <b>metà</b> sinistra</li>
<li><ILatex>{r`[c_{(n)}, b_{(n)}]`}</ILatex> è la <b>metà</b> destra</li>
</ul>
<p>
Teniamo l'intervallo in cui i valori della funzione ai due estremi sono discordi, e rinominiamolo in <ILatex>{r`[a_{(n+1)}, b_{(n+1)}]`}</ILatex>.
</p>
<p>
La dimensione dell'intervallo all'iterazione <ILatex>i</ILatex> è nota:
</p>
<PLatex>{r`b_{(i)} - a_{(i)} = \frac{b - a}{2^{i - 1}}`}</PLatex>
<p>
Il numero di iterazioni necessarie per soddisfare la tolleranza <ILatex>\tau</ILatex> sarà quindi:
</p>
<PLatex>{r`i \geq \log_2 \left( \frac{b - a}{\tau} \right)`}</PLatex>
<Example>
Dividi l'intervallo <ILatex>{r`[a, b]`}</ILatex> in tante parti grandi quanto la tolleranza. L'algoritmo di bisezione ne escluderà metà ad ogni iterazione; la tolleranza sarà raggiunta quando rimarrà una parte sola!
</Example>
<p>
Ha quindi <b>convergenza lineare</b> (<ILatex>{r`C = \frac{1}{2}`}</ILatex>).
</p>
</Panel>
<Panel title={"Metodo regula falsi"}>
<Todo>TODO</Todo>
<p>
Calcoliamo l'<b>intersezione</b> tra la <b>retta che congiunge i due estremi</b> <ILatex>{r`a_{(n)}, b_{(n)}`}</ILatex> e l'<b>asse X</b>:
</p>
<PLatex>{r`c_{(n)} = b_{(n)} - \frac{f(b_{(n)})}{\frac{f(b_{(n)}) - f(a_{(n)})}{b_{(n)} - a_{(n)}}}`}</PLatex>
<p>
Dividiamo l'intervallo in due parti, separate da <ILatex>{r`c_{(n)}`}</ILatex>:
</p>
<ul>
<li><ILatex>{r`[a_{(n)}, c_{(n)}]`}</ILatex> è la parte sinistra</li>
<li><ILatex>{r`[c_{(n)}, b_{(n)}]`}</ILatex> è la parte destra</li>
</ul>
<p>
Teniamo l'intervallo in cui i valori della funzione ai due estremi sono discordi, e rinominiamolo in <ILatex>{r`[a_{(n+1)}, b_{(n+1)}]`}</ILatex>.
</p>
<p>
La dimensione dell'intervallo all'iterazione <ILatex>{r`i`}</ILatex> <b>non è nota</b>, ma:
</p>
<PLatex>{r`b_{(i)} - a_{(i)} \leq \frac{b - a}{2^{i - 1}}`}</PLatex>
<p>
Il numero di iterazioni necessarie per soddisfare la tolleranza <ILatex>\tau</ILatex> sarà quindi:
</p>
<PLatex>{r`i \geq \log_2 \left( \frac{b - a}{\tau} \right)`}</PLatex>
<Example>
Dividi l'intervallo <ILatex>{r`[a, b]`}</ILatex> in tante parti grandi quanto la tolleranza. L'algoritmo di bisezione ne escluderà <i>almeno</i> metà ad ogni iterazione; la tolleranza sarà raggiunta quando rimarrà una parte sola!
</Example>
<p>
Ha quindi <b>convergenza lineare</b> (<ILatex>{r`C = \frac{1}{2}`}</ILatex>).
</p>
</Panel>
</Section>
<Section title={"Metodo delle approssimazioni successive"}>
<Panel title={"Metodo generale"}>
<Todo>TODO</Todo>
<p>
Se <ILatex>{r`\forall x \in [a, b], \phi(x) \neq 0`}</ILatex>, allora i <b>punti fissi</b> della funzione <ILatex>{r`g`}</ILatex> <b>coincideranno</b> con gli <b>zeri</b>.
</p>
<PLatex>{r`g(x) = x - \phi(x) \cdot f(x)`}</PLatex>
<p>
È possibile avvicinarsi sempre di più ai punti fissi utilizzando <Todo>TODO</Todo>
</p>
</Panel>
<Panel title={"Metodo di Newton"}>
<p>
Sfrutta la continuità delle funzioni per ottenere una convergenza di ordine più alto.
</p>
<PLatex>{r`\phi (x) = \frac{1}{f' (x)}`}</PLatex>
<Example>
Geometricamente, corrisponde a prolungare una retta nel punto <ILatex>{r`(x, f(x))`}</ILatex> con pendenza <ILatex>{r`f'(x)`}</ILatex>, e prendendo come nuovo punto l'intersezione con l'asse X.
</Example>
<p>
Ha costo computazionale di <b>4 valutazioni di funzioni</b> e <b>convergenza quadratica</b>.
</p>
</Panel>
<Panel title={"Metodo delle secanti"}>
<Todo>TODO</Todo>
</Panel>
</Section>