Scilab – polinomi e matrici

Dopo l’intro e aver visto come usare Scilab per fare un grafico oggi racconterò di come usarlo per fare calcoli. Scilab adora contare e allora via con i calcoli.

Intanto sto ancora imparando ma è disponibile tutto quello che serve, anzi molto di più. Parecchi documenti si trovano a Scilab Wiki. In particolare Tutorials and documentations dove c’è, tra un mucchio di altre cose, Programming in Scilab di Michaël Baudin.

A p.22 introduce i polinomi. Seguendolo definiamo un polinomio in funzione delle sue radici 1 e 2: p(x) = (x-1)(x-2) con

p = poly([1,2], "x")

Si può definire il polinomio in funzione dei suoi coefficienti (in ordine crescente): q(x) = 1 + 2x sarà

q = poly([1,2], "x", "coeff")

A questo punto i polinomi si possono sommare, sottrarre, moltiplicare:

-->m = p * q
 m  =

              2    3
    2 + x - 5x + 2x   

-->

Per valutare il valore del polinomio in un dato punto si usa horner. Ecco, niente panico!, un po’ di sano terrorismo matematico, qui su wikipedia, ma con Scilab niente panico!

:-->p = poly([1,2], "x")
p  =

          2
2 - 3x + x

-->horner(p, [0 1 2 3])
ans  =

2.    0.    0.    2.

che sono, ovviamente, i valori per x = 0, 1, 2, 3. Quindi dimenticate la pagina di wiki: con Scilab i calcoli (noiosi e (dai) astrusi) li fa lui.

roots ci da le radici, verifica:

-->p = poly([1,2,3,4,5], "x")
 p  =

                     2     3     4   5
  - 120 + 274x - 225x + 85x - 15x + x   

-->roots(p)
 ans  =

    1.
    2.
    3.
    4.
    5.    

OK, viso che funziona

-->p = poly([1,2,3,4,5], "x", "coeff")
 p  =

               2    3    4
    1 + 2x + 3x + 4x + 5x   

-->roots(p)
 ans  =

    0.1378323 + 0.6781544i
    0.1378323 - 0.6781544i
  - 0.5378323 + 0.3582847i
  - 0.5378323 - 0.3582847i  

numeri brutticomplessi, ma ecco:

-->t = poly([24, -50, 35, -10, 1], "x", "coeff")
 t  =

                  2     3   4
    24 - 50x + 35x - 10x + x   

-->roots(t)
 ans  =

    1.
    2.
    3.
    4.  

Scilab è sempre più simpatico 😀
Uno (cioè a dire il vero io, fino a un istante fa) potrebbe pensare che Scilab tratti solo matrici bidimensionali: falso, c’è l’ipermatrice (hypermatrix)

This feature is familiar to Fortran developers, where the multi-dimensional array is one of the basic data structures.

Quindi la volta scorsa ho detto una cosa non vera: chiedo venia ma mi verrebbe voglia di dare la colpa al Fortran 😦

A p.51 di progscilab si inizia a parlare delle funzioni. Potrebbe essere l’argomento di un prossimo post, forse…

Posta un commento o usa questo indirizzo per il trackback.

Commenti

  • Vittorio  Il 16 gennaio 2011 alle 22:27

    Scilab effettivamente è versatile e comodissimo da usare, io lo impiegai per la tesi di laurea sui materiali compositi. E poi ha una virtù non da poco: è gratuito 😀

Trackback

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Google photo

Stai commentando usando il tuo account Google. Chiudi sessione /  Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

Connessione a %s...

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.

%d blogger hanno fatto clic su Mi Piace per questo: