Formulazione di un problema di programmazione lineare

Transcript

Formulazione di un problema di programmazione lineare
Formulazione di un problema di programmazione lineare
Attraverso la programmazione lineare possono essere risolti numerosi problemi di ottimizzazione,
facendo ricorso all’implementazione di opportuni algoritmi al calcolatore. L’aggettivo “lineare” è
indicativo della tipologia di relazioni matematiche che legano vincoli e variabili del problema. I
vantaggi di questo tipo di programmazione sono riconducibili principalmente alla possibilità che
essa fornisce di approssimare una serie di problemi non lineari, molto complessi, riuscendo a fornire
comunque una soluzione.
Le fasi della programmazione lineare sono 5, e così schematizzabili:
IDENTIFICAZIONE DEL PROBLEMA
(Individuazione degli obiettivi da raggiungere)
OSSERVAZIONE DEL SISTEMA
(Raccolta dati e stima dei parametri)
COSTRUZIONE DEL MODELLO MATEMATICO
(Individuazione di variabili decisionali, funzione obiettivo e funzioni di vincolo)
VALIDAZIONE DEL MODELLO
(Calcolo soluzioni e verifica grado di approssimazione)
Approssimazione eccessiva
INGEGNERIZZAZIONE
(Uso di uno strumento per velocizzare il calcolo)
Dopo aver schematizzato le fasi della programmazione lineare, è opportuno cercare di esplicitare al
meglio le caratteristiche di un tipico problema di ottimizzazione. La forma standard di un problema
di ottimizzazione è la seguente:
∗
Funzione obiettivo z( x ) : ℜ n → ℜ n
∗
min z ( x )
∗
⎧A ⋅ x = b
Sistema di vincoli: ⎨
⎩ x≥0
Le due condizioni di linearità della funzione z(x) sono riassumibili nelle seguenti proprietà:
1. Proprietà additiva: z( x + y) = z( x ) + z( y)
2. Proprietà di proporzionalità z(λx ) = λ ⋅ z( x )
∀x, y ∈ ℜ n
∀x ∈ ℜ n , ∀λ ∈ ℜ
In generale, quindi, come si può evincere dalla formulazione del problema di ottimizzazione,
occorre minimizzare la funzione obiettivo z(x).
La seconda condizione del problema mette in relazione la matrice A(m*n), detta matrice dei
coefficienti di vincolo, e il vettore b dei termini noti, attraverso il vettore x di n elementi che
costituisce il vettore delle variabili del problema.
Infine la terza condizione riguarda il vincolo di positività delle variabili dimensionali x.
ESEMPIO DI FORMULAZIONE DI UN PROBLEMA DI P.L. – Modello di produzione
Un’industria chimica produce tre tipi di composti A, B, C, utilizzando per la produzione due
stabilimenti. Nel primo un’ora di lavorazione costa 50€ e vengono prodotti 3kg di composto A, 2kg
di composto B e 3kg di composto C. Nel secondo impianto, dove un’ora di produzione ha un costo
pari a 75€, ogni ora si producono 4kg di composto chimico A, 4kg di composto chimico B e 5kg di
composto C. Dei tre composti chimici è richiesta una produzione giornaliera pari ad almeno 90, 120
e 100 kg, rispettivamente. La produzione dei tre composti comporta la generazione di sostanze
inquinati; in particolare per ogni kg di composto A si producono 20g di sostanza inquinante, mentre
per ogni kg di composto B o C la quantità di sostanza inquinante prodotta è pari a 10g. Una legge
regionale sul controllo della qualità dell’ambiente impone che non è possibile produrre
giornalmente più di 5 kg di sostanza inquinante.
Considerando che ogni impianto può essere utilizzato a ciclo continuo, formulare il modello di
programmazione lineare relativo alla pianificazione ottimale della produzione giornaliera dei tre
composti chimici, con l’obiettivo di minimizzare i costi complessivi di lavorazione.
Metodologia di risoluzione del problema
Innanzitutto occorre definire la funzione obiettivo z(x) che si intende minimizzare, ed allo stesso
tempo individuare le variabili decisionali x.
Analizzando il problema, risulta opportuno scegliere come variabili decisionali le ore di lavorazione
di ogni impianto, visto che tutte le altre grandezze in gioco sono ad esse riferite.
Per cui :
∗
x 1 = n° di ore lavorative del I impianto;
∗
x 2 = n° di ore lavorative del II impianto.
Poiché l’obiettivo è la minimizzazione dei costo, occorre rendere minima una funzione z(x) definita
come somma dei costi della produzione del primo e del secondo impianto:
z ( x ) = 50 ⋅ x 1 + 75 ⋅ x 2
dove 50€ e 75€ sono rispettivamente i costi di un’ora di lavorazione nel primo e nel secondo
impianto.
A questo punto occorre esplicitare i vincoli del problema. Innanzitutto esistono dei vincoli sulle
quantità da produrre:
ƒ
3 ⋅ x1 + 4 ⋅ x 2 ≥ 90
Prodotto A
ƒ
2 ⋅ x1 + 4 ⋅ x 2 ≥ 120
Prodotto B
ƒ
3 ⋅ x1 + 5 ⋅ x 2 ≥ 100
Prodotto C
Ci sono poi altri vincoli sull’utilizzo degli stabilimenti. Poiché ogni impianto può essere a ciclo
continuo le condizioni di vincolo sono esprimibili nel seguente modo:
ƒ
x1 ≤ 24
ƒ
x 2 ≤ 24
Gli ultimi vincoli sono quelli relativi alla produzione di sostanze inquinanti. Le quantità di sostanze
complessivamente prodotte dai due impianti valgono:
3 ⋅ 20g + 2 ⋅ 10g + 3 ⋅ 10g = 110g ⇒ I
4 ⋅ 20g + 4 ⋅ 10g + 5 ⋅ 10g = 170g ⇒ II
Per cui il vincolo è così esprimibile:
ƒ
110 ⋅ x1 + 170 ⋅ x 2 ≤ 5000
Una volta individuati gli elementi base che caratterizzano il problema, è possibile riscriverne la
forma standard nel seguente modo:
⎧z( x ) = 50 ⋅ x1 + 75 ⋅ x 2
⎪
min z( x )
⎪
⎪ 3x 1 + 4x 2 ≥ 90
⎪
⎪ 2x 1 + 4x 2 ≥ 120
⎪
⎨ 3x1 + 5x 2 ≥ 100
⎪110 x + 170x ≤ 5000
1
2
⎪
x1 ≤ 24
⎪
⎪
x 2 ≤ 24
⎪
⎪⎩
x 1 ≥ 0; x 2 ≥ 0
Il problema presenta otto condizioni di vincoli; il vettore x è così fatto:
⎡x ⎤
x = ⎢ 1⎥
⎣x 2 ⎦
La matrice A dei coefficienti di vincolo e il vettore b dei termini noti sono i seguenti:
4 ⎤
⎡ 3
⎢ 2
4 ⎥⎥
⎢
⎢ 3
5 ⎥
A=⎢
⎥
⎢110 170⎥
⎢ 1
0 ⎥
⎥
⎢
1 ⎦⎥
⎣⎢ 0
⎡ 30 ⎤
⎢ 120 ⎥
⎥
⎢
⎢ 100 ⎥
b=⎢
⎥
⎢5000⎥
⎢ 24 ⎥
⎥
⎢
⎣⎢ 24 ⎦⎥
Gli ultimi due vincoli non vengono riportati nella matrice in quanto essi sono vincoli di positività
espressi già nella forma standard del problema.
Una delle condizioni principali dei problemi di ottimizzazione è che le condizioni di vincolo della
forma standard siano tutte riportate sotto forma di equazioni; nel problema in esame, invece, i
vincoli sono stati formulati come disequazioni matematiche. Per ovviare a tutto ciò si ricorre ad
artifici algebrici di trasformazione, distinguendo prima, però, quattro casi diversi in cui ci si può
trovare:
CASO 1 : funzione obiettivo da massimizzare
Può accadere che un problema di ottimizzazione richieda la massimizzazione e non la
minimizzazione della funzione obiettivo; in tal caso si sfrutta la seguente propriètà che consente di
ricondurre il problema nella forma nota:
{
}
{
max z( x ) : x ∈ ℜ n = − min z' ( x ) : x ∈ ℜ n
}
ovvero
z' ( x ) = −z( x )
Per cui anziché fare il massimo della funzione z(x), si calcola il minimo dalla funzione z’(x)=-z(x).
CASO 2A : vincoli espressi come disuguaglianze
E’ un caso individuabile nel problema in esame. Innanzitutto occorre specificare qual è il segno
della disuguaglianza. La procedura illustrata di seguito è riferita a disequazioni del tipo:
∑ a ij ⋅ x j ≤ b i
Il problema si risolve introducendo una variabile ausiliaria definita nel seguente modo:
s i = b i − ∑ a ij ⋅ x j
con s i ≥ 0 , in maniera tale da poterla inserire nella formulazione del problema di P.L.
CASO 2B : vincoli espressi come disuguaglianze
La procedura illustrata di seguito è riferita a disequazioni del tipo:
∑ a ij ⋅ x j ≥ b i
Il problema si risolve introducendo una variabile ausiliaria definita nel seguente modo:
s i = ∑ a ij ⋅ x j − b i
con s i ≥ 0 , in maniera tale da poterla inserire nella formulazione del problema di P.L.
CASO 3 :condizione di positività non soddisfatta
In questo caso si introducono ulteriori due variabili decisionali positive : x +j e x −j
Per cui se x j ≤ 0 ⇒ x j = −( x +j − x −j ) e il vincolo si riscrive nella forma: ( x +j − x −j ) ≥ 0
Quindi le equazioni che rappresentano le condizioni di vincolo per il problema in same, viste le
precedenti considerazioni diventano:
3 ⋅ x1 + 4 ⋅ x 2 ≥ 90 ⇒ 3 ⋅ x1 + 4 ⋅ x 2 − x 3 = 90
2 ⋅ x1 + 4 ⋅ x 2 ≥ 120 ⇒ 2 ⋅ x1 + 4 ⋅ x 2 − x 4 = 120
3 ⋅ x1 + 5 ⋅ x 2 ≥ 100 ⇒ 3 ⋅ x1 + 5 ⋅ x 2 − x 5 = 100
110 ⋅ x 1 + 170 ⋅ x 2 ≤ 5000 ⇒ 110 ⋅ x1 + 170 ⋅ x 2 + x 6 = 5000
x 1 ≤ 24 ⇒ x 1 + x 7 = 24
x 2 ≤ 24 ⇒ x 2 + x 8 = 24
Il vettore delle variabili decisionali ora è costituito da otto elementi; il vettore b è rimasto invariato,
a differenza della matrice A che adesso è così rappresentabili:
4 −1 0 0
⎡ 3
⎢ 2
4
0 −1 0
⎢
⎢ 3
5
0 0 −1
A=⎢
⎢110 170 0 0 0
⎢ 1
0
0 0 0
⎢
1
0 0 0
⎣⎢ 0
0
0
0
1
0
0
0
0
0
0
1
0
0⎤
0⎥⎥
0⎥
⎥
0⎥
0⎥
⎥
1⎦⎥
⎡ x1 ⎤
⎢x ⎥
⎢ 2⎥
⎢x 3 ⎥
⎢ ⎥
x
x = ⎢ 4⎥
⎢x 5 ⎥
⎢ ⎥
⎢x 6 ⎥
⎢x ⎥
⎢ 7⎥
⎢⎣ x 8 ⎥⎦
Per trovare la soluzione del problema occorre prima di tutto distinguere tre diversi casi possibili:
1. m>n : i vincoli sono in numero maggiore rispetto alle incognite. Il problema non è
risolvibile; tuttavia occorre accertarsi che qualche equazione di vincolo non sia ridondante;
2. m=n : il sistema è risolvibile se e solo se Det(A) ≠ 0; in tal caso la soluzione è unica;
3. m<n : è il caso più ricorrente ed è quello che si intende raggiungere attraverso la
formulazione del problema. Le soluzioni sono infinite; fra di esse esiste la soluzione ottima
che è quella che minimizza la funzione obiettivo. Affinché il problema possa essere risolto
in questo caso occorre che sia ben posto, ovvero che : Rango(A)=m. Ciò vuol dire che nella
matrice dei coefficienti esistono colonne linearmente indipendenti e da essa si può estrarre
una sottomatrice quadrata di ordine m*m.
Le soluzioni che si possono ottenere sono di due diversi tipi:
∗ soluzioni ammissibili, ovvero soluzioni che verificano tutti i vincoli; sono infinite.
∗ soluzioni di base; in tal caso è necessario verificare che siano un sottoinsieme delle
soluzioni ammissibili. Queste soluzioni sono in numero di:
n!
m!⋅(n − m)!
All’interno delle soluzioni di base è possibile rintracciare la soluzione ottima semplicemente
sostituendo le k soluzioni base nella funzione obiettivo e individuando quella che fra tutte la rende
minima.
Partendo sempre dal presupposto che il problema sia ben posto, analizziamo di seguito la procedura
per il calcolo delle soluzioni di base.
Si definisce inizialmente un insieme s, detto insieme degli indici di base, del tipo:
s = {s1 , s 2 , s 3 ........., s m }
Data la matrice dei coefficienti A, si individuano le colonne linearmente indipendenti e, di volta in
volta, si estraggono da A delle sottomatrici di ordine m*m costituite, appunto, solo dalle colonne
indipendenti. Il vettore delle variabili decisionali può essere visto scomposto in due sottovettori, di
cui uno che contiene le variabili di base e uno contenete le variabili non di base. La stessa cosa si fa
per la matrice A, vista come l’insieme di due matrici costituite, una dalle colonne linearmente
indipendenti, e l’altra dalle rimanenti colonne. Per chiarire il concetto si riportano i seguenti schemi
indicativi:
⎡ x1 ⎤
⎢x ⎥
xs = ⎢ 2 ⎥
⎢ : ⎥
⎢ ⎥
⎣x m ⎦
⎡ x m+1 ⎤
⎢x
⎥
m+ 2 ⎥
⎢
xg =
Variabili non di base
⎢ : ⎥
⎢
⎥
⎣ xn ⎦
Variabili di base
⎡
⎢
⎢
A=⎢
⎢
⎢
⎢⎣
Matrice dei coefficienti
As
Ag
⎤
⎥
⎥
⎥
⎥
⎥
⎥⎦
Il problema di ottimizzazione nella forma standard diventa, quindi il seguente:
min z( x )
⎧
⎪ z( x ) = C T ⋅ x = C C
s
g
⎪
⎪ Sistema
di
vincoli
⎪
x
⎡ s⎤
⎨A
A g ⋅ ⎢ ⎥ = [s]
⎪ s
⎣x g ⎦
⎪
⎪x s ≥ 0
xg ≥ 0
⎪
⎩
[
[
]
]
Per trovare le soluzioni di base basta risolvere il seguente sistema:
As ⋅ xs + Ag ⋅ x g = b
A s −1 ⋅ A s ⋅ x s + A s−1 ⋅ A g ⋅ x g = A s−1 ⋅ b
Se si pone la condizione che le variabili non di base sono nulle, si ottiene:
x s = A s −1 ⋅ b
SOLUZIONI DI BASE
La soluzione di base è ammissibile se e solo se soddisfa il sistema di vincoli del problema.
Innanzitutto si procede alla determinazione del numero di soluzioni di base esistenti per il problema
in esame:
n!
8!
=
= 28
m!⋅(n − m)! 6!⋅(8 − 6)!
A partire dalla matrice dei coefficienti A, si estraggono delle sottomatrici di ordine m*m costituite
da colonne linearmente indipendenti (determinante delle sottomatrici diverso da zero). Le variabili
che non appartengono all’insieme degli indici di base sono le variabili non di base x g che vengono
poste pari a zero. Il sistema diventa quindi risolvibile, poiché il numero di equazioni è in tal modo
proprio pari al numero delle incognite. In ultima analisi si procede alla verifica dell’ammissibilità
delle soluzioni accertando il soddisfacimento delle condizioni di vincolo originarie del problema.
Per il caso in esame, uno degli insiemi degli indici di base è il seguente:
s = {1,2,3,4,5,6}
Per cui le variabili non di base sono x 7 e x 8 .
Il determinante della sottomatrice estratta dalla matrice A dei coefficienti, quindi, è costituita dalle
colonne 1,2,3,4,5 e 6 ; esse risultano linearmente indipendenti come si può verificare dal calcolo del
determinante :
4 −1 0 0
⎡ 3
⎢ 2
4
0 −1 0
⎢
⎢ 3
5
0 0 −1
As = ⎢
⎢110 170 0 0 0
⎢ 1
0
0 0 0
⎢
1
0 0 0
⎣⎢ 0
0⎤
0⎥⎥
0⎥
⎥
1⎥
0⎥
⎥
0⎦⎥
Per cui il vettore delle soluzioni è il seguente:
⎡ 24 ⎤
⎢ 24 ⎥
⎢
⎥
⎢ 72 ⎥
⎢
⎥
24 ⎥
⎢
x=
⎢ 92 ⎥
⎢
⎥
⎢− 1720⎥
⎢ 0 ⎥
⎢
⎥
⎣⎢ 0 ⎦⎥
det(A s ) = −1
Come è facilmente verificabile, sostituendo i valori delle variabili così ricavati nelle equazioni che
costituiscono il sistema di vincoli, la soluzione trovata è ammissibile.
Evidentemente si dovrebbero calcolare tutte le possibili soluzioni di base e sostituirle nella funzione
obiettivo. La soluzione che ne consentirà la minimizzazione sarà quella ottima.
Calcolo delle soluzioni di base di un problema di programmazione lineare
Dopo aver analizzato nel dettaglio le caratteristiche principali di un problema di programmazione
lineare, la sua formulazione e la procedura risolutiva, si vuole riportare un ulteriore esempio in cui,
dato un sistema di vincoli, estrapolati da un problema lineare, si vogliono determinare le soluzioni
di base.
2x 1 + 2 x 2 + x 3 + x 4 = 10
⎧
⎪ 2 x + 2 x + x + x + x = 12
⎪
1
2
3
4
5
⎨
4x 1 + x 2 + 2 x 3 + 3x 4 = 8
⎪
⎪⎩x 1 ≥ 0; x 2 ≥ 0; x 3 ≥ 0; x 4 ≥ 0; x 5 ≥ 0
Si definisce la matrice dei coefficienti A:
⎡ 2 2 1 1 0⎤
A = ⎢⎢2 2 1 1 1⎥⎥
⎢⎣4 1 2 3 0⎥⎦
Le soluzioni di base sono,quindi, in numero di:
n!
5!
=
= 10
m!⋅(n − m)! 3!⋅(5 − 3)!
Il vettore dei termini noti b è uguale a:
⎡10⎤
b = ⎢⎢12⎥⎥
⎢⎣ 8 ⎥⎦
Si sceglie come primo passo il seguente insieme degli indici di base:
s = {2,3,5}
Per cui la matrice di colonne linearmente indipendenti sarà:
⎡ 2 1 0⎤
A s = ⎢⎢1 1 1⎥⎥
⎢⎣1 2 0⎥⎦
det(A s ) = −3
Per cui le variabili non di base, poste pari a zero, saranno x 1 e x 4
Il sistema di partenza, fatte le precedenti assunzioni, risulta :
x2 = 4
⎧ 2x 2 + x 3 = 10
⎪
⎨x 2 + x 3 + x 5 = 12 ⇒ x 3 = 2
⎪ x + 3x = 8
x5 = 6
2
3
⎩
Il vettore delle soluzioni sarà:
⎡0⎤
⎢ 4⎥
⎢ ⎥
x = ⎢ 2⎥
⎢ ⎥
⎢0⎥
⎢⎣5⎥⎦
Il vettore precedente è ammissibile perché rispetta tutti i vincoli di positività delle variabili imposti
dal problema.
Si procede, quindi, al calcolo di una seconda soluzione scegliendo il seguente insieme di indici di
base:
s = {3,4,5}
Per cui la matrice di colonne linearmente indipendenti sarà:
⎡1 1 0 ⎤
A s = ⎢⎢1 1 1⎥⎥
⎢⎣2 3 0⎥⎦
det(A s ) = −1
Il vettore delle soluzioni risulta così fatto:
⎡ 0 ⎤
⎢ 0 ⎥
⎥
⎢
x = ⎢ 22 ⎥
⎥
⎢
⎢− 12⎥
⎢⎣ 14 ⎥⎦
Come è possibile vedere dai valori assunti dalle variabili, in questo caso la soluzione non è
ammissibile perché non vengono rispettati tutti i vincoli di positività.
Interpretazione geometrica di un problema di programmazione lineare
La soluzione geometrica di un problema lineare è teoricamente sempre calcolabile; tuttavia occorre
tener presente l’impossibilità di rappresentare graficamente un problema con più di tre variabili.
Prima di procedere con la risoluzione di una serie di esempi, occorre fornire dei concetti introduttivi
e delle definizioni preliminari.
Si definisce una combinazione convessa x, la seguente combinazione lineare di vettori :
x = λ1 ⋅ x (1) + λ 2 ⋅ x ( 2) + λ3 ⋅ x (3) + ........... + λk ⋅ x ( k ) dove
x (1) , x ( 2) , x (3) ,......x ( k ) ∈ ℜ n
k
∑ λi = 1
0 ≤ λi ≤ 1
i =1
Allo stesso modo si definisce un insieme convesso Ω tale che i vettori x (i ) ad esso appartenenti
abbiano combinazione lineare ancora in Ω .
Ω ∈ ℜn è
convesso ⇔ x (1) , x ( 2) , x (3) ,......x ( k ) ∈ Ω
k
∑ λi = 1
0 ≤ λi ≤ 1
x = λ1 ⋅ x
(1)
i =1
+ λ 2 ⋅ x ( 2) + λ3 ⋅ x (3) + ........... + λk ⋅ x ( k )
∈Ω
Si definisce, quindi l’insieme delle soluzioni ammissibili come l’intersezione fra due insiemi:
Ω = Ωi ∩ Ω j
{
= {x ∈ ℜ
Ωi = x ∈ ℜn : a i ⋅ x i = bi
Ωj
n
}
}
:x ≥0
In particolare Ωi è un insieme a cui appartengono tutti i vettori x che soddisfano la condizione
a i ⋅ x i = b i ; a i è il vettore riga della matrice dei coefficienti di vincolo che compaiono nella forma
standard del problema.
Ω j è invece l’insieme di tutti gli x che soddisfano la condizione di positività imposta nella
formulazione standard del problema di p.l.
Infine si definisce punto estremo x appartenente all’insieme Ω la combinazione lineare di n vettori
xi che rappresenta una soluzione ammissibile del problema.
In definitiva il procedimento logico che è alla base della risoluzione grafica di un problema di
programmazione lineare è il seguente:
1. individuare l’insieme Ω ;
2. verificare che Ω non sia un insieme vuoto ( Ω ≠ 0 );
3. individuare i punti estremi di Ω ;
4. ricercare la soluzione ottima.
Esempio
Risolvere il graficamente il problema di programmazione lineare con la seguente forma standard:
⎧z ( x ) = x 1 + 2 ⋅ x 2
⎪
min z( x )
⎪
⎪
S.V.
⎪
⎪ x 1 + 2x 2 ≤ 10
⎪
⎨ x1 + x 2 ≥ 1
⎪
x2 ≤ 4
⎪
x1 ≥ 0
⎪
⎪
x2 ≥ 0
⎪
⎪⎩
Ogni equazione di vincolo viene rappresentata come una retta su un diagramma cartesiano:
∗
r1 ⇒ x1 + 2x 2 = 10 ;
∗
r2 ⇒ x1 + x 2 = 1 ;
∗
r3 ⇒ x 2 = 4 ;
∗
r4 ⇒ x1 = 0 ;
∗
r5 ⇒ x 2 = 0
RAPPRESENTAZIONE GRAFICA DEI VINCOLI
16
14
12
X2
10
r1
r2
r3
8
6
E
D
4
2
A
C
0
-10
-5
0
B
5
X1
10
15
I punti A, B, C, D, ed E che delimitano il dominio Ω ne rappresentano, quindi, i suoi punti
estremi. Le coordinate di tali punti sono le seguenti:
∗ A(0,1)
∗ B(1,0)
∗ C(10,0)
∗ D(2,4)
∗ E(0,4)
Si procede sostituendo i valori assunti dai punti estremi, le cui coordinate sono proprio x1 e x2, nella
funzione z(x) che si intende minimizzare. Per cui si ottiene:
∗
zA = 2
∗
zB = 1
∗
z C = 10
∗
z D = 10
∗
zE = 8
Il punto estremo del dominio che minimizza la funzione obiettivo è B; pertanto esso risulta essere
soluzione ottima del problema.
Graficamente è possibile determinare la soluzione ottima facendo alcune considerazioni sul
gradiente del vettore dei coefficienti di x1 e x2. Per il caso in questione il vettore C è il seguente:
⎡1 ⎤
C=⎢ ⎥
⎣ 2⎦
Si procede, quindi, rappresentando sullo stesso diagramma cartesiano, precedentemente riportato, il
vettore C, e si individua fra le rette ortogonali alla direzione del gradiente, passanti per i punti
estremi, la retta più bassa.