From f8ded5004c06f1b11881fedccd9d2143a05bb717 Mon Sep 17 00:00:00 2001
From: Stefano Pigozzi
-
diff --git a/src/routes/CalcoloNumerico/00_Intro.js b/src/routes/CalcoloNumerico/00_Intro.js
index 41d812b..1259136 100644
--- a/src/routes/CalcoloNumerico/00_Intro.js
+++ b/src/routes/CalcoloNumerico/00_Intro.js
@@ -1,4 +1,3 @@
-import style from "./00_Intro.less"
import {ILatex, Panel, PLatex, Section} from "bluelib";
import Link from "../../components/Link";
import MenuList from "../../components/MenuList";
@@ -30,23 +29,29 @@ export default function () {
- Prima di iniziare a studiare Calcolo Numerico, potrebbe essere una buona idea ripassare un pochino Algebra Lineare:
+ Prima di iniziare a studiare Calcolo Numerico, potrebbe essere una buona idea ripassare un
+ pochino Algebra Lineare:
- Ho provato a fare un deck Anki con tutte le formule di Calcolo numerico.
+ Ho provato a fare un deck Anki con tutte le
+ formule di Calcolo numerico.
- Sappiatemi dire com'è! Io non l'ho usato moltissimo perchè ho studiato scrivendo questa pagina di Appuntiweb...
+ Sappiatemi dire com'è! Io non l'ho usato moltissimo perchè ho studiato scrivendo questa
+ pagina di Appuntiweb...
- Un numero reale rappresentato in virgola mobile ha un errore relativo minore o uguale alla precisione
+ Un numero reale rappresentato in virgola mobile ha un errore relativo minore o
+ uguale alla precisione
di macchina:
diff --git a/src/routes/CalcoloNumerico/00_Intro.less b/src/routes/CalcoloNumerico/00_Intro.less
deleted file mode 100644
index e69de29..0000000
diff --git a/src/routes/CalcoloNumerico/01_SistemiLineari.js b/src/routes/CalcoloNumerico/01_SistemiLineari.js
index 58c23c5..f3887d4 100644
--- a/src/routes/CalcoloNumerico/01_SistemiLineari.js
+++ b/src/routes/CalcoloNumerico/01_SistemiLineari.js
@@ -1,4 +1,3 @@
-import style from "./01_SistemiLineari.less"
import {ILatex, Panel, PLatex, Section, Todo} from "bluelib";
import Link from "../../components/Link";
import Example from "../../components/Example";
@@ -16,7 +15,9 @@ export default function () {
Dato un sistema di equazioni lineari, si vuole trovare la sua soluzione.
- In forma matriciale, avrà una matrice dei coefficienti
L'equazione matriciale del sistema è:
@@ -39,10 +40,12 @@ export default function () {
- Metodi che trovano la soluzione esatta* di un sistema lineare.
+ Metodi che trovano la soluzione esatta* di un sistema lineare.
- Tipicamente prevedono la fattorizzazione della matrice dei coefficienti in due sottomatrici più facili da risolvere.
+ Tipicamente prevedono la fattorizzazione della matrice dei coefficienti in due
+ sottomatrici più facili da risolvere.
Generalmente hanno una complessità temporale
- Metodi che trovano una soluzione imperfetta* di un sistema lineare.
+ Metodi che trovano una soluzione imperfetta* di
+ un sistema lineare.
- Tipicamente prevedono l'applicazione ripetuta di un metodo, in base al quale cambia la velocità di convergenza alla soluzione.
+ Tipicamente prevedono l'applicazione ripetuta di un metodo, in base al quale cambia
+ la velocità di convergenza alla soluzione.
Generalmente hanno una complessità temporale
- Se la matrice dei coefficienti del sistema è diagonale, allora è possibile trovare la soluzione dividendo ogni termine noto per l'unico coefficiente diverso da zero presente nella sua riga:
+ Se la matrice dei coefficienti del sistema è diagonale, allora è possibile trovare la
+ soluzione dividendo ogni termine noto per l'unico coefficiente diverso da zero presente
+ nella sua riga:
- Se la matrice dei coefficienti del sistema è triangolare inferiore o superiore, allora è possibile trovare la soluzione effettuando una sostituzione all'avanti oppure all'indietro:
+ Se la matrice dei coefficienti del sistema è triangolare inferiore o superiore, allora è
+ possibile trovare la soluzione effettuando una sostituzione all'avanti oppure
+ all'indietro:
- Se tutti i valori sulla diagonale di
- Il sistema può essere poi risolto applicando due volte il metodo di sostituzione (all'avanti e all'indietro):
+ Il sistema può essere poi risolto applicando due volte il metodo di sostituzione (all'avanti e
+ all'indietro):
- È possibile applicare la fattorizzazione
- Alla formula precedente si aggiunge una matrice di permutazione che indica quali righe sono state scambiate:
+ Alla formula precedente si aggiunge una matrice di permutazione che indica quali righe
+ sono state scambiate:
- Per massimizzare la stabilità, si cerca di usare come perno l'elemento più grande della colonna.
+ Per massimizzare la stabilità, si cerca di usare come perno l'elemento più grande della
+ colonna.
Questo metodo ha costo computazionale:
@@ -143,11 +161,13 @@ export default function () {
- È possibile anche permettere il pivoting sulle colonne per aumentare ulteriormente la stabilità dell'algoritmo, a costo di maggiore costo computazionale:
+ È possibile anche permettere il pivoting sulle colonne per aumentare
+ ulteriormente la stabilità dell'algoritmo, a costo di maggiore costo computazionale:
- Per massimizzare la stabilità, si cerca di ordinare in modo decrescente la diagonale, assicurandoci che il primo perno sia più grande del secondo e così via.
+ Per massimizzare la stabilità, si cerca di ordinare in modo decrescente la diagonale,
+ assicurandoci che il primo perno sia più grande del secondo e così via.
Questo metodo ha costo computazionale:
@@ -158,22 +178,28 @@ export default function () {
- Se la matrice
- Se la matrice
- Per evitare il fill-in, è necessario riordinare la matrice
- È possibile ridurre la complessità computazionale della fattorizzazione
@@ -215,7 +241,8 @@ export default function () {
- È possibile dare stabilità forte alla fattorizzazione
@@ -237,11 +264,13 @@ export default function () {
- Matrice ricavata dalla seguente formula, dove
- Se moltiplicata per per la matrice da cui proviene
- Metodo che fornisce una maggiore stabilità a costo di una maggiore complessità computazionale.
+ Metodo che fornisce una maggiore stabilità a costo di una maggiore complessità
+ computazionale.
- La matrice
- Le matrici si ottengono dal prodotto delle trasformazioni di Householder (che concatenate formano
Una volta fattorizzata, il sistema si può risolvere con:
@@ -301,11 +336,13 @@ export default function () {
- È particolarmente utile perchè ci permette di definire un algoritmo ricorsivo che trovi
-
Ponendo
- (dove
Perchè un metodo sia convergente, è sufficiente che:
-
- Spostamenti simultanei: Permette di ottenere ogni componente di
- Se la matrice è diagonale dominante, allora il metodo di Jacobi converge sicuramente.
+ Se la matrice è diagonale dominante, allora il metodo di
+ Jacobi converge sicuramente.
- Spostamenti successivi: Non è parallelizzabile, perchè ogni componente dipende da quelle calcolate in precedenza.
+ Spostamenti successivi: Non è parallelizzabile, perchè ogni componente dipende da
+ quelle calcolate in precedenza.
- Se la matrice è diagonale dominante, allora il metodo di Gauss-Seidel converge sicuramente.
+ Se la matrice è diagonale dominante, allora il metodo di
+ Gauss-Seidel converge sicuramente.
- Si vogliono trovare i punti (zeri) in cui una funzione continua
- Per il teorema del valore medio, se
- Denominiamo il punto in cui la funzione vale
- Più la derivata prima della funzione si avvicina allo 0, peggio il problema sarà condizionato.
+ Più la derivata prima della funzione si avvicina allo 0, peggio il problema
+ sarà condizionato.
- Indice
- Sono metodi iterativi in grado di ridurre sempre di più l'intervallo in cui è definita la funzione, facendolo convergere allo zero desiderato.
+ Sono metodi iterativi in grado di ridurre sempre di più l'intervallo in cui è definita la
+ funzione, facendolo convergere allo zero desiderato.
Alcuni di essi sono il metodo dicotomico e il metodo regula falsi.
@@ -55,18 +64,22 @@ export default function (props) {
Richiedono una valutazione di funzione non-lineare ad ogni iterazione.
- Ad ogni iterazione, l'intervallo viene sempre almeno dimezzato; si ha, pertanto, che:
+ Ad ogni iterazione, l'intervallo viene sempre almeno dimezzato; si ha, pertanto,
+ che:
Hanno quindi convergenza lineare (
- Il loro criterio di arresto è un numero di iterazioni prefissato che dipende dalla tolleranza sull'errore:
+ Il loro criterio di arresto è un numero di iterazioni prefissato che dipende
+ dalla tolleranza sull'errore:
- Sono metodi iterativi che funzionano in modo molto simile ai metodi iterativi per i sistemi lineari, utilizzando una funzione
@@ -127,8 +145,10 @@ export default function (props) {
- Sfruttano i punti fissi
@@ -136,11 +156,16 @@ export default function (props) {
- Non si conosce in anticipo il numero di iterazioni necessarie per soddisfare la tolleranza
- La funzione
@@ -186,7 +213,8 @@ export default function (props) {
Più è piccolo
Ha costo computazionale di 2 valutazioni di funzione più 2 valutazioni di derivata.
@@ -209,12 +240,16 @@ export default function (props) {
- È come il metodo di Newton, ma usa il rapporto incrementale, in modo da poter essere applicato a funzioni non continue.
+ È come il metodo di Newton, ma usa il rapporto incrementale, in modo da poter essere
+ applicato a funzioni non continue.
Ha costo computazionale di 3 valutazioni di funzione.
diff --git a/src/routes/CalcoloNumerico/02_ZeriDiFunzione.less b/src/routes/CalcoloNumerico/02_ZeriDiFunzione.less
deleted file mode 100644
index e69de29..0000000
diff --git a/src/routes/CalcoloNumerico/03_Interpolazione.js b/src/routes/CalcoloNumerico/03_Interpolazione.js
index 9a6e594..172d2df 100644
--- a/src/routes/CalcoloNumerico/03_Interpolazione.js
+++ b/src/routes/CalcoloNumerico/03_Interpolazione.js
@@ -1,24 +1,25 @@
-import style from "./03_Interpolazione.less";
import {Fragment} from "preact";
-import {Section, Panel, ILatex, BLatex, PLatex, Todo} from "bluelib";
+import {ILatex, Panel, PLatex, Section, Todo} from "bluelib";
import Example from "../../components/Example";
const r = String.raw;
-export default function (props) {
+export default function () {
return (
- Si vuole trovare una funzione in grado di approssimarne un'altra, di cui si conoscono però solo alcuni punti.
+ Si vuole trovare una funzione in grado di approssimarne un'altra, di cui si conoscono
+ però solo alcuni punti.
- I punti sono detti nodi
@@ -27,10 +28,12 @@ export default function (props) {
- Il teorema fondamentale dell'algebra dice che esiste una sola interpolante polinomiale che interpola un dato insieme di punti.
+ Il teorema fondamentale dell'algebra dice che esiste una sola
+ interpolante polinomiale che interpola un dato insieme di punti.
- Con
La sua forma canonica sarà:
@@ -87,20 +90,25 @@ export default function (props) {
Per trovare il polinomio di interpolazione è sufficiente risolvere il problema!
- È efficace perchè una volta calcolati i coefficienti essi valgono per tutti i punti, ma ha come svantaggio che la matrice di Vandermonde è spesso malcondizionata.
+ È efficace perchè una volta calcolati i coefficienti essi valgono per tutti i punti, ma
+ ha come svantaggio che la matrice di Vandermonde è spesso malcondizionata.
- È possibile scrivere il polinomio di interpolazione raccogliendo le
- I polinomi
- Questo metodo permette di calcolare il valore del polinomio di interpolazione in un singolo punto:
+ Questo metodo permette di calcolare il valore del polinomio di interpolazione in un singolo
+ punto:
- Si può risparmiare tempo di calcolo calcolando una singola volta il numeratore con tutti i termini:
+ Si può risparmiare tempo di calcolo calcolando una singola volta il numeratore
+ con tutti i termini:
@@ -147,17 +157,16 @@ export default function (props) {
- In particolare, è interessante la sua norma a infinito,
- Un teorema dice che esso è uguale a:
-
L'errore nell'interpolazione dipende principalmente da due fattori:
- Fenomeno che si verifica cercando di interpolare la funzione di Runge (
- Scegliendo nodi equispaziati, l'errore di interpolazione sarà enorme vicino ai due estremi dell'intervallo.
+ Scegliendo nodi equispaziati, l'errore di interpolazione sarà enorme vicino ai due
+ estremi dell'intervallo.
- Nodi ottenuti partizionando una semicirconferenza, e proiettando le partizioni sul diametro.
+ Nodi ottenuti partizionando una semicirconferenza, e proiettando le partizioni sul
+ diametro.
La formula usata per ottenere
- Invece che costruire una singola funzione che interpola tutti i punti, per ogni intervallo tra due punti (sottointervallo) si costruisce una funzione apposta.
+ Invece che costruire una singola funzione che interpola tutti i punti, per ogni intervallo
+ tra due punti (sottointervallo) si costruisce una funzione apposta.
- Significa che agli estremi dell'intervallo, i valori di tutte le derivate fino al grado
- Ha come vantaggi complessità computazionale molto più bassa e l'assenza del fenomeno di Runge, ma allo stesso tempo si perde la derivabilità della funzione.
+ Ha come vantaggi complessità computazionale molto più bassa e l'assenza del
+ fenomeno di Runge, ma allo stesso tempo si perde la derivabilità della funzione.
Non hanno gradi di libertà.
@@ -87,7 +91,8 @@ export default function (props) {
-
- se
+ se
-
È unica.
@@ -181,7 +189,8 @@ export default function (props) {
- Tra tutte le funzioni che interpolano dei punti, le tre classi di funzioni sopraelencate sono quelle che interpolano la funzione più "dolcemente".
+ Tra tutte le funzioni che interpolano dei punti, le tre classi di funzioni sopraelencate sono
+ quelle che interpolano la funzione più "dolcemente".
Per loro è valida la seguente proprietà:
diff --git a/src/routes/CalcoloNumerico/04_InterpolazioneATratti.less b/src/routes/CalcoloNumerico/04_InterpolazioneATratti.less
deleted file mode 100644
index e69de29..0000000
diff --git a/src/routes/CalcoloNumerico/05_ApprossimazioneDatiSperimentali.js b/src/routes/CalcoloNumerico/05_ApprossimazioneDatiSperimentali.js
index f280559..de029dd 100644
--- a/src/routes/CalcoloNumerico/05_ApprossimazioneDatiSperimentali.js
+++ b/src/routes/CalcoloNumerico/05_ApprossimazioneDatiSperimentali.js
@@ -1,12 +1,11 @@
-import style from "./05_ApprossimazioneDatiSperimentali.less";
import {Fragment} from "preact";
-import {Section, Panel, ILatex, BLatex, PLatex} from "bluelib";
+import {ILatex, Panel, PLatex, Section} from "bluelib";
import Example from "../../components/Example";
const r = String.raw;
-export default function (props) {
+export default function () {
return (
- Vogliamo costruire una funzione di regressione che, dati molti più dati del grado della funzione, minimizzi il quadrato della distanza tra i punti sperimentali e i punti della funzione di regressione.
+ Vogliamo costruire una funzione di regressione che, dati molti più dati del grado della
+ funzione, minimizzi il quadrato della distanza tra i punti sperimentali e i punti della funzione
+ di regressione.
Denominiamo:
@@ -35,10 +40,12 @@ export default function (props) {
- Trova la retta
- Essendo una retta, avrà due parametri: il termine noto
@@ -50,7 +57,8 @@ export default function (props) {
- Possiamo costruire una matrice di regressione
- Trova il polinomio
Essendo un polinomio di grado
- La regressione lineare è un caso particolare di regressione generale in cui i parametri sono 2!
+ La regressione lineare è un caso particolare di regressione generale in cui i parametri sono
+ 2!
@@ -104,7 +115,8 @@ export default function (props) {
- Possiamo costruire una matrice di regressione
- Trova i coefficienti della combinazione lineare
- Possiamo costruire una matrice di regressione
- Si cerca sempre di trovare la soluzione di norma minima, che, se
Per trovarla:
@@ -250,7 +271,8 @@ export default function (props) {