Computer 4 dummy

Informatica facile a portata di tutti

Numpy – Risolvere un sistema lineare

In questo capito vediamo come risolvere un semplice sistema lineare utilizzando numpy per python.
L’indice del corso lo puoi trovare a questo Link: https://computer4dummy.altervista.org/programmazione-guide-alla-programmazione/numpy-per-python/

Problema

Supponiamo di dover risolvere un equazione lineare ad una incognita come la seguente:

Ax = b

Per trovare x si procede a calcolare la matrice inversa di moltiplicata b.

Quindi in Python definite le due matrici:

import numpy as np

A = np.array([[1,2],[3,4]])
b = np.array([1,2])

Per trovare usiamo le seguenti funzioni:

x = np.linalg.inv(A).dot(b)

x
Out[5]: array([2.22044605e-16, 5.00000000e-01])

Solve

Numpy mette a disposizione una funzione che risolve l’equazione in maniera più diretta.

x = np.linalg.solve(A, b)

x
Out[7]: array([0. , 0.5])

Il risultato è lo stesso, nel primo caso i numeri sono espressi in notazione scientifica mentre con la funzione solve no.

Esempio pratico

Proviamo a risolvere un esempio pratico supponendo che il prezzo del biglietto per una fiera è di 1,50€ per i bambini mentre è di 4.00€ per gli adulti.

Sappiamo che alla fine della giornata sono entrate 2200 persone ed il guadagno totale è di 5050€.

Quanti bambini e quanti adulti sono entrati in quella giornata?

La risoluzione è la seguente:

A = numero di adulti
B = numero di bambini

A + B = 2200
1.5*B + 4*A = 5050

Possiamo ora definire le due matrici M1 = ([[1,1],[1.5,4]]) e M2 = ([2200, 5050]) .

M1 = np.array([[1,1],[1.5,4]])
M2 = np.array([2200, 5050])

M1
Out[10]: 
array([[1. , 1. ],
       [1.5, 4. ]])

M2
Out[11]: array([2200, 5050])

Risolviamo il problema utilizzando la funzione solve.

np.linalg.solve(M1, M2)

Out[12]: array([1500.,  700.])

Alla fine otteniamo che sono entrati alla fiera 1500 bambini e 700 adulti.