9. Notiuni de Scilab - apar.pub.ro · Notiuni de Scilab 9.1. ... între 0 si 1 rand ones Matrice ce...
Transcript of 9. Notiuni de Scilab - apar.pub.ro · Notiuni de Scilab 9.1. ... între 0 si 1 rand ones Matrice ce...
9. Notiuni de Scilab
9.1. Funcţii Scilab de baza
9.1.1. Comenzi de intrare
a) Click pe
Start->Programs->Scilab
9.1.1. Comenzi de intrare
b) Dublu click peScilab icon pe desktop
c) etc.
9.1.2. Fereastra Scilab principala
9.1.3. Comenzi de iesire
a) --> quit
b) --> exit
c) click pe
9.1.4. Functia help
a) --> help plot
b) --> apropos plot
c) click pe …
d) click pe …
9.1.5. Definirea unei matrice
--> A=[1 2 3;2 1 3;3 3 3]
A =! 1. 2. 3. !! 2. 1. 3. !! 3. 3. 3. !
-->A=[ 1 2 3-->2 1 3-->3 3 3 ]
A =! 1. 2. 3. !! 2. 1. 3. !! 3. 3. 3. !
--> B=[2 1 3 5];--> B
B =! 2. 1. 3. 5. !
--> C=1:5
C =! 1. 2. 3. 4. 5. !
9.1.5. Definirea unei matrice - continuare
Matrice diagonalădiag
Matrice cu elemente nule, cu exceptia diagonalei principale ce contine elemente unitate
eye
Matrice cu elemente aleatoare, uniform distribuite, cuprinse între 0 si 1
rand
Matrice ce contine doar elemente unitateones
Matrice ce contine doar elemente nulezeros
9.1.6. Funcţii de analiză matriceală
Calculează urma unei matrice sau suma elementelor de pe diagonala principală
trace
Calculează inversa unei matrice inv
Calculează determinantul unei matricedet
Numărul de conditionare al unei matricecond
DescriereFunctie
Not a number%nan
Infinit%inf
2.7182818 …%e
Precizia relativă în virgulă mobilă 2.22.10-16%eps
sqrt(-1)%i
3.14159265...%pi
9.1.7. Constante predefinite
Transpusa neconjugată complex.’
Ridicare la putere element cu element.^
Împărtire la stânga element cu element.\
Împărtire la dreapta element cu element./
Înmultire element cu element.*
Pentru ordinea operatiilor( )
Transpusa complex conjugată’
Ridicare la putere^
Împărtire la stânga\
Împărtire la dreapta/
Înmultire*
Scădere-
Adunare+
OperatieOperator
9.1.8. Operatii de baza cu matrice
9.1.9. Operatori relationali
Diferit de~ =
Egal cu= =
Mai mare sau egal cu>=
Mai mare decât>
Mai mic sau egal cu<=
Mai mic decât<
DescriereOperator
9.1.10. Operatori logici
Negatie logica~
Sau logic|
Si logic&
DescriereOperator
9.2. Funcţii Scilab de reprezentare grafica
9.2.1. Reprezentarea graficelor 2D
TrasareTrasarex = 0:%pi/100:2*%pi;y = sin(x);plot2d(x, y);
9.2.1. Reprezentarea graficelor 2D - continuare
EtichetareEtichetare sisi gridgridxtitle('graficul functiei sinus', 'timp', 'sinus')xgrid(2)
culoarea gridului
9.2.1. Reprezentarea graficelor 2D - continuare
TrasareaTrasarea functiilorfunctiilor multiple multiple pepe acelasiacelasi graficgraficx=[0:0.1:2*%pi]';plot2d(x, [sin(x) sin(2*x) sin(3*x)]);
9.2.2. Reprezentarea suprafetelor - continuare
TrasareaTrasarea graficuluigraficului functieifunctiei sin(x)cos(ysin(x)cos(y) in ) in intervalulintervalul [[--pi,pipi,pi]]t=(t=(--%pi:0.1:%pi); plot3d(t, t, %pi:0.1:%pi); plot3d(t, t, sin(tsin(t)'*)'*cos(tcos(t), 35, 45, 'X@Y@Z');), 35, 45, 'X@Y@Z');
9.2.1. Reprezentarea suprafetelor - continuare
TrasareaTrasarea graficuluigraficului functieifunctiei sin(x)cos(ysin(x)cos(y) in ) in intervalulintervalul [[--pi,pipi,pi]]t=(t=(--%pi:0.1:%pi); plot3d1(t, t, %pi:0.1:%pi); plot3d1(t, t, sin(tsin(t)'*)'*cos(tcos(t), 35, 45, 'X@Y@Z');), 35, 45, 'X@Y@Z');
9.2.1. Reprezentarea graficelor 2D - continuare
TrasareaTrasarea functieifunctiei sin(x)cos(ysin(x)cos(y) in ) in intervalulintervalul [[––pi,pipi,pi]]h2=hotcolormap(512);h2=hotcolormap(512);
xset('colormap',h2(100:$,:));xset('colormap',h2(100:$,:));
t=(t=(--%pi:%pi:0.30.3:%pi);:%pi);plot3d1plot3d1(t, t, (t, t, sin(tsin(t)'*)'*cos(tcos(t), 35, 45, 'X@Y@Z');), 35, 45, 'X@Y@Z');
9.3. Notiuni de programare Scilab
9.3.1. Fisiere de tip *.sci sau *.sce
-Fisierele de tip *.sci sau *.sce sunt fisiere ce contin secvente de instructiuni Scilab executate succesiv si pot fi de tip script sau de tip function
FisiereFisiere de tip scriptde tip script-Fisierele de tip script pot apela fisiere de tip function -Fisierele de tip script nu pot fi apelate de alte fisiere de tip script sau de altefisiere de tip function
FisiereFisiere de tip functionde tip function-Sunt fisiere care spre deosebire de fisierele script admit parametri de intrare
- Sintaxa unui fisier de tip function este :
functionfunction [par_iesire1, par_iesire2 ...] = nume_funcnume_functtieie(par_intrare1, par_intrare2 ...)...
endfunctionendfunction
- Dupa executia instructiunilor, nu raman in memorie decat variabilele de iesire- Fisierele de tip function pot sa nu aiba parametrii de iesire sau de intrare
scripttest.sciscripttest.scia=input('Introduceti un numar: ');b=floor(a)^2
lansare in executie
-->exec('D:\scilab\scripttest.sci');
-->a=input('Introduceti un numar: ');Introduceti un numar: -->2-->b=floor(a)^2
b =4.
ftest.sceftest.scefunction [a]=ftest(x)a=real(x) - %i*imag(x);endfunction
lansare in executie
--> exec('D:\scilab\ftest.sce');--> [a] = ftest(2+%i)
a = 2. - i
9.3.1. Fisiere de tip *.sci sau *.sce - exemple
9.3.2. Crearea fisierelor de tip *.sci sau *.sce
- Folosind Scipad - la versiuni recente de Scilab
- Folosind editoare externe Notepad, WordPad cu salvarea fisieruluiin format text
- Fisierele trebuiesc salvate cu extensia .sci sau .sce
9.3.3. Instructiuni de control logic – instructiunea if
SintaxaSintaxaif expresie_logica1 then
instructiuni1elseif expresie_logica2 then
instructiuni2else
instructiuni3end
ExempluExemplua=3;b=3;if a>b then
disp('a este mai mare decât b')elseif b>a then
disp('b este mai mare ca a')else
disp(‘a este egal cu b')end
a este egal cu b
Instructiunea then poate lipsi daca instructiuni1, 2, 3 se scriu pe linii separate
9.3.3. Instructiuni de control logic – instructiunea for
SintaxaSintaxafor index = start:increment:end
instrucţiuni end
ExempluExemplufor i = 1:0.1:1.5
a = iend
a =
1.a =
1.1a =
1.2a =
1.3a =
1.4a =
1.5
9.3.3. Instructiuni de control logic – instructiunea while
SintaxaSintaxawhile expresie_logica
instructiuni end
ExempluExemplun = 1;while prod(1:n) < 10
n = n + 1end
n =2.
n =3.
n =4.
9.3.3. Instructiuni de control logic – instructiunea select
SintaxaSintaxaselect expresie
case expresie1 theninstructiuni1
case expresie2 theninstructiuni2
elseinstructiuni3
end
ExempluExemplun = 1;select n
case 1 thendisp('n este egal cu 1')
case 2 thendisp('n este egal cu 2')
elsedisp('n este diferit de 1 si 2')
end
n este egal cu 1
Stiind ca y(0)=0, sa se rezolve pe intervalul [0, 0.2], urmatoarea ecuatie diferentiala:2.y + 0.013.(dy/dt) =312.sin(314.t)
Pas 1: Se exprima dy/dt = fun(t, y)yp = dy/dt = 312/0.013*sin(314*t)-2/0.013*y
Pas 2: Se defineste functia fun(t, y)--> deff("[yp]=fun(t, y)","yp=312/0.013*sin(314*t)-2/0.013*y");
Pas 2 alternativ: Se defineste si se incarca fisierul de tip functie fun.sci
--> exec('fun.sci') sau getf('fun.sci')
Pas 3: Se calculeaza si se ploteaza functia necunoscuta y(t)--> t0=0; t=0:0.0001:0.2; y0=0; --> y=ode(y0, t0, t, fun);--> plot(t, y);--> xgrid(2)--> xtitle('Curentul de sccurtcircuit al unui transformator', 'timp [s]', 'i1k [A]')
9.4. Rezolvarea ecuatiilor diferentiale
9.4.1. Ecuatii diferentiale de ordinul I - exemplu
function yp = fun(t, y) yp=312/0.013*sin(314*t)-2/0.013*y;
endfunction
fun.sci
9.4.1. Ecuatii diferentiale de ordinul I - exemplu