metodi numerici teoria generale Flashcards

1
Q

matrice grande o piccola

A

m < 50, m> 400

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

matrice sparsa

A

Sparsity > 0.33

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

diagonale strettamente dominante

A

Abs della diagonale maggiore di somma degli abs dei elementi della riga

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

formula condizionamento built in

A

np.linalg.cond(A)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

codice matrice simmetrica e definita positiva

A

np.allClose(A, A.T)

try: scipy.linalg.cholesky(A)
except scipy.LinAlgError:

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

formula rank matrice

A

np.linalg.matrix_rank(A)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

codice diagonale strettamente dominante

A

n, _ = A.shape
diagonally_dominant = True
for i in range(n):
# Calcola la somma dei valori assoluti degli elementi della riga, escluso l’elemento diagonale
sum_row = np.sum(np.abs(A[i, :])) - np.abs(A[i, i])
# Controlla se valore assoluto dell’elemento diagonale è strettamente maggiore della somma degli altri elementi della riga
if np.abs(A[i, i]) <= sum_row:
diagonally_dominant = False
break

if diagonally_dominant:
    print("Matrice a Diagonale Strettamente Dominante")
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

codice residuo di sistema Ax = b

A

residuo_sol = np.linalg.norm(A @ x - b)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

codice derivata

A

df = sym.diff(f, var, 1)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

codice trasformare funz simbolica in numreica

A

f_numerica = sym.utilities.lambdify(var, f, np)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

codice radice quadrata

A

sym.sqrt(expr)
o np.sqrt(valore)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

codice matrice

A

sym.matrix

O

Np.array

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Metodo python condizionamento

A

np.linalg.cond()

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

importare cholesky

A

scipy.linalg.cholesky(A)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

vettore di zeri

A

np.zeros_like(vet)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

scambiare costanti per numeri in funzione simbolica

A

f.subs(var, numero)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

codice norma metodo built-in?

A

np.linalg.norm(A, 1)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

come ricordare differenza tra numpy e sympy?

A

numpy riguarda operazioni NON simboliche, ma operazioni su array e matrici

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

cos’è norma uno e come si calcola non usando funzioni built-in?

A

norma 1 = MAX SOMMA DI OGNI COLONNA, CONSIDERANDO ABS DI OGNI ELEMENTO

c = np.sum(np.abs(B),axis=0) #equivale a sommare gli elementi di tutte le colonna
norma1 = np.max(c)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

norma 2 cos’è e codice?

A

norma 2 è valore singolare massimo di matrice M = A * A.T

è necessario fare radice del massimo degli autovalori

def norma2EIGVALS(A):
M = A @ A.T
autovalori = np.linalg.eigvals(M)
norma2 = np.sqrt(np.max(autovalori))
return norma2

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

condizionamento in norma 1? non built-in

A

cond = norma(A) * norma(np.linalg.inv(A))

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

norma infinito cos’è e codice?

A

come norma 1 ma la somma riguarda le righe

c = np.sum(np.abs(B),axis=1) #equivale a sommare gli elementi di tutte le righe
normainf = np.max(c)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

inversa di matrice

A

np.linalg.inv(A)

22
Q

condizionamento in norma 2? non built-in

A

cond = norma2(A) / np.sqrt(np.min(autovalori))

23
Q

matrice di vandermone codice?

A

mat = np.vander(x, increasing = True)

24
Q

lu solve quando applicabile?

A

per matrici n = m, piccole dimensioni, dense
E con determinante != 0 (rango max di tutte le sottomatrici)

25
Q

condizione applicabilità lusolve? + codice

A

condizione: Il determinante di tutte le sottomatrici deve essere != 0 a.k.a. il rango di tutte le sottomatrici deve essere pieno

n, _ = A.shape
applicabile = True
for i in range(1, n):
sub_matrix = A[:i, :i]
if np.linalg.matrix_rank(sub_matrix) != i:
print(“NON APPLICABILE”)
applicabile = False
break

if applicabile:
print(“APPLICABILE”)

26
Q

codice applicare lusolve?

A

applicare lu che ritorna PT, L, U, poi risolvere con due solve_triangular

Step 1: Fattorizzazione LU con permutazione
PT, L, U = lu(A)
P = PT.T.copy()

Step 2: CALCOLARE Pb
Pb = P @ b

Step 3: Risolvere L * y = P * b per y (sistema triangolare inferiore)
y = solve_triangular(L, Pb, lower=True)

Step 4: Risolvere U * x = y per x (sistema triangolare superiore)
x = solve_triangular(U, y)

27
Q

norma 1, 2 e infinito built-in?

A

np.linalg.norm(A, 1)
np.linalg.norm(A, 2)
np.linalg.norm(A, np.inf)

28
Q

calcolare perturbazione nei dati vettore b di Ax = b? codice

A

dopo la perturbazione di b in bper:

errore_dati = np.linalg.norm(bper - b, np.inf) / np.linalg.norm(b, np.inf)

29
Q

risoluzione con metodo build-in di sistema n == m

A

x = sym.solve(expr) per sistemi simbolici
x = numpy.linalg.solve(A) per sistemi numerici

30
Q

risoluzione con metodo build-in di sistema n > m sovradeterminati

A

x = sym.linsolve(expr) per sistemi simbolici
c, residuals, rank, s = numpy.linalg.lstsq(A, b) per sistemi numerici

31
Q

applicare cholesky? + codice

A

CHOLESKY

cholesky fa solo la fattorizzazione, serve poi applicare Lsolve, Usolve

cholesky restituisce solo L

L = cholesky(A, lower=True)
print(“Matrice triangolare inferiore L:\n”, L)

LSOLVE
z, flag = Lsolve(L, b)
if flag == 0:
print(“\nSoluzione intermedia z (dalla risoluzione di Lz = b):\n”, z)

# USOLVE
x, flag = Usolve(L.T, z)
if flag == 0:
    print("\nSoluzione finale x (dalla risoluzione di L.T x = z):\n", x)
32
Q

codice solve_triangular

A

scipy.linalg.solve_triangular

33
Q

come importare metodo lu

A

scipy.linalg.lu

34
Q

come importare metodo cholesky

A

scipy.linalg.cholesky

35
Q

come importare per usare Lsolve e Usolve? cosa cambia da solve_triangular?

A

from solvetriangular import Lsolve, Usolve # Importa le funzioni definite nel file

la differenza è che restituiscono anche un flag che è =0 se va bene

solve_triangular(L, V, lower = True) == Lsolve(L, V)

solve_triangular(U, V, lower = False) == Lsolve(U, V)

36
Q

come importare metodo qr?

A

np.linalg.qr(…)

37
Q

[QR, Cholesky, Jacobi, Gauss seidel, SOR, steepest descent, conjugate descent, metodo equazioni normali, QRLS, SVDLS]

tra questi metodi quali senza scheletro non forniscono la soluzione diretta?

A

QR, cholesky

37
Q

applicare metodo qr? + codice

A

qr restituisce Q, R tale che A = Q*R
risolta con metodo built-in solve

Q, R = np.linalg.qr(A)
y = Q.T @ b
x = scipy.linalg.solve(R, y)

38
Q

codice hilbert?

A

H = scipy.linalg.hilbert(n)

39
Q

quando si applica solve_nsis()?

A

in sistemi lineari Ax = b
CONDIZIONE: n == m
per sistemi con n vettori di termini noti b

utilizza lu, Lsolve, Usolve

40
Q

codice solve_nsis?

A

solve_nsis usa lusolve all’interno di un ciclo che itera ogni COLONNA di B, inserendo ogni risulato in ogni COLONNA di X

def solve_nsis(A, B):
X = np.zeros(B)
n = A.shape[0]

#LU
PT, L, U = lu(A)
P = PT.T.copy()

for i in range(1, B.shape[1]):
    #LSOLVE
    y, flag = Lsolve(L, P @ B[:, i])
    if flag != 0:
        print("Errore: elemento diagonale nullo in L")
        X = []
        return X

    #USOLVE
    x, flag = Usolve(U, y)
    if flag != 0:
        print("Errore: elemento diagonale nullo in U")
        X = []
        return X

    X[:, i] = x.reshape(n,)

return X
41
Q

steps per fare condizionamento di funzione simbolica f?

A

1) definire funzione simbolica

2) calcolare la derivata simbolica

3) sostituire valori fissi se necessario

4) convertire funzione e derivata in numeriche

5) calcolare indice condizionamento: | c * df_numerica(c) / f_numerica(c) |

42
Q

nell’applicare scheletri, valori di itmax, tol, x0?

A

itmax = 10000
tol = 1e-8
x0 = np.zeros_like(b)

43
Q

creare mediante interpolazione un polinomio di grado n? cosa serve avere e creare?

A

Metodo per calcolare il polinomio interpolante in forma di Lagrange.

  • x VETTORE dei nodi di interpolazione,
  • y VETTORE dei valori della funzione nei nodi di interpolazione, y = y[x]
  • xx VETTORE dei punti in cui si vuole valutare il polinomio interpolante. PIU’ FITTI. DA CREARE(es con np.linspace())
  • yy VETTORE DA CALCOLARE CON interpL

yy = interpL(x, y, xx)

44
Q

come costruire polinomio di regressione lineare di grado n?

A

si hanno due vettori di dati x e y

usare matrice di vandermone
con vander si crea una matrice A che poi è risolvibile come un qualsiasi sistema lineare.
dopo avere creato A con vander, si ha sistema Ac = y

valore di n è da decidere

n2 = n + 1
A = np.vander(x, increasing = True)[:, :n2]

45
Q

polinomio di regressione con polyfit?

A

OSSERVO n

x = np.array([0, 1, 2, 3])
y = np.array([1, 2, 0, 5])

n = 2

coeffs_polyfit = np.polyfit(x, y, deg=n)
print(“Coefficiente con polyfit:”, coeffs_polyfit)

46
Q

valori da passare in input per metodi di FUNZIONI O SISTEMI NON LINEARI?

A

tolx=1e-8
tolf=1e-8
nmax=10000
x0=1.0

FUNZIONI PASSATE COME NUMERICHE

47
Q

valori da passare in input per metodi di FUNZIONI O SISTEMI LINEARI?

A

tol=1e-8
nmax=10000
x0=np.zeros_like(b)

48
Q

in generale per plottare funzione cosa serve?

A

si fa plt.plot(x,y) con x e y 2 VETTORI DI PUNTI.
x sono valori con linspace, y è funz(x)

49
Q

importare plot?

A

import matplotlib.pyplot as plt

50
Q

soluzione di newton

A

radice più vicina a punto x0

51
Q

soluzione di bisezione

A

unica radice all’interno

52
Q

calcolare ordine di newton?

A

ordine è relativo ad una specifica radice verso cui newton converge.
per calcolarlo usare stima_ordine, poi per aumentarlo usare m = 2 o 3 o 4 in newtonmod