ml - Introduzione interattiva di MATLAB       Vai all'indice del corso

Trattamento dei polinomi
Versione 0.7

Indice del modulo

1pol.00 - Polinomi
1pol.01 - Polinomi e vettori
1pol.03 - Quadro delle operazioni su polinomi
1pol.10 - Calcolo di un valore assunto da un polinomio
1pol.12 - Somma di polinomi dello stesso grado
1pol.13 - Somma di polinomi di gradi diversi
1pol.14 - Differenza di polinomi
1pol.15 - Moltiplicazione di un numero per un polinomio
1pol.18 - Prodotto di polinomi e function conv
1pol.19 - Quoziente e resto di polinomi e function deconv
1pol.30 - Derivazione di un polinomio
1pol.32 - Integrazione analitica di un polinomio
1pol.40 - Polinomi ed equazioni algebriche
1pol.41 - Determinazione delle radici di un polinomio
1pol.42 - Polinomio con date radici e function root
1pol.45 - Polinomio con date radici
1pol.52 - Calcolo delle radici di un polinomio di secondo grado
1pol.54 - Calcolo delle radici di un polinomio di quarto grado
1pol.56 - Approssimazione per le radici di un polinomio

torna all'indice del modulo - del corso

1pol.00 - Polinomi

I polinomi sono entita` matematiche che si possono studiare in diversi modi (come funzioni, come entita` algebriche e come espressioni), che sono relativamente semplici da trattare (sia con calcoli numerici che con calcoli simbolici) e che hanno molteplici applicazioni (all'interno della matematica, nella fisica, nella statistica,...).

Si possono considerare polinomi di una o piu` variabili e queste a loro volta possono essere sia reali che complesse. In questo modulo consideriamo solo polinomi di una variabile.

I polinomi in una variabile x sono entita` date da espressioni della forma

a0 xn + a1 xn-1 + . . . + an-1 x + an

dove sia i coefficienti ai (per i=0, 1, ..., n) che la variabile x possono essere complessi. In effetti accade che per molte questioni e` opportuno considerare polinomi nel campo complesso, cioe` polinomi con coefficienti e variabile complessi. Per semplicita` cominceremo a considerare polinomi nel campo reale, con coefficienti e variabile reali; successivamente considereremo anche polinomi nel campo complesso.

torna all'indice del modulo - del volume

1pol.01 - Polinomi e vettori

Consideriamo dunque i polinomi come funzioni particolarmente semplici e che, in particolare, possono essere utilizzati per approssimare altre funzioni piu` impegnative da studiare e da calcolare.

MATLAB consente di operare sui polinomi di una variabile rappresentandoli mediante le sequenze dei coefficienti delle potenze decrescenti della variabile. Il polinomio precedente viene rappresentato mediante il vettore riga, del tipo 1 x (n+1) formato dai coefficienti delle potenze decrescenti della variabile

[a0 , a1 , . . . . . , an-1 , an].

Il contenuto informativo di un polinomio di grado n equivale a quello di una sequenza numerica di n+1 componenti.

In MATLAB entrambe le entita` sono rappresentate da vettori riga. Su queste semplici strutture di dati si possono definire moltissime operazioni; alcune di queste possono essere utilmente interpretate come operazioni su polinomi.

torna all'indice del modulo - del volume

1pol.03 - Quadro delle operazioni su polinomi

Nel quadro che segue sono indicate varie functions ed operatori che MATLAB mette a disposizione per agire sui polinomi.

polyval valuta un polinomio per un valore della variabile;
+ applicato a due vettori simili fornisce la somma dei relativi polinomi;
- applicato a due vettori simili fornisce la sottrazione dei relativi polinomi;
conv calcola il prodotto di due polinomi;
deconv calcola resto e quoziente di due polinomi;
polyder applicata ad un polinomio fornisce il vettore del suo polinomio derivato;
polyint applicata ad un polinomio fornisce il vettore del suo polinomio primitivo;
roots applicata ad un polinomio fornisce il vettore delle sue radici (in generale complesse);
poly applicata ad un vettore fornisce il polinomio che ha per radici le componenti del vettore.
Segnaliamo anche che applicata ad una matrice M quadrata n x n questa function da` il suo polinomio caratteristico, cioe` il determinante della matrice (M-x*ones(n)) (v.o.).

torna all'indice del modulo - del volume

1pol.10 - Calcolo di un valore assunto da un polinomio

Calcola il valore assunto dal polinomio p1 := x3 - 2x - 5  per x = 5.

>> p1 = [1 0 -2 -5];
>> polyval(p,5)
ans = 
   110 

torna all'indice del modulo - del volume

1pol.12 - Somma di polinomi dello stesso grado

L'addizione di polinomi in MATLAB si puo` chiedere solo per polinomi dello stesso grado. Questa operazione sostanzialmente coincide con la somma di vettori (riga) aventi lo stesso numero di componenti, cioe` relativi allo stesso numero di dimensioni.

Chiedi la somma dei polinomi p1 e p2 := 4x3 + x - 6.

>> p2 = [4 0 1 -6];
p1+p2
ans =
   51   03   18  - 12

torna all'indice del modulo - del volume

1pol.13 - Somma di polinomi di gradi diversi

Cerca di sommare il polinomio di terzo grado p1 := x3 - 2x - 5 con quello di quinto grado p3 = 2x5 + 4x3 + x2 - 6.

>> p3 = [2 0 4 1 0 -6]; 
>> p1+p3 
??? Error using ==> +
Matrix dimensions must agree.
>> 

Si puo` ovviare a questa difficoltà trasformando formalmente il polinomio p1 nel polinomio di quinto grado 0x5 + x3 - 2x - 5.

Trasforma p1 in un polinomio di grado superiore e successivamente addizionalo al polinomio p3.

>> p1 = [0, 0, p1]
p1 =
     0     1     0     2    -3    -5
>> p1 + p3
ans =
     1      1    1    13    28  - 12

torna all'indice del modulo - del volume

1pol.14 - Differenza di polinomi

Calcola ora la differenza p1 - p3.

>> p1 - p3
ans =
    21    01    31   -1     -2    18

torna all'indice del modulo - del volume

1pol.15 - Moltiplicazione di un numero per un polinomio

Il prodotto di un polinomio per uno scalare (prodotto esterno) è il polinomio i cui coefficienti si ottengono da quelli del polinomio di partenza moltiplicando ciascuno di essi per lo scalare. Con MATLAB esso si ottiene, prevedibilmente, moltiplicando il vettore riga del polinomio per lo scalare.

Moltiplica per 5 il polinomio ans, ossia conv(p1,p2).

>> 5*ans
ans =
   -105     0   -15   -50   - 10   -5 

Osserviamo che i polinomi possono essere combinati linearmente, cioe` che si comportano come vettori.

torna all'indice del modulo - del volume

1pol.18 - Prodotto di polinomi e function conv

Il prodottodi due polinomi si ottiene applicando la function conv ai vettori che forniscono i due fattori.Calcola il polinomio prodotto di p1 = x4 -2x3 +3x -5  e  p2 = x5 -x3 +5x2 + 5x + 3.

>> q1 = [1 0 -2 3 -5] , q2 = [1 0 -1 5 5 3] 
q1 =
     1     0    -2     3    -5
q2 =
     1     0    -1     5     5     3
>> q12 = conv(p1, p2)
q12 =
     1     0    -3     8     2   -10    10   -16   -16   -15

L'identificatore di function conv ricorda l'operazione di convoluzione discreta.

torna all'indice del modulo - del volume

1pol.19 - Quoziente e resto di polinomi e function deconv

Quoziente e resto di due polinomi si ottengono applicando la function deconv ai vettori corrispondenti. Verifichiamolo con due polinomi visti in precedenza.

>>  [q r] = deconv(q12,q1)
q =
      1     0    -1     5     5     3      
r =
      0     0     0     0     0     0     0                 0

torna all'indice del modulo - del volume

1pol.30 - Derivazione di un polinomio e function polyder

Calcola il polinomio derivato di 2x5 +3x4 -x2 +3x -4.

>> polyder([2 3 0 -1 3 -4])
ans =
    10    12    0    -2     3

torna all'indice del modulo - del volume

1pol.32 - Integrazione analitica di un polinomio e function polyint

Calcola il polinomio ottenuto integrando quello trovato in precedenza fissando in -2 la costante additiva di integrazione.

>> polyint(ans,-2)
ans =
    20    32    0    12         -23

La function polyint si puo` utilizzare con il solo primo argomento; in questo caso si intende che la costante di integrazione sia 0.

torna all'indice del modulo - del volume

1pol.40 - Polinomi ed equazioni algebriche

Per radici di un polinomio p(x) si intendono le soluzioni dell'equazione polinomiale p(x)=0, cioe` i valori, reali o complessi xi costituiscono gli zeri della fuzione di variabile complessa p(x): p(x) = 0 sse x=xi.

Per i polinomi vale il cosiddetto teorema fondamentale dell'algebra:
Ogni polinomio di grado n possiede esattamente n radici nel campo complesso (qualora esse siano conteggiate tenendo conto della loro molteplicita`).

Un polinomio con coefficienti reali puo` avere meno di n radici reali. Quindi in relazione alle radici conviene considerare i polinomi nel campo complesso; in effetti i numeri complessi sono stati introdotti per poter studiare nelle migliori condizioni le radici dei polinomi.

Accade inoltre che un polinomio puo` essere presentato convenientemente nella forma
a0(x-r1)(x-r2)...(x-rn)
dove gli rhsono le sue radici (in generale complesse e non necessariamente diverse). Un polinomio con il coefficiente a0 della potenza massima della variabile uguale ad 1 si dice polinomio monico.

torna all'indice del modulo - del volume

1pol.41 - Determinazione delle radici di un polinomio

La determinazione esatta delle radici di un polinomio risulta semplice solo per i polinomi piu` semplici. Essa e` banale per quelli lineari; si ottiene con una notissima espressione per i polinomi quadratici; le radici dei polinomi di terzo e quarto grado possono calcolarsi con espressioni piuttosto complicate note come formule di Cardano. Si dimostra invece che non esistono invece formule valide per tutti i polinomi di grado superiore al quarto.

Il computer consente invece di approssimare le radici di tutti i polinomi. La cosa e` agevole quando si tratta di radici reali che si sanno collocare in intervalli non tropo estesi. Spesso pero` la determinazione approssimata delle radici di un polinomio costituisce un problema numerico delicato.

Osserviamo anche che un polinomio con coefficienti reali puo` possedere solo radici reali e coppie di radici complesse che sono numeri complessi coniugati.

torna all'indice del modulo - del volume

1pol.42 - Polinomio con date radici e function root

Note le radici di un polinomio e` quasi immediato trovare la sua espressione nelle potenze della variabile. Occorre pero` osservare che le radici determinano il polinomio solo a meno di una costante moltiplicativa, la a0 dell'espressione come prodotto di polinomi lineari e` del tutto arbitraria.

La function che, a partire dalla rappresentazione mediante potenze di un polinomio p(x), fornisce le sue radici è roots. La function che associa ad una sequenza finita di numeri (posti in un vettore colonna) il polinomio monico che li ammette come radici è poly

torna all'indice del modulo - del volume

1pol.45 - Polinomio con date radici

Trova il polinomio monico che ammette come radici 1, 2, 3, -2+3i, -2-3i.

>> Rdc=[1 2 3 -2+3i -2-3i]'
Rdc =
   1.0000          
   2.0000          
   3.0000          
  -2.0000 - 3.0000i
  -2.0000 + 3.0000i
>>  Plnm=poly(Rdc)
Plnm =
     1    -2     0   -40   119   -78

torna all'indice del modulo - del volume

1pol.52 - Calcolo delle radici di un polinomio di secondo grado

Calcola le radici del polinomio x2 + 1.

>> Pol1=[1 0 1];
>> Rad1=roots(Pol1)
Rad1 =
   1.0000i
  -1.0000i

Si osservi che il polinomio è implementato con un vettore riga, mentre le radici sono poste in un vettore colonna.

torna all'indice del modulo - del volume

1pol.54 - Calcolo delle radici di un polinomio di quarto grado

Calcola le radici del polinomio x4 - 2x3 - 7x2 + 2x - 8.

>> Pol2=[1 -2 -7 2 -8];
>> Rad2=roots(Pol2)
Rad2 =
   3.8325          
  -2.2388          
   0.2031 + 0.9440i
   0.2031 - 0.9440i5+17

torna all'indice del modulo - del volume

1pol.56 - Approssimazione per le radici di un polinomio

Se la function poly dovesse trovare un coefficiente del polinomio molto prossimo a 0, ad esempio di valore assoluto minore di 10-10, potrebbe trattarsi di un errore di approssimazione; per correggere tale coefficiente si può usare il comando della forma: matrice( abs(matrice) < 1 e-10)=0 .

Considerare le approssimazioni per le radici del polinomio x4 - 5x3 - 7x + 13.

>> format short g
>> Pl=[1 -5 0 -7 13];
>> Rt=roots(Pl)
Rt =
      15.027              
     -0.4155 +    0.95057i
     -0.4155 -    0.95057i
     0.80383              
>> Plr=poly(Rt)
Plr =
            1          -15  2.4869e-014           -7           13
>> Plr(abs(Plr)<1e-10)=0
Plr =
            1          -15            0           -7           13

torna all'indice del modulo - del volume