///////////////////////////////////////////////////////////////////////////////////////////// // Title: A SCILAB Crash Course // Author: Prof. Ing. Gabriele Baldi // Link: gabriele.baldi [AT] tin.it // Date of Release: 24 february 2008 // This stuff is released under Creative Commons "Attribution Non-Commercial (by-nc)" licence ///////////////////////////////////////////////////////////////////////////////////////////// -->a=1 //real constant a = 1. -->1==1 //boolean ans = T -->b=3 //real constant b = 3. -->a+b //OPERATORI ans = 4. -->c=a+b c = 4. -->a-b ans = - 2. -->a^b ans = 1. -->c=a+b --> NO ANSWER !!! -->x=poly(0,'x') // polynomial with variable 'z' and with one root at zero => variabile simbolica x = x -->help poly // esempio di help => leggere l'help di poly (quadre = opzionale, etc...) -->poly([1 2],"x") ans = 2 2 - 3x + x -->poly([1 2],"x","coeff") ans = 1 + 2x -->poly([1 2 3],"x","coeff") ans = 2 1 + 2x + 3x -->x=poly(0,"x") x = x -->f=1+x^2 f = 2 1 + x -->g=(1+x^2)/(2 - 3*x + x^2) //rational g = 2 1 + x --------- 2 2 - 3x + x // RISOLVERE LE EQUAZIONI.... -->p=poly([0,10,1+%i,1-%i],'x'); -->roots(p) -->u=[1 4 5 6] // VETTORI e MATRICI u = ! 1. 4. 5. 6. ! -->v=[1 4 5 6]' // TRASPOSTO DI RIGA = COLONNA v = ! 1. ! ! 4. ! ! 5. ! ! 6. ! -->u*v // PRODOTTO SCALARE (1+16+25+36=78) ans = 78. -->a=v*u // PRODOTTO MATRICIALE a = ! 1. 4. 5. 6. ! ! 4. 16. 20. 24. ! ! 5. 20. 25. 30. ! ! 6. 24. 30. 36. ! // ALBRECT DURER (proiettare file "dürer.doc") durer = [16 3 2 13; 5 10 11 8; 9 6 7 12; 4 15 14 1] durer = ! 16. 3. 2. 13. ! ! 5. 10. 11. 8. ! ! 9. 6. 7. 12. ! ! 4. 15. 14. 1. ! -->sum(durer,'c') ans = ! 34. ! ! 34. ! ! 34. ! ! 34. ! -->sum(durer,'r') ans = ! 34. 34. 34. 34. ! -->diag(durer) ans = ! 16. ! ! 10. ! ! 7. ! ! 1. ! -->sum(diag(durer)) ans = 34. // Cancellare righe e colonne -->s(:,1)=[] s = ! 3. 2. 13. ! ! 10. 11. 8. ! ! 6. 7. 12. ! ! 15. 14. 1. ! -->a(:,1) // colonna 1 della matrice a ans = ! 1. ! ! 4. ! ! 5. ! ! 6. ! -->1 ./ v // DIVISIONE "puntuale" (scalare/vettore) ans = ! 1. ! ! 0.25 ! ! 0.2 ! ! 0.1666667 ! -->v=[1:2:10] // STEP BY STEP v = ! 1. 3. 5. 7. 9. ! -->x=[0:0.1:1] // non solo interi x = ! 0. 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1. ! -->[%pi %e %i %inf %t %f] // alcune "costanti" predefinite ans = ! 3.1415927 2.7182818 i Inf T F! // funzioni predefinite -->rand() // distribuzione uniforme tra 0 e 1; congruenziale-moltiplicativo y=(m*x+q) mod n, x=seed ans = 0.7560439 -->abs(-7) // |x|=abs(x) ans = 7. -->sin(%pi/2) ans = 1. -->tan(%pi/4) ans = 1. // MIA FUNZIONE esempio di definizione da linea di comando: --> function [x]=segno(y) --> if y>0 then, x=1; else, x=-1; end --> endfunction -->segno(-11) ans = - 1. // UN PO' DI GRAFICA... -->histplot(20,rand(1,10000,'normal')) // 10000 numeri in distribuz gaussiana (mean=0, variance=1), 20 classi -->histplot(50,rand(1,100000,'normal')) // 100000 numeri in distribuz gaussiana (mean=0, variance=1), 50 classi -->histplot(500,rand(1,100000,'normal')) // 100000 numeri in distribuz gaussiana (mean=0, variance=1), 500 classi // TENDE A GAUSSIANA !!! -->time = 0:.01:20; -->size(time) ans = ! 1. 2001. ! -->plot(sin(time)); -->help sin // vedo le opzioni di plot // FILES .SCI --> scipad INSERIRE QUESTO // questa e' una linea di commento // file .sci per plottare una onda sinusoidale time = 0:.01:20; plot(sin(time)); e salvare col nome di prova.sci -->exec('prova.sci') -->pwd // Where I am? -->who // VARIABILI=? // SAVE & LOAD // salvano lo spazio delle variabili definite in un file -->save('pippo.dat') IL COSTRUTTO FOR (Fibonacci) -->f(1)=1; -->f(2)=1; -->for i=3:10 -->f(i)=f(i-1)+f(i-2); -->end -->f f = ! 1. ! ! 1. ! ! 2. ! ! 3. ! ! 5. ! ! 8. ! ! 13. ! ! 21. ! ! 34. ! ! 55. ! -->f(10)/f(9) ans = 1.6176471 -->(1+sqrt(5))/2 ans = 1.618034 // abbiamo trovato PHI all'1 per mille circa in sole 10 iterazioni!!! // possiamo trovare PHI con un errore minore di 1 ppm in sole 20 iterazioni... // Fibo_n+1/Fibo_n calcola 1 decimale di sqrt(5) ogni 3 iterazioni circa!!!! // Teorema. Fibo_n+1/Fibo_n tende a PHI indipendentemente da Fibo_1 e Fibo_2 // PROIETTARE il file "Tutorial Rapido su Scilab.pdf" // e fare l'esempio del PLOT -->t = 0: %pi/100 :2*%pi ; -->y = sin(t); -->plot(t,y); -->y1 = cos(t); -->plot(t,y1); // I GRAFICI SI SOVRAPPONGONO => utile per confronti //Fare infine i 4 esempi dei quadretti (in "Tutorial Rapido su Scilab.pdf") sui costrutti IF, FOR, WHILE, SELECT // THE END