mirror of
https://github.com/Steffo99/unisteffo.git
synced 2024-11-26 01:44:20 +00:00
add moar stuffs
This commit is contained in:
parent
2e8633cb8a
commit
5e7efb59cd
3 changed files with 91 additions and 14 deletions
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"private": true,
|
"private": true,
|
||||||
"name": "appuntiweb",
|
"name": "appuntiweb",
|
||||||
"version": "0.8.6",
|
"version": "0.8.7",
|
||||||
"license": "AGPL-3.0-or-later",
|
"license": "AGPL-3.0-or-later",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"start": "preact watch --template src/template.html",
|
"start": "preact watch --template src/template.html",
|
||||||
|
|
|
@ -7,12 +7,21 @@ import {Fragment} from "preact";
|
||||||
const r = String.raw;
|
const r = String.raw;
|
||||||
|
|
||||||
|
|
||||||
export default function (props) {
|
export default function () {
|
||||||
return (
|
return (
|
||||||
<Fragment>
|
<Fragment>
|
||||||
<Section title={"Problema: Risoluzione di sistemi lineari"}>
|
<Section title={"Problema: Risoluzione di sistemi lineari"}>
|
||||||
<Panel title={"Descrizione"}>
|
<Panel title={"Descrizione"}>
|
||||||
<Todo>TODO</Todo>
|
<p>
|
||||||
|
Dato un sistema di equazioni lineari, si vuole trovare la sua soluzione.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
In forma matriciale, avrà una <b>matrice dei coefficienti</b> <ILatex>{r`A`}</ILatex>, un <b>vettore dei termini noti</b> <ILatex>{r`b`}</ILatex> e un <b>vettore delle incognite</b> <ILatex>{r`x`}</ILatex>.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
L'equazione matriciale del sistema è:
|
||||||
|
</p>
|
||||||
|
<PLatex>{r`A \cdot x = b`}</PLatex>
|
||||||
</Panel>
|
</Panel>
|
||||||
<Panel title={"Condizionamento"}>
|
<Panel title={"Condizionamento"}>
|
||||||
<p>
|
<p>
|
||||||
|
@ -69,7 +78,7 @@ export default function (props) {
|
||||||
<Section>
|
<Section>
|
||||||
<Panel title={<span>Fattorizzazione <ILatex>{r`LU`}</ILatex></span>}>
|
<Panel title={<span>Fattorizzazione <ILatex>{r`LU`}</ILatex></span>}>
|
||||||
<p>
|
<p>
|
||||||
Se la matrice dei coefficienti del sistema <b>non ha <Link href={"https://it.wikipedia.org/wiki/Minore_(algebra_lineare)"}>minori</Link> uguali a 0 <small>(eccetto l'ultimo)</small></b> allora è possibile <i>fattorizzarla</i> in due matrici: una <ILatex>{r`L`}</ILatex> triangolare inferiore, e una <ILatex>{r`U`}</ILatex> triangolare superiore.
|
Se tutti i valori sulla diagonale di <ILatex>{r`A`}</ILatex> sono <b>diversi da 0 <small>(eccetto l'ultimo)</small></b> allora è possibile <i>fattorizzarla</i> in due matrici: una <ILatex>{r`L`}</ILatex> <b>triangolare inferiore</b>, e una <ILatex>{r`U`}</ILatex> <b>triangolare superiore</b>.
|
||||||
</p>
|
</p>
|
||||||
<PLatex>{r`A = L \cdot U`}</PLatex>
|
<PLatex>{r`A = L \cdot U`}</PLatex>
|
||||||
<Example>
|
<Example>
|
||||||
|
@ -96,8 +105,11 @@ export default function (props) {
|
||||||
U_{ik} = 0 \qquad se\ i > k \quad (tri.\ infer.)
|
U_{ik} = 0 \qquad se\ i > k \quad (tri.\ infer.)
|
||||||
\end{cases}
|
\end{cases}
|
||||||
`}</PLatex>
|
`}</PLatex>
|
||||||
|
<Example>
|
||||||
|
È la parte triangolare superiore di <ILatex>{r`A`}</ILatex>!
|
||||||
|
</Example>
|
||||||
<p>
|
<p>
|
||||||
Il sistema può essere poi risolto applicando due volte il metodo di sostituzione:
|
Il sistema può essere poi risolto applicando due volte il metodo di sostituzione (all'avanti e all'indietro):
|
||||||
</p>
|
</p>
|
||||||
<PLatex>{r`
|
<PLatex>{r`
|
||||||
\begin{cases}
|
\begin{cases}
|
||||||
|
@ -118,9 +130,12 @@ export default function (props) {
|
||||||
Abbiamo fatto questo metodo in Algebra Lineare, chiamandolo <b>metodo di Gauss-Jordan</b>!
|
Abbiamo fatto questo metodo in Algebra Lineare, chiamandolo <b>metodo di Gauss-Jordan</b>!
|
||||||
</Example>
|
</Example>
|
||||||
<p>
|
<p>
|
||||||
Alla formula precedente si aggiunge una <Link href={"https://it.wikipedia.org/wiki/Matrice_di_permutazione"}>matrice di permutazione</Link> che indica quali righe sono state scambiate:
|
Alla formula precedente si aggiunge una <b>matrice di permutazione</b> che indica quali righe sono state scambiate:
|
||||||
</p>
|
</p>
|
||||||
<PLatex>{r`P \cdot A = L \cdot U`}</PLatex>
|
<PLatex>{r`P \cdot A = L \cdot U`}</PLatex>
|
||||||
|
<p>
|
||||||
|
Per massimizzare la stabilità, si cerca di <b>usare come perno l'elemento più grande</b> della colonna.
|
||||||
|
</p>
|
||||||
<p>
|
<p>
|
||||||
Questo metodo ha costo computazionale:
|
Questo metodo ha costo computazionale:
|
||||||
</p>
|
</p>
|
||||||
|
@ -131,12 +146,30 @@ export default function (props) {
|
||||||
È possibile anche permettere il <i>pivoting</i> <b>sulle colonne</b> per <b>aumentare ulteriormente la stabilità</b> dell'algoritmo, a costo di maggiore costo computazionale:
|
È possibile anche permettere il <i>pivoting</i> <b>sulle colonne</b> per <b>aumentare ulteriormente la stabilità</b> dell'algoritmo, a costo di maggiore costo computazionale:
|
||||||
</p>
|
</p>
|
||||||
<PLatex>{r`P \cdot A \cdot Q = L \cdot U`}</PLatex>
|
<PLatex>{r`P \cdot A \cdot Q = L \cdot U`}</PLatex>
|
||||||
|
<p>
|
||||||
|
Per massimizzare la stabilità, si cerca di <b>ordinare in modo decrescente la diagonale</b>, assicurandoci che il primo perno sia più grande del secondo e così via.
|
||||||
|
</p>
|
||||||
<p>
|
<p>
|
||||||
Questo metodo ha costo computazionale:
|
Questo metodo ha costo computazionale:
|
||||||
</p>
|
</p>
|
||||||
<PLatex>{r`{\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)`}</PLatex>
|
<PLatex>{r`{\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)`}</PLatex>
|
||||||
</Panel>
|
</Panel>
|
||||||
</Section>
|
</Section>
|
||||||
|
<Section>
|
||||||
|
<Panel title={<span>Fattorizzazione <ILatex>{r`LU`}</ILatex> a banda</span>}>
|
||||||
|
<p>
|
||||||
|
Se la matrice <ILatex>{r`A`}</ILatex> è <b>a banda</b>, è possibile risparmiare spazio durante la fattorizzazione, in quanto sia <ILatex>{r`L`}</ILatex> sia <ILatex>{r`U`}</ILatex> saranno a banda!
|
||||||
|
</p>
|
||||||
|
</Panel>
|
||||||
|
<Panel title={<span>Fattorizzazione <ILatex>{r`LU`}</ILatex> sparsa</span>}>
|
||||||
|
<p>
|
||||||
|
Se la matrice <ILatex>{r`A`}</ILatex> è <b>sparsa</b>, non è detto che <ILatex>{r`L`}</ILatex> e <ILatex>{r`U`}</ILatex> siano sparse a loro volta.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Per evitare il <u>fill-in</u>, è necessario <b>riordinare</b> la matrice <ILatex>{r`A`}</ILatex> in modo che sia il più possibile simile a una matrice a banda. <Todo>TODO: Confermare?</Todo>
|
||||||
|
</p>
|
||||||
|
</Panel>
|
||||||
|
</Section>
|
||||||
<Section>
|
<Section>
|
||||||
<Panel title={<span>Fattorizzazione <ILatex>{r`LDL^{-1}`}</ILatex></span>}>
|
<Panel title={<span>Fattorizzazione <ILatex>{r`LDL^{-1}`}</ILatex></span>}>
|
||||||
<p>
|
<p>
|
||||||
|
@ -204,10 +237,24 @@ export default function (props) {
|
||||||
<Section>
|
<Section>
|
||||||
<Panel title={"Trasformazione di Householder"}>
|
<Panel title={"Trasformazione di Householder"}>
|
||||||
<p>
|
<p>
|
||||||
Matrice ricavata dalla seguente formula:
|
Matrice ricavata dalla seguente formula, dove <ILatex>{r`v`}</ILatex> è la colonna di un'altra matrice:
|
||||||
|
</p>
|
||||||
|
<PLatex>{r`U(v) = \mathbf{I} - \frac{2 \cdot v \cdot v^T}{\| v \|_{(2)}^2}`}</PLatex>
|
||||||
|
<p>
|
||||||
|
Se moltiplicata per per la matrice da cui proviene <ILatex>{r`v`}</ILatex>, sostituirà la colonna <ILatex>{r`v`}</ILatex> con la colonna:
|
||||||
|
</p>
|
||||||
|
<PLatex>{r`
|
||||||
|
\begin{pmatrix}
|
||||||
|
- \| v \|\\\\
|
||||||
|
0\\\\
|
||||||
|
0\\\\
|
||||||
|
\vdots\\\\
|
||||||
|
0
|
||||||
|
\end{pmatrix}
|
||||||
|
`}</PLatex>
|
||||||
|
<p>
|
||||||
|
Si calcola con una complessità computazionale nell'ordine di <ILatex>{r`O(n)`}</ILatex>.
|
||||||
</p>
|
</p>
|
||||||
<PLatex>{r`U(v) = I - \frac{1}{\alpha} \cdot v \cdot v^T`}</PLatex>
|
|
||||||
<PLatex>{r`\alpha = \frac{1}{2} \| v \|_{(2)}^2`}</PLatex>
|
|
||||||
</Panel>
|
</Panel>
|
||||||
<Panel title={<span>Fattorizzazione <ILatex>{r`QR`}</ILatex></span>}>
|
<Panel title={<span>Fattorizzazione <ILatex>{r`QR`}</ILatex></span>}>
|
||||||
<p>
|
<p>
|
||||||
|
@ -218,8 +265,11 @@ export default function (props) {
|
||||||
</p>
|
</p>
|
||||||
<PLatex>{r`A = Q \cdot R`}</PLatex>
|
<PLatex>{r`A = Q \cdot R`}</PLatex>
|
||||||
<p>
|
<p>
|
||||||
Le matrici si ottengono dal prodotto delle trasformazioni di Householder (<ILatex>{r`Q`}</ILatex> sulle colonne della matrice <ILatex>{r`A`}</ILatex>, trasformandola in una matrice triangolare superiore (<ILatex>{r`R`}</ILatex>).
|
Le matrici si ottengono dal <b>prodotto delle trasformazioni di Householder</b> (che concatenate formano <ILatex>{r`Q`}</ILatex>) sulla matrice <ILatex>{r`A`}</ILatex> necessarie a trasformarla in una matrice triangolare superiore (<ILatex>{r`R`}</ILatex>).
|
||||||
</p>
|
</p>
|
||||||
|
<Example>
|
||||||
|
C'è un bell'esempietto <Link href={"https://web.archive.org/web/20200828003151/https://rpubs.com/aaronsc32/qr-decomposition-householder"}>qui</Link>.
|
||||||
|
</Example>
|
||||||
<p>
|
<p>
|
||||||
Una volta fattorizzata, il sistema si può risolvere con:
|
Una volta fattorizzata, il sistema si può risolvere con:
|
||||||
</p>
|
</p>
|
||||||
|
@ -233,9 +283,6 @@ export default function (props) {
|
||||||
Questo metodo ha costo computazionale:
|
Questo metodo ha costo computazionale:
|
||||||
</p>
|
</p>
|
||||||
<PLatex>{r`{\color{Yellow} O\left(\frac{2 \cdot n^3}{3}\right)} + 2 \cdot O\left(\frac{n^2}{2}\right)`}</PLatex>
|
<PLatex>{r`{\color{Yellow} O\left(\frac{2 \cdot n^3}{3}\right)} + 2 \cdot O\left(\frac{n^2}{2}\right)`}</PLatex>
|
||||||
<p>
|
|
||||||
<Todo>TODO: l'algoritmo con tau per ricavare la q se non è in memoria</Todo>
|
|
||||||
</p>
|
|
||||||
</Panel>
|
</Panel>
|
||||||
</Section>
|
</Section>
|
||||||
<Section title={"Metodi iterativi"}>
|
<Section title={"Metodi iterativi"}>
|
||||||
|
|
|
@ -4,7 +4,7 @@ import Example from "../components/Example";
|
||||||
const r = String.raw;
|
const r = String.raw;
|
||||||
|
|
||||||
|
|
||||||
export default function (params) {
|
export default function () {
|
||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
<h1>Ripasso di Algebra Lineare <small>per <a href={"/calcolonumerico"}>Calcolo
|
<h1>Ripasso di Algebra Lineare <small>per <a href={"/calcolonumerico"}>Calcolo
|
||||||
|
@ -168,6 +168,36 @@ export default function (params) {
|
||||||
`}</PLatex>
|
`}</PLatex>
|
||||||
</Example>
|
</Example>
|
||||||
</Panel>
|
</Panel>
|
||||||
|
<Panel title={"Matrice di permutazione"}>
|
||||||
|
<p>
|
||||||
|
Matrice riempita di 0 eccetto per un solo 1 per riga e per colonna.
|
||||||
|
</p>
|
||||||
|
<Example>
|
||||||
|
<PLatex>{r`
|
||||||
|
\begin{pmatrix}
|
||||||
|
{\color{Gray} 0} & {\color{Gray} 0} & 1
|
||||||
|
{\color{Gray} 0} & 1 & {\color{Gray} 0}\\
|
||||||
|
1 & {\color{Gray} 0} & {\color{Gray} 0}\\
|
||||||
|
\end{pmatrix}
|
||||||
|
`}</PLatex>
|
||||||
|
</Example>
|
||||||
|
<p>
|
||||||
|
Se premoltiplicata per una matrice, ne <b>riordina le righe</b>; se invece postmoltiplicata, ne <b>riordina le colonne</b>.
|
||||||
|
</p>
|
||||||
|
<Example>
|
||||||
|
<p>
|
||||||
|
Premoltiplicare la matrice precedente scambia la prima e la terza righa, postmoltiplicarla scambia la prima e la terza colonna.
|
||||||
|
</p>
|
||||||
|
</Example>
|
||||||
|
</Panel>
|
||||||
|
<Panel title={"Matrice di permutazione elementare"}>
|
||||||
|
<p>
|
||||||
|
Matrice di permutazione con un solo scambio.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Sono <b>nonsingolari</b>, <b>simmetriche</b> e <b>ortogonali</b>.
|
||||||
|
</p>
|
||||||
|
</Panel>
|
||||||
</Section>
|
</Section>
|
||||||
<Section title={"Norme vettoriali"}>
|
<Section title={"Norme vettoriali"}>
|
||||||
<Panel title={"Norma vettoriale"}>
|
<Panel title={"Norma vettoriale"}>
|
||||||
|
|
Loading…
Reference in a new issue