C onsórtes s Cilab C onsórtes s Cilab C onsórtes s Cilab C onsórtes s Cilab [632214]

www.scilab.org
C onsórtes s Cilab C onsórtes s Cilab C onsórtes s Cilab C onsórtes s Cilab
Domeniul Voluceau – Rocquencourt – BP 105-78153 Le Chesnay Cedex Fran•aINTRODUCERE ÎN Scilab

Acest document a fost scris de Michaël Baudin de la Scilab Consortium. © Noiembrie 2010 Scilab
Consortium – Digiteo. Toate drepturile rezervate.

noiembrie 2010
Abstract
În acest document, vom face o prezentare generală a Scilab caracteristici, astfel încât să putem
ob•ine familiariza•i cu acest mediu. Scopul este de a prezenta miez de abilită•i necesare pentru a începe ob•ine familiariza•i cu acest mediu. Scopul este de a prezenta miez de abilită•i necesare pentru a începe ob•ine familiariza•i cu acest mediu. Scopul este de a prezenta miez de abilită•i necesare pentru a începe
cu Scilab. În partea fi prima, vom prezenta cum să ob•ine•i •i să instala•i acest software pe calculatorul
nostru. De asemenea, vom prezenta cum să ob•ine•i ajutor cu prevăzute în-linie de documentare •i de
asemenea, datorită resurselor web •i forumuri. În sec•iunile rămase, prezentăm limbajul Scilab, în ​​special
caracteristicile sale de programare structurate. Prezentăm o caracteristică importantă a Scilab, care este
gestionarea matricelor reale •i prezentarea generală a bibliotecii algebra liniara. De defini•ie a func•iilor •i
managementul elementar al variabilelor de intrare •i de ie•ire este prezentat. Va prezentam caracteristicile
grafice Scilab •i arată cum să crea•i un complot 2D, cum să con fi gure titlul •i legenda •i modul de a
exporta acel complot într-un format vectorial sau bitmap.
cuprins
1 Prezentare generală 5
1.1 Introducere . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1 Introducere . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2 Privire de ansamblu asupra Scilab . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Privire de ansamblu asupra Scilab . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3 Cum se ob•ine •i instala Scilab . . . . . . . . . . . . . . . . . . . . . . . 1.3 Cum se ob•ine •i instala Scilab . . . . . . . . . . . . . . . . . . . . . . . 6
1.3.1 Instalarea Scilab sub Windows . . . . . . . . . . . . . . . . . 1.3.1 Instalarea Scilab sub Windows . . . . . . . . . . . . . . . . . 7
1.3.2 Instalarea Scilab sub Linux . . . . . . . . . . . . . . . . . . 1.3.2 Instalarea Scilab sub Linux . . . . . . . . . . . . . . . . . . 7
1.3.3 Instalarea Scilab sub Mac OS . . . . . . . . . . . . . . . . . 1.3.3 Instalarea Scilab sub Mac OS . . . . . . . . . . . . . . . . . 8
1.4 Cum se ob•ine ajutor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.4 Cum se ob•ine ajutor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.5 liste de discu•ii, rapoarte wiki •i bug . . . . . . . . . . . . . . . . . . . . 1.5 liste de discu•ii, rapoarte wiki •i bug . . . . . . . . . . . . . . . . . . . . 9
1.6 Ob•inerea de ajutor de la demonstra•ii Scilab •i macro-uri . . . . . . . . . 10 1.6 Ob•inerea de ajutor de la demonstra•ii Scilab •i macro-uri . . . . . . . . . 10
1.7 Exerci•ii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.7 Exerci•ii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2 Ini•iere 11
2.1 Consola . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.1 Consola . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.2 Editorul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.2 Editorul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.3 andocare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2.3 andocare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.4 Utilizarea Exec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.4 Utilizarea Exec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.4 Utilizarea Exec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.4 Utilizarea Exec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.4 Utilizarea Exec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.4 Utilizarea Exec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.4 Utilizarea Exec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.4 Utilizarea Exec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.4 Utilizarea Exec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.4 Utilizarea Exec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.4 Utilizarea Exec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.4 Utilizarea Exec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.4 Utilizarea Exec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.4 Utilizarea Exec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.4 Utilizarea Exec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.4 Utilizarea Exec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.4 Utilizarea Exec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.4 Utilizarea Exec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.4 Utilizarea Exec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.4 Utilizarea Exec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.4 Utilizarea Exec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.4 Utilizarea Exec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.4 Utilizarea Exec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.4 Utilizarea Exec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.4 Utilizarea Exec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.4 Utilizarea Exec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.4 Utilizarea Exec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.4 Utilizarea Exec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.4 Utilizarea Exec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.4 Utilizarea Exec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.4 Utilizarea Exec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.4 Utilizarea Exec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.4 Utilizarea Exec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.4 Utilizarea Exec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.4 Utilizarea Exec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
procesare 2.5 Lot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 procesare 2.5 Lot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.6 Exerci•ii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 2.6 Exerci•ii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1

3 elemente de bază ale limbii 20
3.1 Crearea de variabile reale . . . . . . . . . . . . . . . . . . . . . . . . . . 20 3.1 Crearea de variabile reale . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.2 Numele de variabile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 3.2 Numele de variabile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.3 Comentarii •i continuarea liniilor . . . . . . . . . . . . . . . . . . . . 22 3.3 Comentarii •i continuarea liniilor . . . . . . . . . . . . . . . . . . . . 22
3.4 Func•ii matematice elementare . . . . . . . . . . . . . . . . . . . 22 3.4 Func•ii matematice elementare . . . . . . . . . . . . . . . . . . . 22
3.5 Pre-de fi variabile matematice nite . . . . . . . . . . . . . . . . . . . 22 3.5 Pre-de fi variabile matematice nite . . . . . . . . . . . . . . . . . . . 22
3.6 Booleans . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 3.6 Booleans . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.7 Numere complexe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 3.7 Numere complexe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.8 Întregi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 3.8 Întregi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.8.1 Prezentare generală a numerelor întregi . . . . . . . . . . . . . . . . . . . . . . . 25 3.8.1 Prezentare generală a numerelor întregi . . . . . . . . . . . . . . . . . . . . . . . 25
3.8.2 conversii între numere întregi . . . . . . . . . . . . . . . . . . 26 3.8.2 conversii între numere întregi . . . . . . . . . . . . . . . . . . 26
3.8.3 numere întregi circulară •i portabilitate . . . . . . . . . . . . . 27 3.8.3 numere întregi circulară •i portabilitate . . . . . . . . . . . . . 27
3.9 numere întregi în virgulă mobilă . . . . . . . . . . . . . . . . . . . . . . . . . . 28 3.9 numere întregi în virgulă mobilă . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.10 an variabil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 3.10 an variabil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 3.10 an variabil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 3.10 an variabil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.11 •iruri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 3.11 •iruri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.12 tip dinamic variabilelor . . . . . . . . . . . . . . . . . . . . . . . . 30 3.12 tip dinamic variabilelor . . . . . . . . . . . . . . . . . . . . . . . . 30
3.13 Exerci•ii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.13 Exerci•ii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
4 Matrici 31
4.1 Prezentare generală . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 4.1 Prezentare generală . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.2 Crearea unei matrice de valori reale . . . . . . . . . . . . . . . . . . . . . . 32 4.2 Crearea unei matrice de valori reale . . . . . . . . . . . . . . . . . . . . . . 32
4.3 Matricea goală [] . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 4.3 Matricea goală [] . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.4 matrici de interogare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 4.4 matrici de interogare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.5 Accesarea elementelor unei matrice . . . . . . . . . . . . . . . . . . . 34 4.5 Accesarea elementelor unei matrice . . . . . . . . . . . . . . . . . . . 34
4.6 două puncte „:“ Operatorul . . . . . . . . . . . . . . . . . . . . . . . . . . 35 4.6 două puncte „:“ Operatorul . . . . . . . . . . . . . . . . . . . . . . . . . . 35
4.7 ochi matrice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 4.7 ochi matrice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 4.7 ochi matrice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 4.7 ochi matrice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
4.8 Matrici sunt dinamice . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 4.8 Matrici sunt dinamice . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.9 dolar „$“ operatorul . . . . . . . . . . . . . . . . . . . . . . . . . . 39 4.9 dolar „$“ operatorul . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.10 opera•ii de nivel scăzut . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 4.10 opera•ii de nivel scăzut . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.11 opera•iuni Elementwise . . . . . . . . . . . . . . . . . . . . . . . . . . 41 4.11 opera•iuni Elementwise . . . . . . . . . . . . . . . . . . . . . . . . . . 41
4.12 Conjugat •i transpusa transpusa non-conjugat . . . . . . . . . . . 42 4.12 Conjugat •i transpusa transpusa non-conjugat . . . . . . . . . . . 42
4.13 Multiplicarea doi vectori . . . . . . . . . . . . . . . . . . . . . . . 43 4.13 Multiplicarea doi vectori . . . . . . . . . . . . . . . . . . . . . . . 43
4.14 Compararea a două matrici reale . . . . . . . . . . . . . . . . . . . . . . . 44 4.14 Compararea a două matrici reale . . . . . . . . . . . . . . . . . . . . . . . 44
4.15 Probleme cu numere întregi punct de fl flotante . . . . . . . . . . . . . . . . . . . . 45 4.15 Probleme cu numere întregi punct de fl flotante . . . . . . . . . . . . . . . . . . . . 45
4.16 Mai multe despre func•iile elementare . . . . . . . . . . . . . . . . . . . . . . 46 4.16 Mai multe despre func•iile elementare . . . . . . . . . . . . . . . . . . . . . . 46
4.17 nivel superior caracteristici algebra liniară . . . . . . . . . . . . . . . . . . . 48 4.17 nivel superior caracteristici algebra liniară . . . . . . . . . . . . . . . . . . . 48
4.18 Exerci•ii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 4.18 Exerci•ii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
5 Looping •i ramificarea 49
5.1 dacă afirma•ie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 5.1 dacă afirma•ie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 5.1 dacă afirma•ie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 5.1 dacă afirma•ie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
5.2 Selecta•i afirma•ie . . . . . . . . . . . . . . . . . . . . . . . . . . 50 5.2 Selecta•i afirma•ie . . . . . . . . . . . . . . . . . . . . . . . . . . 50 5.2 Selecta•i afirma•ie . . . . . . . . . . . . . . . . . . . . . . . . . . 50 5.2 Selecta•i afirma•ie . . . . . . . . . . . . . . . . . . . . . . . . . . 50
5.3 pentru afirma•ie . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 5.3 pentru afirma•ie . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 5.3 pentru afirma•ie . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 5.3 pentru afirma•ie . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
5.4 in timp ce afirma•ie . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 5.4 in timp ce afirma•ie . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 5.4 in timp ce afirma•ie . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 5.4 in timp ce afirma•ie . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
5.5 pauză •i continua declarații . . . . . . . . . . . . . . . . . . 54 5.5 pauză •i continua declarații . . . . . . . . . . . . . . . . . . 54 5.5 pauză •i continua declarații . . . . . . . . . . . . . . . . . . 54 5.5 pauză •i continua declarații . . . . . . . . . . . . . . . . . . 54 5.5 pauză •i continua declarații . . . . . . . . . . . . . . . . . . 54 5.5 pauză •i continua declarații . . . . . . . . . . . . . . . . . . 54
2

6 Func•ii 55
6.1 Prezentare generală . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 6.1 Prezentare generală . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
6.2 De fi nare o func•ie . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 6.2 De fi nare o func•ie . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
6.3 Biblioteci . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 6.3 Biblioteci . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
6.4 Gestionarea argumente de ie•ire . . . . . . . . . . . . . . . . . . . . . . . 61 6.4 Gestionarea argumente de ie•ire . . . . . . . . . . . . . . . . . . . . . . . 61
6.5 niveluri în stiva de apel . . . . . . . . . . . . . . . . . . . . . . . . . . 62 6.5 niveluri în stiva de apel . . . . . . . . . . . . . . . . . . . . . . . . . . 62
6.6 întoarcere afirma•ie . . . . . . . . . . . . . . . . . . . . . . . . . . 63 6.6 întoarcere afirma•ie . . . . . . . . . . . . . . . . . . . . . . . . . . 63 6.6 întoarcere afirma•ie . . . . . . . . . . . . . . . . . . . . . . . . . . 63 6.6 întoarcere afirma•ie . . . . . . . . . . . . . . . . . . . . . . . . . . 63
6.7 Func•ii Debugging cu pauză . . . . . . . . . . . . . . . . . . . . . 64 6.7 Func•ii Debugging cu pauză . . . . . . . . . . . . . . . . . . . . . 64 6.7 Func•ii Debugging cu pauză . . . . . . . . . . . . . . . . . . . . . 64 6.7 Func•ii Debugging cu pauză . . . . . . . . . . . . . . . . . . . . . 64 6.7 Func•ii Debugging cu pauză . . . . . . . . . . . . . . . . . . . . . 64 6.7 Func•ii Debugging cu pauză . . . . . . . . . . . . . . . . . . . . . 64 6.7 Func•ii Debugging cu pauză . . . . . . . . . . . . . . . . . . . . . 64 6.7 Func•ii Debugging cu pauză . . . . . . . . . . . . . . . . . . . . . 64 6.7 Func•ii Debugging cu pauză . . . . . . . . . . . . . . . . . . . . . 64 6.7 Func•ii Debugging cu pauză . . . . . . . . . . . . . . . . . . . . . 64 6.7 Func•ii Debugging cu pauză . . . . . . . . . . . . . . . . . . . . . 64 6.7 Func•ii Debugging cu pauză . . . . . . . . . . . . . . . . . . . . . 64 6.7 Func•ii Debugging cu pauză . . . . . . . . . . . . . . . . . . . . . 64 6.7 Func•ii Debugging cu pauză . . . . . . . . . . . . . . . . . . . . . 64 6.7 Func•ii Debugging cu pauză . . . . . . . . . . . . . . . . . . . . . 64 6.7 Func•ii Debugging cu pauză . . . . . . . . . . . . . . . . . . . . . 64 6.7 Func•ii Debugging cu pauză . . . . . . . . . . . . . . . . . . . . . 64 6.7 Func•ii Debugging cu pauză . . . . . . . . . . . . . . . . . . . . . 64 6.7 Func•ii Debugging cu pauză . . . . . . . . . . . . . . . . . . . . . 64 6.7 Func•ii Debugging cu pauză . . . . . . . . . . . . . . . . . . . . . 64 6.7 Func•ii Debugging cu pauză . . . . . . . . . . . . . . . . . . . . . 64 6.7 Func•ii Debugging cu pauză . . . . . . . . . . . . . . . . . . . . . 64 6.7 Func•ii Debugging cu pauză . . . . . . . . . . . . . . . . . . . . . 64 6.7 Func•ii Debugging cu pauză . . . . . . . . . . . . . . . . . . . . . 64
7 Trasarea 66
7.1 Prezentare generală . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 7.1 Prezentare generală . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
7.2 complot 2D ……………………………. 66
7.3 Reprezentările contur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 7.3 Reprezentările contur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
7.4 Titluri, axe •i legende . . . . . . . . . . . . . . . . . . . . . . . . . 71 7.4 Titluri, axe •i legende . . . . . . . . . . . . . . . . . . . . . . . . . 71
7.5 Export . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 7.5 Export . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
8 Note •i referin•e 74
9 Recunoasteri 75
10 Răspunsuri la exerci•ii 76
10.1 Răspunsuri pentru sec•iunea 1.7 . . . . . . . . . . . . . . . . . . . . . . . . . . 76 10.1 Răspunsuri pentru sec•iunea 1.7 . . . . . . . . . . . . . . . . . . . . . . . . . . 76
10.2 Răspunsuri pentru sec•iunea 2.6 . . . . . . . . . . . . . . . . . . . . . . . . . . 76 10.2 Răspunsuri pentru sec•iunea 2.6 . . . . . . . . . . . . . . . . . . . . . . . . . . 76
10.3 Răspunsuri pentru sec•iunea 3.13 . . . . . . . . . . . . . . . . . . . . . . . . . 79 10.3 Răspunsuri pentru sec•iunea 3.13 . . . . . . . . . . . . . . . . . . . . . . . . . 79
10.4 Răspunsuri pentru sec•iunea 4.18 . . . . . . . . . . . . . . . . . . . . . . . . . 82 10.4 Răspunsuri pentru sec•iunea 4.18 . . . . . . . . . . . . . . . . . . . . . . . . . 82
Referin•e 83
Index 84
3

Copyright c © 2008-2010 – Consor•iul Scilab – Digiteo – Michael Baudin Acest fi lul trebuie să fie utilizate © 2008-2010 – Consor•iul Scilab – Digiteo – Michael Baudin Acest fi lul trebuie să fie utilizate
în conformitate cu termenii Creative Commons AttributionShareAlike 3.0 Unported License:
http://creativecommons.org/licenses/by-sa/3.0
4

1 Prezentare generală
În această sec•iune, vom prezenta o imagine de ansamblu a Scilab. Subsec•iunea fi prima introduce proiectul
open source asociat cu crearea acestui document. Apoi, vom prezenta software-ul, licen•a •i aspectele •tiin•i fi
de Scilab. În al treilea subsec•iune, vom descrie metodele pentru a descărca •i instala Scilab pe Windows,
GNU / Linux •i Mac sisteme de operare. În subcapitolele rămase, vom descrie diverse surse de informa•ii
necesare atunci când avem de a ob•ine ajutor de la Scilab sau de la al•i utilizatori. Vom descrie built-in
paginile de ajutor •i să analizeze listele de discu•ii •i wiki, care sunt disponibile on-line. În cele din urmă, vom
lua un moment să se uite la demonstra•iile care sunt prevăzute cu Scilab.
1.1 Introducere
Acest document este un proiect open-source. L A Sursele TEX sunt disponibile pe Scilab Forge: Acest document este un proiect open-source. L A Sursele TEX sunt disponibile pe Scilab Forge: Acest document este un proiect open-source. L A Sursele TEX sunt disponibile pe Scilab Forge:
http://forge.scilab.org/index.php/p/docintrotoscilab/
L A Sursele TEX sunt furnizate în conformitate cu termenii Creative Commons AttributionShareAlike 3.0 Unported L A Sursele TEX sunt furnizate în conformitate cu termenii Creative Commons AttributionShareAlike 3.0 Unported L A Sursele TEX sunt furnizate în conformitate cu termenii Creative Commons AttributionShareAlike 3.0 Unported
License:
http://creativecommons.org/licenses/by-sa/3.0
Script-urile Scilab sunt furnizate pe Forge, în cadrul proiectului, în cadrul script-uri Script-urile Scilab sunt furnizate pe Forge, în cadrul proiectului, în cadrul script-uri
sub-director. Script-urile sunt disponibile sub licen•ă CeCILL:
http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
1.2 Privire de ansamblu asupra Scilab
Scilab este un limbaj de programare asociat cu o colec•ie bogată de algoritmi numerici care acoperă multe
aspecte ale problemelor •tiin•ific c de calcul.
Din punct de vedere al software-ului, Scilab este o interpretat limba. Acest lucru, în general, permite de a Din punct de vedere al software-ului, Scilab este o interpretat limba. Acest lucru, în general, permite de a Din punct de vedere al software-ului, Scilab este o interpretat limba. Acest lucru, în general, permite de a
ob•ine procesele de dezvoltare mai rapid, deoarece utilizatorul accesează direct un limbaj de nivel înalt, cu un
set bogat de caracteristici oferite de bibliotecă. Limbajul Scilab este menit să fie extinsă, astfel încât fi de
utilizator tipuri de date pot fi nite de definit, cu opera•iuni, eventual, supraîncărcat. Utilizatorii Scilab pot
dezvolta propriile module, astfel încât acestea să poată rezolva problemele lor specifice. Limbajul Scilab
permite compilarea dinamic •i se leagă de alte limbi, cum ar fi Fortran •i C: în acest fel, bibliotecile externe pot fi
folosite ca •i în cazul în care acestea au fost o parte din Scilab built-in. Scilab interfe•e, de asemenea,
LabVIEW, un mediu de dezvoltare pentru platforma si un limbaj de programare vizual de la National
Instruments.
Din punct de vedere de licen•ă, Scilab este un software gratuit, în sensul că utilizatorul nu plăte•te pentru
ea •i Scilab este un software open source, cu condi•ia sub licen•ă [CeCILL 2 ]. Software-ul este distribuit cu ea •i Scilab este un software open source, cu condi•ia sub licen•ă [CeCILL 2 ]. Software-ul este distribuit cu ea •i Scilab este un software open source, cu condi•ia sub licen•ă [CeCILL 2 ]. Software-ul este distribuit cu
codul sursă, astfel încât utilizatorul are acces la aspectele cele mai interne Scilab lui. Cele mai multe ori, de
utilizator descarcă •i instalează o versiune binară de Scilab, deoarece consor•iul Scilab prevede pentru
Windows,
5

Linux •i Mac OS versiuni executabile. ajutor online este oferit în mai multe limbi locale.
Din punctul de •tiin•i fi c de vedere, Scilab vine cu multe caracteristici. Chiar la începutul Scilab,
caracteristici s-au axat pe algebra liniara. Dar, rapid, numărul de caracteristici extinse pentru a acoperi mai
multe domenii de calcul •tiin•ific c. Următoarea este o listă scurtă de capacită•ile sale:
•algebra liniară, matrici rare,
•Polinoame •i func•ii ra•ionale,
•Interpolarea, aproximare,
•Liniară, pătratică •i optimizare non liniar,
•Ordinară Di ff Solver Ecua•ia erential •i Di ff erential algebrice Ecua•ii Solver,
•Controlul clasic •i robust, optimizare liniara Matrix Inegalitate,
•Di ff erentiable •i optimizare erentiable non-di ff,
•Procesare a semnalului,
•Statistici.
Scilab oferă multe caracteristici grafice, inclusiv un set de func•ii plotare, care permit crearea unor
parcele 2D •i 3D precum •i interfe•e de utilizator. Mediul Xcos oferă sisteme dinamice modelator hibride •i
simulator.
1.3 Cum se ob•ine •i instala Scilab
Oricare ar fi platforma este (de exemplu, Windows, Linux sau Mac), binarele Scilab pot fi descărcate direct de
pe pagina Scilab
http://www.scilab.org
sau din zona de descărcare
http://www.scilab.org/download
binarele Scilab sunt prevăzute pentru ambele platforme 32 •i 64 de bi•i, astfel încât să se potrivească cu ma•ina de
instalare •intă.
Scilab poate fi, de asemenea, descărcate în format sursă, astfel încât să pute•i compila Scilab de unul singur •i de
a produce propriul binar. Alcătuirea Scilab •i generarea unui binar este deosebit de interesant atunci când vrem să
în•elegem sau depana o caracteristică existentă, sau când dorim să adăuga•i o caracteristică nouă. Pentru a compila
Scilab, unele premise binare fi le sunt necesare, care sunt, de asemenea, prevăzute în centru descărcare. Mai mult
decât atât, un Fortran •i un compilator C sunt necesare. Compilarea Scilab este un proces care nu vor fi detaliate în
continuare în acest document, pentru că acest capitol este consacrată, în principal comportamentul extern al Scilab.
6

Figura 1: consola Scilab sub Windows.
1.3.1 Instalarea Scilab sub Windows
Scilab este distribuit ca un binar Windows •i un program de instalare este prevăzut astfel încât instalarea este
foarte u•or. Consola Scilab este prezentat în fi gure 1 . Mai multe se pot face comentarii cu privire la acest proces foarte u•or. Consola Scilab este prezentat în fi gure 1 . Mai multe se pot face comentarii cu privire la acest proces foarte u•or. Consola Scilab este prezentat în fi gure 1 . Mai multe se pot face comentarii cu privire la acest proces
de instalare.
Pe Windows, în cazul în care aparatul este bazat pe un procesor Intel, kernel-ul Biblioteca Intel Math
(MKL) [ 7 ] Permite Scilab să efectueze calcule numerice mai rapid. (MKL) [ 7 ] Permite Scilab să efectueze calcule numerice mai rapid. (MKL) [ 7 ] Permite Scilab să efectueze calcule numerice mai rapid.
1.3.2 Instalarea Scilab sub Linux
Sub Linux, versiunile binare sunt disponibile pe site-ul Scilab ca. tar.gz Fi les. Nu este nevoie de un program Sub Linux, versiunile binare sunt disponibile pe site-ul Scilab ca. tar.gz Fi les. Nu este nevoie de un program Sub Linux, versiunile binare sunt disponibile pe site-ul Scilab ca. tar.gz Fi les. Nu este nevoie de un program
de instalare cu Scilab sub Linux: pur •i simplu, dezarhivează fi lul într-un director •intă. Odată terminat, FI
binar Le este situat în < path> / scilab- binar Le este situat în < path> / scilab-
5.xx / bin / Scilab. Atunci când acest script este executat, consola imediat apare •i arată exact la fel ca •i pe 5.xx / bin / Scilab. Atunci când acest script este executat, consola imediat apare •i arată exact la fel ca •i pe
Windows.
Observa•i că Scilab este, de asemenea, distribuit cu sistemul de ambalare disponibil cu distribu•ii Linux
bazate pe Debian (de exemplu, Ubuntu). Această metodă de instalare este extrem de simplu •i e ciente FFI.
Cu toate acestea, ea are un dezavantaj mic: versiunea de Scilab ambalate pentru distribu•ie Linux nu poate fi
de până la zi. Acest lucru se datorează faptului că există o oarecare întârziere (de la câteva săptămâni la
câteva luni) între disponibilitatea o versiune actualizată a Scilab sub Linux •i eliberarea sa în distribu•ii Linux.
Deocamdată, Scilab vine pe Linux cu o bibliotecă binară algebră liniară care garantează portabilitate.
Sub Linux, Scilab nu vine cu o versiune binară de ATLAS [ 1 ], Astfel încât algebra liniară este un pic mai lent Sub Linux, Scilab nu vine cu o versiune binară de ATLAS [ 1 ], Astfel încât algebra liniară este un pic mai lent Sub Linux, Scilab nu vine cu o versiune binară de ATLAS [ 1 ], Astfel încât algebra liniară este un pic mai lent
pentru acea platformă, în compara•ie cu Windows.
7

1.3.3 Instalarea Scilab sub Mac OS
Sub Mac OS, versiunile binare sunt disponibile pe site-ul Scilab ca. dmg fi lul. Acest binar func•ionează pentru Sub Mac OS, versiunile binare sunt disponibile pe site-ul Scilab ca. dmg fi lul. Acest binar func•ionează pentru Sub Mac OS, versiunile binare sunt disponibile pe site-ul Scilab ca. dmg fi lul. Acest binar func•ionează pentru
versiunile Mac OS incepand de la versiunea 10.5. Acesta utilizează programul de instalare Mac OS, care oferă un
proces de instalare clasic. Scilab nu este disponibil pe sistemele de alimentare PC.
Scilab versiunea 5.2 pentru Mac OS vine cu o bibliotecă Tcl / Tk, care este dezactivat din motive tehnice.
În consecin•ă, există unele limitări mici privind utilizarea Scilab pe această platformă. De exemplu, interfa•a
Scilab / Tcl (TclSci), editorul grafic •i editorul variabilă nu func•ionează. Aceste caracteristici vor fi rescrise în
Java, în versiunile viitoare ale Scilab •i aceste limitări vor dispărea.
Cu toate acestea, folosind Scilab pe un sistem de operare Mac este u•or, •i utilizează shortcut-urile care sunt
familiare utilizatorilor acestei platforme. De exemplu, consola •i editorul folosi tasta Cmd (tasta Apple), care se
găse•te pe tastaturi Mac. Mai mult decât atât, nu există nici un clic dreapta pe această platformă. În schimb, Scilab
este sensibil la evenimentul tastatură Control-clic.
Pentru moment, Scilab vine pe Mac OS, cu o bibliotecă de algebră liniară, care este optimizat •i
garantează portabilitate. Sub Mac OS, Scilab nu vine cu o versiune binară de ATLAS [ 1 ], Astfel încât algebra garantează portabilitate. Sub Mac OS, Scilab nu vine cu o versiune binară de ATLAS [ 1 ], Astfel încât algebra garantează portabilitate. Sub Mac OS, Scilab nu vine cu o versiune binară de ATLAS [ 1 ], Astfel încât algebra
liniară este un pic mai lent pentru acea platformă.
1.4 Cum se ob•ine ajutor
Cel mai simplu mod de a ob•ine ajutor on-line integrate pentru a Scilab este de a utiliza func•ia
Ajutor. Figura 2 prezintă fereastra de ajutor Scilab. Pentru a utiliza această func•ie, pur •i simplu tasta•i“ Ajutor “În Ajutor. Figura 2 prezintă fereastra de ajutor Scilab. Pentru a utiliza această func•ie, pur •i simplu tasta•i“ Ajutor “În Ajutor. Figura 2 prezintă fereastra de ajutor Scilab. Pentru a utiliza această func•ie, pur •i simplu tasta•i“ Ajutor “În Ajutor. Figura 2 prezintă fereastra de ajutor Scilab. Pentru a utiliza această func•ie, pur •i simplu tasta•i“ Ajutor “În Ajutor. Figura 2 prezintă fereastra de ajutor Scilab. Pentru a utiliza această func•ie, pur •i simplu tasta•i“ Ajutor “În Ajutor. Figura 2 prezintă fereastra de ajutor Scilab. Pentru a utiliza această func•ie, pur •i simplu tasta•i“ Ajutor “În
consolă •i apăsa•i <Enter> cheie, la fel ca în următoarea sesiune. consolă •i apăsa•i <Enter> cheie, la fel ca în următoarea sesiune.
Ajutor
Să presupunem că vrei ceva ajutor suplimentar privind optim funcție. A•i putea încerca să răsfoi•i ajutor Să presupunem că vrei ceva ajutor suplimentar privind optim funcție. A•i putea încerca să răsfoi•i ajutor Să presupunem că vrei ceva ajutor suplimentar privind optim funcție. A•i putea încerca să răsfoi•i ajutor
integrat, găsim sec•iunea de optimizare •i apoi face•i clic pe optim integrat, găsim sec•iunea de optimizare •i apoi face•i clic pe optim
element pentru a afi•a ajutorul acestuia.
O altă posibilitate este de a utiliza func•ia Ajutor, urmată de numele func•iei, pentru care este necesară O altă posibilitate este de a utiliza func•ia Ajutor, urmată de numele func•iei, pentru care este necesară O altă posibilitate este de a utiliza func•ia Ajutor, urmată de numele func•iei, pentru care este necesară
ajutor, la fel ca în următoarea sesiune.
ajutor Optim
Scilab se deschide automat intrarea asociată în ajutor.
Putem folosi, de asemenea, ajutorul oferit pe site-ul web Scilab
http://www.scilab.org/product/man
Această pagină con•ine întotdeauna de ajutor pentru versiunea actualizată a Scilab. Prin utilizarea func•iei
de „căutare“ a browser-ul web meu, eu pot cele mai multe ori rapid Fi nd pagina de ajutor am nevoie. Cu
această metodă, pot vedea paginile de ajutor pentru comenzile mai multe Scilab în acela•i timp (de exemplu,
comenzile derivat •i optim, comenzile derivat •i optim, comenzile derivat •i optim, comenzile derivat •i optim,
astfel încât să pot oferi func•ia de cost adecvat pentru optimizarea cu optim calculând cu instrumente derivate astfel încât să pot oferi func•ia de cost adecvat pentru optimizarea cu optim calculând cu instrumente derivate astfel încât să pot oferi func•ia de cost adecvat pentru optimizarea cu optim calculând cu instrumente derivate
derivat).
O listă de căr•i comerciale, căr•i gratuite, tutoriale •i articole online este prezentat pe pagina Scilab:
http://www.scilab.org/publications
8

Figura 2: fereastra de ajutor Scilab.
1.5 liste de discu•ii, rapoarte wiki •i bug
Lista de discu•ii users@lists.scilab.org este proiectat pentru toate întrebările de utilizare Scilab. Pentru a vă abona la această Lista de discu•ii users@lists.scilab.org este proiectat pentru toate întrebările de utilizare Scilab. Pentru a vă abona la această Lista de discu•ii users@lists.scilab.org este proiectat pentru toate întrebările de utilizare Scilab. Pentru a vă abona la această
listă de coresponden•ă, trimite un e-mail la users-subscribe@lists.scilab.org. Lista de discu•ii dev@lists.scilab.org se listă de coresponden•ă, trimite un e-mail la users-subscribe@lists.scilab.org. Lista de discu•ii dev@lists.scilab.org se listă de coresponden•ă, trimite un e-mail la users-subscribe@lists.scilab.org. Lista de discu•ii dev@lists.scilab.org se listă de coresponden•ă, trimite un e-mail la users-subscribe@lists.scilab.org. Lista de discu•ii dev@lists.scilab.org se listă de coresponden•ă, trimite un e-mail la users-subscribe@lists.scilab.org. Lista de discu•ii dev@lists.scilab.org se
concentrează pe dezvoltarea de Scilab, fie că este vorba de dezvoltarea Scilab de bază sau de module complicate, care
interac•ionează profund cu Scilab miez. Pentru a vă abona la această listă de coresponden•ă, trimite un e-mail la dev-subscribe@lists.scilab.org. interac•ionează profund cu Scilab miez. Pentru a vă abona la această listă de coresponden•ă, trimite un e-mail la dev-subscribe@lists.scilab.org.
Aceste liste de discu•ii sunt arhivate la:
http://dir.gmane.org/gmane.comp.mathematics.scilab.user
•i:
http://dir.gmane.org/gmane.comp.mathematics.scilab.devel
De aceea, înainte de a pune o întrebare, utilizatorii ar trebui să ia în considerare caută în arhiva dacă aceea•i
întrebare sau subiect a fost deja răspuns.
O întrebare postată pe lista de discu•ii pot fi legate de un punct de vedere tehnic fi c foarte specific, astfel încât
este nevoie de un răspuns care nu este suficient de general pentru a fi publice. Adresa scilab.support@scilab.org este este nevoie de un răspuns care nu este suficient de general pentru a fi publice. Adresa scilab.support@scilab.org este este nevoie de un răspuns care nu este suficient de general pentru a fi publice. Adresa scilab.support@scilab.org este
proiectat pentru acest scop. Dezvoltatorii echipei Scilab oferă răspunsuri precise prin intermediul acestui canal de
comunicare.
Scilab wiki este un instrument publică pentru citirea •i publicarea de informa•ii generale despre Scilab:
http://wiki.scilab.org
9

Figura 3: fereastra de demo-uri Scilab.
Acesta este utilizat atât de către utilizatori •i dezvoltatori Scilab să publice informa•ii despre Scilab. Din punctul de
vedere al unui dezvoltator, acesta con•ine instruc•iuni pas cu pas pentru a compila Scilab din surse, dependen•e
de diferite versiuni ale Scilab, instruc•iuni pentru a utiliza Scilab cod sursă depozit, etc …
Scilab Bugzilla http://bugzilla.scilab.org permite să prezinte un raport de fiecare dată când ne găsim un nou bug. Se Scilab Bugzilla http://bugzilla.scilab.org permite să prezinte un raport de fiecare dată când ne găsim un nou bug. Se Scilab Bugzilla http://bugzilla.scilab.org permite să prezinte un raport de fiecare dată când ne găsim un nou bug. Se
poate întâmpla ca acest bug-ul a fost deja descoperit de altcineva. Acesta este motivul pentru care este recomandat să
caute în baza de date bug-ul pentru problemele legate de existente înainte de a raporta un nou bug. În cazul în care
bug-ul nu este raportat încă, acesta este un lucru foarte bun să-l raporteze, împreună cu un script de test. Acest script de
test ar trebui să rămână cât mai simplu posibil, ceea ce permite de a reproduce problema •i să identifice sursa problemei.
Un e FFI cient mod de a ob•ine până la informa•ii actualizate este de a utiliza feed-urile RSS. RSS
feed-asociat cu site-ul Scilab este
http://www.scilab.org/en/rss_en.xml
Acest canal oferă în mod regulat comunicate de presă •i anun•ă generale.
1.6 Ob•inerea de ajutor de la demonstra•ii Scilab •i macro-uri
Scilab consor•iul men•ine o colec•ie de script-uri demonstrative, care sunt disponibile din consola, în meniu? > Demonstra•iile Scilab consor•iul men•ine o colec•ie de script-uri demonstrative, care sunt disponibile din consola, în meniu? > Demonstra•iile Scilab consor•iul men•ine o colec•ie de script-uri demonstrative, care sunt disponibile din consola, în meniu? > Demonstra•iile
Scilab. Figura 3 Scilab. Figura 3 Scilab. Figura 3
prezintă fereastra de demonstra•ie. Unele sunt demonstra•ii grafice, în timp ce altele sunt interactive, ceea ce
înseamnă că utilizatorul trebuie să introducă pe tasta <Enter> pentru a merge la următorul pas al demo.
Demonstra•iile asociate script-urile sunt localizate în directorul Scilab, în ​​interiorul fiecărui modul. De
exemplu, demonstra•ia asociată cu modulul de optimizare este situat în fi lul
<Cale> \ Scilab-5.2.0 \ module de \ optimizare \ demo-uri \ DataFit \ datafit.dem.sce
Desigur, calea exactă a fi lul depinde de instalarea dvs. special •i de sistemul de operare.
10

Analizând con•inutul acestor demonstra•ii dosare este adesea o solu•ie cientă e FFI pentru rezolvarea problemelor
comune •i pentru a în•elege caracteristicile particulare.
O altă metodă de a găsim ajutor este de a analiza codul sursă al Scilab în sine (Scilab este într-adevăr,
open-source!). De exemplu, derivat Func•ia este situată în open-source!). De exemplu, derivat Func•ia este situată în open-source!). De exemplu, derivat Func•ia este situată în
<Cale> \ Scilab-5.2.0 \ module de \ optimizare \ macro \ derivative.sci
De cele mai multe ori, macro-uri Scilab sunt foarte bine scrise, având grijă de toate combina•iile posibile de
intrare •i de ie•ire argumente •i multe valori posibile ale argumentelor de intrare. De multe ori, di FFI cult probleme
numerice sunt rezolvate în aceste script-uri, astfel încât să ofere o sursă de inspira•ie profundă pentru dezvoltarea
propriile scripturi.
1.7 Exerci•ii
Exercitarea 1.1 ( Instalarea Scilab) Instala•i versiunea curentă a Scilab pe sistemul dumneavoastră: în momentul în care acest document Exercitarea 1.1 ( Instalarea Scilab) Instala•i versiunea curentă a Scilab pe sistemul dumneavoastră: în momentul în care acest document Exercitarea 1.1 ( Instalarea Scilab) Instala•i versiunea curentă a Scilab pe sistemul dumneavoastră: în momentul în care acest document
este scris, acest lucru este Scilab v5.2. Este instructiv de a instala o versiune mai veche de Scilab, în ​​scopul de a compara comportamentul
actual fa•ă de vârstnic. Instala•i Scilab 4.1.2 •i pentru a vedea erences di ff.
Exercitarea 1.2 ( ajutor inline: derivat) derivat Func•ia permite pentru a calcula derivatul merical al unei func•ii nu-. Scopul acestui Exercitarea 1.2 ( ajutor inline: derivat) derivat Func•ia permite pentru a calcula derivatul merical al unei func•ii nu-. Scopul acestui Exercitarea 1.2 ( ajutor inline: derivat) derivat Func•ia permite pentru a calcula derivatul merical al unei func•ii nu-. Scopul acestui Exercitarea 1.2 ( ajutor inline: derivat) derivat Func•ia permite pentru a calcula derivatul merical al unei func•ii nu-. Scopul acestui Exercitarea 1.2 ( ajutor inline: derivat) derivat Func•ia permite pentru a calcula derivatul merical al unei func•ii nu-. Scopul acestui Exercitarea 1.2 ( ajutor inline: derivat) derivat Func•ia permite pentru a calcula derivatul merical al unei func•ii nu-. Scopul acestui
exerci•iu este de a fi nd pagina de ajutor corespunzătoare, prin diferite mijloace. În ajutorul inline, găsim intrarea care corespunde derivat exerci•iu este de a fi nd pagina de ajutor corespunzătoare, prin diferite mijloace. În ajutorul inline, găsim intrarea care corespunde derivat
funcție. Găsi•i intrarea corespunzătoare în ajutorul online. Utiliza•i consola pentru a găsim ajutor.
Exercitarea 1.3 ( Pune o întrebare pe forum) Probabil că ave•i deja unul sau mai multe întrebări. Postează-•i întrebarea pe lista de mail Exercitarea 1.3 ( Pune o întrebare pe forum) Probabil că ave•i deja unul sau mai multe întrebări. Postează-•i întrebarea pe lista de mail Exercitarea 1.3 ( Pune o întrebare pe forum) Probabil că ave•i deja unul sau mai multe întrebări. Postează-•i întrebarea pe lista de mail
a utilizatorilor users@lists.scilab.org. a utilizatorilor users@lists.scilab.org.
2 Ini•iere
În această sec•iune, vom face pa•ii necesari fi RST cu Scilab •i prezintă unele sarcini simple, putem efectua
cu interpretul.
Există mai multe modalită•i de utilizare Scilab •i următoarele paragrafe prezintă trei metode:
•folosind consola în modul interactiv,
•folosind Exec Func•ia împotriva fi lul, folosind Exec Func•ia împotriva fi lul, folosind Exec Func•ia împotriva fi lul,
•utilizând lot prelucrare. utilizând lot prelucrare. utilizând lot prelucrare.
2.1 Consola
Modul fi RST este de a utiliza Scilab interactiv, prin tastarea comenzilor în consolă, analiza rezultatelor •i
continuarea acestui proces până când rezultatul fi nal este calculat. Acest document este conceput astfel
încât exemplele Scilab care sunt tipărite aici pot fi copiate în consolă. Scopul este ca cititorul poate
experimenta singur comportament Scilab. Acesta este într-adevăr o modalitate bună de a în•elege
comportamentul programului •i, de cele mai multe ori, aceasta permite o modalitate rapidă •i fără probleme a
efectua calculul dorit.
În exemplul următor, func•ia disp este utilizat în modul interactiv pentru a imprima •irul de caractere În exemplul următor, func•ia disp este utilizat în modul interactiv pentru a imprima •irul de caractere În exemplul următor, func•ia disp este utilizat în modul interactiv pentru a imprima •irul de caractere
„Hello World!“.
11

Figura 4: Finalizarea în consolă.
–>s = "Hello World!" s =
Salut Lume!
–>disp (e) Hello
World!
În sesiunea precedentă, nu am tasta•i caracterele „->“, care este prompt, În sesiunea precedentă, nu am tasta•i caracterele „->“, care este prompt,
•i care este gestionat de Scilab. Noi tasta•i doar declara•ia s = "Hello World!" •i care este gestionat de Scilab. Noi tasta•i doar declara•ia s = "Hello World!"
cu tastatura noastră •i apoi a lovit < Enter> cheie. Scilab răspuns este s = •i Salut Lume!. Apoi am de tip disp (s) cu tastatura noastră •i apoi a lovit < Enter> cheie. Scilab răspuns este s = •i Salut Lume!. Apoi am de tip disp (s) cu tastatura noastră •i apoi a lovit < Enter> cheie. Scilab răspuns este s = •i Salut Lume!. Apoi am de tip disp (s) cu tastatura noastră •i apoi a lovit < Enter> cheie. Scilab răspuns este s = •i Salut Lume!. Apoi am de tip disp (s) cu tastatura noastră •i apoi a lovit < Enter> cheie. Scilab răspuns este s = •i Salut Lume!. Apoi am de tip disp (s) cu tastatura noastră •i apoi a lovit < Enter> cheie. Scilab răspuns este s = •i Salut Lume!. Apoi am de tip disp (s) cu tastatura noastră •i apoi a lovit < Enter> cheie. Scilab răspuns este s = •i Salut Lume!. Apoi am de tip disp (s) cu tastatura noastră •i apoi a lovit < Enter> cheie. Scilab răspuns este s = •i Salut Lume!. Apoi am de tip disp (s)
•i Scilab răspuns este Salut Lume!. •i Scilab răspuns este Salut Lume!.
Când vom edita o comandă, putem folosi tastatura, ca •i cu un editor obi•nuit. Putem folosi stânga ← •i Când vom edita o comandă, putem folosi tastatura, ca •i cu un editor obi•nuit. Putem folosi stânga ← •i Când vom edita o comandă, putem folosi tastatura, ca •i cu un editor obi•nuit. Putem folosi stânga ← •i
dreapta → săge•i pentru a muta cursorul pe linie •i utiliza•i <Backspace> •i <Delete> cheile pentru a FI erori x în dreapta → săge•i pentru a muta cursorul pe linie •i utiliza•i <Backspace> •i <Delete> cheile pentru a FI erori x în dreapta → săge•i pentru a muta cursorul pe linie •i utiliza•i <Backspace> •i <Delete> cheile pentru a FI erori x în dreapta → săge•i pentru a muta cursorul pe linie •i utiliza•i <Backspace> •i <Delete> cheile pentru a FI erori x în dreapta → săge•i pentru a muta cursorul pe linie •i utiliza•i <Backspace> •i <Delete> cheile pentru a FI erori x în
text.
Pentru a avea acces la comenzi executate anterior, utiliza•i săgeata în sus ↑ cheie. Acest lucru permite Pentru a avea acces la comenzi executate anterior, utiliza•i săgeata în sus ↑ cheie. Acest lucru permite Pentru a avea acces la comenzi executate anterior, utiliza•i săgeata în sus ↑ cheie. Acest lucru permite
pentru a parcurge comenzile anterioare utilizând sus ↑ •i în jos ↓ sagetile. pentru a parcurge comenzile anterioare utilizând sus ↑ •i în jos ↓ sagetile. pentru a parcurge comenzile anterioare utilizând sus ↑ •i în jos ↓ sagetile. pentru a parcurge comenzile anterioare utilizând sus ↑ •i în jos ↓ sagetile. pentru a parcurge comenzile anterioare utilizând sus ↑ •i în jos ↓ sagetile.
Ul <Tab> cheie oferă o caracteristică de finalizare foarte convenabil. În următoarea sesiune, tastam Ul <Tab> cheie oferă o caracteristică de finalizare foarte convenabil. În următoarea sesiune, tastam
declara•ia disp în consolă. declara•ia disp în consolă. declara•ia disp în consolă.
–> disp
Apoi putem tasta pe <Tab> cheie, ceea ce face o listă apar în consolă, a•a cum este prezentat în fi gure 4 . Apoi putem tasta pe <Tab> cheie, ceea ce face o listă apar în consolă, a•a cum este prezentat în fi gure 4 . Apoi putem tasta pe <Tab> cheie, ceea ce face o listă apar în consolă, a•a cum este prezentat în fi gure 4 . Apoi putem tasta pe <Tab> cheie, ceea ce face o listă apar în consolă, a•a cum este prezentat în fi gure 4 .
Scilab afi•ează un listbox, în cazul în care elemente corespund tuturor func•iilor care încep cu „disp“ scrisori.
Putem folosi apoi tastele săge•i sus •i jos pentru a selecta func•ia ne-o dorim.
Auto-completare func•ionează cu func•ii, variabile, mânere fi les •i grafice •i face dezvoltarea de script-uri
u•or •i mai rapid.
2.2 Editorul
Scilab versiunea 5.2 oferă un nou editor, care permite editarea script-uri cu u•urin•ă. Figura 5 Scilab versiunea 5.2 oferă un nou editor, care permite editarea script-uri cu u•urin•ă. Figura 5
prezintă editorul în timpul editarea exemplul anterior „Hello World!“.
12

Figura 5: editor.
Editorul poate fi accesat din meniul consolei, sub Aplica•ii Editorul poate fi accesat din meniul consolei, sub Aplica•ii
>Editor meniu, sau din consola, a•a cum este prezentat în următoarea sesiune. Editor meniu, sau din consola, a•a cum este prezentat în următoarea sesiune.
–>editor ()
Acest editor permite să gestioneze mai multe dosare, în acela•i timp, a•a cum este prezentat în fi gure 5 , În cazul în care Acest editor permite să gestioneze mai multe dosare, în acela•i timp, a•a cum este prezentat în fi gure 5 , În cazul în care Acest editor permite să gestioneze mai multe dosare, în acela•i timp, a•a cum este prezentat în fi gure 5 , În cazul în care
am edita cinci-Fi les în acela•i timp.
Există multe caracteristici care merită să men•ionăm în acest editor. Cele mai frecvent utilizate
caracteristici sunt sub A executa meniul. caracteristici sunt sub A executa meniul. caracteristici sunt sub A executa meniul.
•Încărca•i în Scilab permite să execute declara•iile în curent fi lul, ca •i cum am făcut o copie •i pastă. Încărca•i în Scilab permite să execute declara•iile în curent fi lul, ca •i cum am făcut o copie •i pastă.
Acest lucru implică faptul că situa•iile care nu se termină cu punct •i virgulă „;“ caracterul va produce o
ie•ire în consolă.
•Evalua•i Selec•ia permite să execute declara•iile care sunt în prezent selectate. Evalua•i Selec•ia permite să execute declara•iile care sunt în prezent selectate.
•Executare fi•ier în Scilab permite să execute fi lul, ca •i în cazul în care am folosit Exec Executare fi•ier în Scilab permite să execute fi lul, ca •i în cazul în care am folosit Exec Executare fi•ier în Scilab permite să execute fi lul, ca •i în cazul în care am folosit Exec
funcție. Rezultatele care sunt produse in consola sunt numai cele care sunt asociate cu func•ii de
imprimare, cum ar fi disp de exemplu. imprimare, cum ar fi disp de exemplu. imprimare, cum ar fi disp de exemplu.
Putem selecta, de asemenea, câteva linii din script, face•i clic dreapta (sau Cmd + clic pe sub Mac), •i a ob•ine meniul
contextual, care este prezentat în fi gure 6 . Edita•i | × Meniul oferă o caracteristică foarte interesantă, cunoscută în mod contextual, care este prezentat în fi gure 6 . Edita•i | × Meniul oferă o caracteristică foarte interesantă, cunoscută în mod contextual, care este prezentat în fi gure 6 . Edita•i | × Meniul oferă o caracteristică foarte interesantă, cunoscută în mod contextual, care este prezentat în fi gure 6 . Edita•i | × Meniul oferă o caracteristică foarte interesantă, cunoscută în mod contextual, care este prezentat în fi gure 6 . Edita•i | × Meniul oferă o caracteristică foarte interesantă, cunoscută în mod
obi•nuit ca „imprimantă destul“, în cele mai multe limbi. Acesta este Editare> Indentarea corect facilitate, care obi•nuit ca „imprimantă destul“, în cele mai multe limbi. Acesta este Editare> Indentarea corect facilitate, care obi•nuit ca „imprimantă destul“, în cele mai multe limbi. Acesta este Editare> Indentarea corect facilitate, care obi•nuit ca „imprimantă destul“, în cele mai multe limbi. Acesta este Editare> Indentarea corect facilitate, care
13

Figura 6: Meniul contextual în editorul.
indentează automat selec•ia curentă. Această caracteristică este extremelly convenabil, deoarece permite algoritmi
de format, astfel încât în cazul în care, pentru •i alte blocuri structurate sunt u•or de analizat. de format, astfel încât în cazul în care, pentru •i alte blocuri structurate sunt u•or de analizat. de format, astfel încât în cazul în care, pentru •i alte blocuri structurate sunt u•or de analizat.
Editorul oferă un acces rapid la ajutorul inline. Într-adevăr, să presupunem că am selectat disp declara•ie, Editorul oferă un acces rapid la ajutorul inline. Într-adevăr, să presupunem că am selectat disp declara•ie, Editorul oferă un acces rapid la ajutorul inline. Într-adevăr, să presupunem că am selectat disp declara•ie,
a•a cum este prezentat în fi gure 7 . Când facem clic-dreapta în editorul, vom ob•ine meniul contextual, unde Ajutor a•a cum este prezentat în fi gure 7 . Când facem clic-dreapta în editorul, vom ob•ine meniul contextual, unde Ajutor a•a cum este prezentat în fi gure 7 . Când facem clic-dreapta în editorul, vom ob•ine meniul contextual, unde Ajutor a•a cum este prezentat în fi gure 7 . Când facem clic-dreapta în editorul, vom ob•ine meniul contextual, unde Ajutor
despre „disp“ intrare permite pentru a deschide pagina de ajutor asociat cu disp funcție. despre „disp“ intrare permite pentru a deschide pagina de ajutor asociat cu disp funcție. despre „disp“ intrare permite pentru a deschide pagina de ajutor asociat cu disp funcție. despre „disp“ intrare permite pentru a deschide pagina de ajutor asociat cu disp funcție.
2.3 andocare
Grafica din Scilab versiunea 5 a fost actualizat, astfel încât multe componente se bazează acum pe Java.
Acest lucru are o serie de avantaje, inclusiv posibilitatea de a gestiona ferestrele de andocare.
Sistemul de andocare utilizează FlexDock [ 10 ], Un proiect open-source, oferind un cadru Swing de andocare. Să Sistemul de andocare utilizează FlexDock [ 10 ], Un proiect open-source, oferind un cadru Swing de andocare. Să Sistemul de andocare utilizează FlexDock [ 10 ], Un proiect open-source, oferind un cadru Swing de andocare. Să
presupunem că avem atât de consolă •i editorul deschis în mediul nostru, a•a cum este prezentat în fi gure 8 . Ar putea presupunem că avem atât de consolă •i editorul deschis în mediul nostru, a•a cum este prezentat în fi gure 8 . Ar putea presupunem că avem atât de consolă •i editorul deschis în mediul nostru, a•a cum este prezentat în fi gure 8 . Ar putea
fi enervant pentru a gestiona două ferestre, pentru că se poate ascunde cealaltă, astfel încât să avem în mod constant
pentru a le deplasa în jurul valorii, pentru a vedea ce se întâmplă de fapt.
Sistemul FlexDock permite să glisa•i •i să fixa•i editorul în consolă, astfel încât să avem doar Fi nal o
singură fereastră, cu mai multe sub-ferestre. Toate ferestrele sunt dockable Scilab, inclusiv consola, editorul,
ajutorul •i ferestrele plotare. În fi gure 9 , Prezentăm o situa•ie în care ne-am andocat patru ferestre în fereastra ajutorul •i ferestrele plotare. În fi gure 9 , Prezentăm o situa•ie în care ne-am andocat patru ferestre în fereastra ajutorul •i ferestrele plotare. În fi gure 9 , Prezentăm o situa•ie în care ne-am andocat patru ferestre în fereastra
consolei.
Pentru a andoca o fereastră într-o altă fereastră, trebuie să trage•i •i plasa•i
14

Figura 7: ajutor context în editor.
Trage•i de aici •i
plasa•i în consolă
Figura 8: Bara de titlu din fereastra sursă. Pentru a andoca editorul în consolă, glisa•i •i fixa•i bara de titlu a
editorului în consolă.
15

Click aici pentru
a ne-doc
Click aici pentru a
închide doc
Figura 9: Ac•iuni în bara de titlu a ferestrei de andocare. Săgeata rotundă în bara de titlu a ferestrei permite
andocarea fereastra. Crucea permite să închidă fereastra.
fereastra sursă în fereastra de destina•ie. Pentru a face acest lucru, am face•i clic stânga pe bara de titlu a
ferestrei de andocare, a•a cum este indicat în fi gure 8 . Înainte de a elibera un clic, să muta•i mouse-ul peste ferestrei de andocare, a•a cum este indicat în fi gure 8 . Înainte de a elibera un clic, să muta•i mouse-ul peste ferestrei de andocare, a•a cum este indicat în fi gure 8 . Înainte de a elibera un clic, să muta•i mouse-ul peste
fereastra •intă •i observa•i că este afi•ată o fereastră, înconjurat de linii punctate. Această fereastră „fantomă“
indică loca•ia viitorului andocat ferestrei. Putem alege această loca•ie, care poate fi pe partea de sus, jos,
stânga sau dreapta ferestrei •intă. Odată ce am ales loca•ia •intă, vom elibera clic, care fi nally mută fereastra
sursă în fereastra de destina•ie, la fel ca în fi gure 9 . sursă în fereastra de destina•ie, la fel ca în fi gure 9 . sursă în fereastra de destina•ie, la fel ca în fi gure 9 .
Putem elibera, de asemenea, fereastra sursă peste fereastra de destina•ie, care creează file, la fel ca în fi gure 10 . Putem elibera, de asemenea, fereastra sursă peste fereastra de destina•ie, care creează file, la fel ca în fi gure 10 . Putem elibera, de asemenea, fereastra sursă peste fereastra de destina•ie, care creează file, la fel ca în fi gure 10 . Putem elibera, de asemenea, fereastra sursă peste fereastra de destina•ie, care creează file, la fel ca în fi gure 10 . Putem elibera, de asemenea, fereastra sursă peste fereastra de destina•ie, care creează file, la fel ca în fi gure 10 .
2.4 Utilizarea Exec 2.4 Utilizarea Exec
Atunci când mai multe comenzi trebuie executate, acesta poate fi mai convenabil de a scrie aceste declara•ii
într-un fi lul cu editorul Scilab. Pentru a executa comenzile amplasate într-o astfel de fi lul, The Exec Func•ia într-un fi lul cu editorul Scilab. Pentru a executa comenzile amplasate într-o astfel de fi lul, The Exec Func•ia într-un fi lul cu editorul Scilab. Pentru a executa comenzile amplasate într-o astfel de fi lul, The Exec Func•ia
poate fi utilizată, urmată de numele script-ul. Aceasta fi lul are, în general, extensia. Utes sau. sci, în func•ie de poate fi utilizată, urmată de numele script-ul. Aceasta fi lul are, în general, extensia. Utes sau. sci, în func•ie de poate fi utilizată, urmată de numele script-ul. Aceasta fi lul are, în general, extensia. Utes sau. sci, în func•ie de poate fi utilizată, urmată de numele script-ul. Aceasta fi lul are, în general, extensia. Utes sau. sci, în func•ie de poate fi utilizată, urmată de numele script-ul. Aceasta fi lul are, în general, extensia. Utes sau. sci, în func•ie de
con•inutul său:
•Fi les având. sci extensie con•in func•ii Scilab •i executarea acestora încarcă func•iile în mediul Scilab Fi les având. sci extensie con•in func•ii Scilab •i executarea acestora încarcă func•iile în mediul Scilab Fi les având. sci extensie con•in func•ii Scilab •i executarea acestora încarcă func•iile în mediul Scilab
(dar nu le executa),
•Fi les având. Utes extensie con•in ambele func•ii Scilab •i declara•ii executabile. Fi les având. Utes extensie con•in ambele func•ii Scilab •i declara•ii executabile. Fi les având. Utes extensie con•in ambele func•ii Scilab •i declara•ii executabile.
16

Filele doc
Figura 10: andocare file.
Executarea unei. Utes fi lul are, în general, un e ff ect, cum ar fi de calcul mai multe variabile •i afi•area rezultatelor Executarea unei. Utes fi lul are, în general, un e ff ect, cum ar fi de calcul mai multe variabile •i afi•area rezultatelor Executarea unei. Utes fi lul are, în general, un e ff ect, cum ar fi de calcul mai multe variabile •i afi•area rezultatelor
în consolă, crearea de parcele 2D, citirea sau scrierea într-o fi lul, etc …
Să presupunem că con•inutul fi lul myscript.sce este următoarea. Să presupunem că con•inutul fi lul myscript.sce este următoarea. Să presupunem că con•inutul fi lul myscript.sce este următoarea.
disp ( "Hello World!")
În consola Scilab, putem folosi Exec func•ia de a executa con•inutul acestui scenariu. În consola Scilab, putem folosi Exec func•ia de a executa con•inutul acestui scenariu. În consola Scilab, putem folosi Exec func•ia de a executa con•inutul acestui scenariu.
–>exec ( "myscript.sce")
–>disp ( "Hello World!") Hello World!
În situa•ii practice, cum ar fi depanare un algoritm complicat, modul interactiv este folosit pentru cele mai
multe ori cu o secven•ă de apeluri către Exec •i disp multe ori cu o secven•ă de apeluri către Exec •i disp multe ori cu o secven•ă de apeluri către Exec •i disp multe ori cu o secven•ă de apeluri către Exec •i disp
func•ii.
procesare 2.5 Lot
Un alt mod de a folosi Scilab este din linia de comandă. Mai multe op•iuni de linie de comandă sunt disponibile
•i sunt prezentate în fi gure 11 . Indiferent de sistemul de operare, fi•ierele binare sunt localizate în directorul Scilab-5.2.0 •i sunt prezentate în fi gure 11 . Indiferent de sistemul de operare, fi•ierele binare sunt localizate în directorul Scilab-5.2.0 •i sunt prezentate în fi gure 11 . Indiferent de sistemul de operare, fi•ierele binare sunt localizate în directorul Scilab-5.2.0 •i sunt prezentate în fi gure 11 . Indiferent de sistemul de operare, fi•ierele binare sunt localizate în directorul Scilab-5.2.0
/ bin. Op•iunile liniei de comandă trebuie să fie anexată la binar pentru platforma speci fi c, a•a cum este descris / bin. Op•iunile liniei de comandă trebuie să fie anexată la binar pentru platforma speci fi c, a•a cum este descris
mai jos.
– nw Op•iunea permite să dezactiva•i afi•area consolei. – nwni op•iune permite de a lansa modul de – nw Op•iunea permite să dezactiva•i afi•area consolei. – nwni op•iune permite de a lansa modul de – nw Op•iunea permite să dezactiva•i afi•area consolei. – nwni op•iune permite de a lansa modul de – nw Op•iunea permite să dezactiva•i afi•area consolei. – nwni op•iune permite de a lansa modul de
non-grafice: în acest mod, consola nu este afi•ată •i func•iile de trasare sunt dezactivate (utilizarea lor va
genera o eroare).
17

– e instruc•iuni executa instruc•iunea Scilab dată în instruire- e instruc•iuni executa instruc•iunea Scilab dată în instruire
– f fi lul – f fi lul executa scriptul Scilab dat în fi lul
– L numai – L numai Configurarea limbii de utilizare
„Fr“ pentru franceză •i „en“ pentru limba engleză (implicit este „en“)
-Mem N Mem N seta•i stacksize ini•ială
– ns în cazul în care această op•iune este prezent, pornire fi lul scilab.start nu este executat
– nb în cazul în care această op•iune este prezentă, atunci Scilab de bun venit banner-ul nu este afi•at
-nouserstartup nu executa utilizator de pornire Fi les SCIHOME / .scilab nouserstartup nu executa utilizator de pornire Fi les SCIHOME / .scilab nouserstartup nu executa utilizator de pornire Fi les SCIHOME / .scilab
sau SCIHOME / scilab.inisau SCIHOME / scilab.ini
– nw începe Scilab ca linie de comandă cu func•ii avansate (de exemplu, grafică)
-nwni începe Scilab ca linie de comandă, fără func•ii avansate
-versiune versiunea de produs de imprimare •i de ie•ire
Figura 11: Op•iuni de Scilab linie de comandă.
•Sub Windows, sunt prevăzute două executabil binar. Executabilul fi RST este
WScilex.exe, de obicei, grafica, consola interactivă. Acest executabil corespunde pictograma care este WScilex.exe, de obicei, grafica, consola interactivă. Acest executabil corespunde pictograma care este
disponibilă pe desktop după instalarea Scilab. Al doilea este executabil Scilex.exe, consola non-grafice. disponibilă pe desktop după instalarea Scilab. Al doilea este executabil Scilex.exe, consola non-grafice. disponibilă pe desktop după instalarea Scilab. Al doilea este executabil Scilex.exe, consola non-grafice.
Cu Scilex.exe executabil, consola bazată pe Java nu este încărcat •i terminalul Windows este utilizat în Cu Scilex.exe executabil, consola bazată pe Java nu este încărcat •i terminalul Windows este utilizat în Cu Scilex.exe executabil, consola bazată pe Java nu este încărcat •i terminalul Windows este utilizat în
mod direct. Scilex.exe Programul este sensibil la – nw •i – nwni Op•iuni. mod direct. Scilex.exe Programul este sensibil la – nw •i – nwni Op•iuni. mod direct. Scilex.exe Programul este sensibil la – nw •i – nwni Op•iuni. mod direct. Scilex.exe Programul este sensibil la – nw •i – nwni Op•iuni. mod direct. Scilex.exe Programul este sensibil la – nw •i – nwni Op•iuni. mod direct. Scilex.exe Programul este sensibil la – nw •i – nwni Op•iuni. mod direct. Scilex.exe Programul este sensibil la – nw •i – nwni Op•iuni.
•Sub Linux, versiunea Scilab script-ul oferă op•iuni care permit să con fi gure comportamentul său. În Sub Linux, versiunea Scilab script-ul oferă op•iuni care permit să con fi gure comportamentul său. În Sub Linux, versiunea Scilab script-ul oferă op•iuni care permit să con fi gure comportamentul său. În
mod implicit, este lansat modul grafic. Scilab script-ul este sensibil la – nw •i – nwni Op•iuni. Există două mod implicit, este lansat modul grafic. Scilab script-ul este sensibil la – nw •i – nwni Op•iuni. Există două mod implicit, este lansat modul grafic. Scilab script-ul este sensibil la – nw •i – nwni Op•iuni. Există două mod implicit, este lansat modul grafic. Scilab script-ul este sensibil la – nw •i – nwni Op•iuni. Există două mod implicit, este lansat modul grafic. Scilab script-ul este sensibil la – nw •i – nwni Op•iuni. Există două mod implicit, este lansat modul grafic. Scilab script-ul este sensibil la – nw •i – nwni Op•iuni. Există două mod implicit, este lansat modul grafic. Scilab script-ul este sensibil la – nw •i – nwni Op•iuni. Există două
executabile suplimentare pe Linux: Scilab-cli •i Scilab-adv-cli. Scilab-adv-cli executabil este echivalentă executabile suplimentare pe Linux: Scilab-cli •i Scilab-adv-cli. Scilab-adv-cli executabil este echivalentă executabile suplimentare pe Linux: Scilab-cli •i Scilab-adv-cli. Scilab-adv-cli executabil este echivalentă executabile suplimentare pe Linux: Scilab-cli •i Scilab-adv-cli. Scilab-adv-cli executabil este echivalentă executabile suplimentare pe Linux: Scilab-cli •i Scilab-adv-cli. Scilab-adv-cli executabil este echivalentă executabile suplimentare pe Linux: Scilab-cli •i Scilab-adv-cli. Scilab-adv-cli executabil este echivalentă executabile suplimentare pe Linux: Scilab-cli •i Scilab-adv-cli. Scilab-adv-cli executabil este echivalentă
cu – nw op•iune, în timp ce Scilab-cli este echivalent cu – nwni cu – nw op•iune, în timp ce Scilab-cli este echivalent cu – nwni cu – nw op•iune, în timp ce Scilab-cli este echivalent cu – nwni cu – nw op•iune, în timp ce Scilab-cli este echivalent cu – nwni cu – nw op•iune, în timp ce Scilab-cli este echivalent cu – nwni cu – nw op•iune, în timp ce Scilab-cli este echivalent cu – nwni
op•iune[ 8 ]. op•iune[ 8 ]. op•iune[ 8 ].
•Sub Mac OS, comportamentul este similar cu platforma Linux.
În următoarea sesiune de lucru Windows, vom lansa Scilex.exe Programul cu În următoarea sesiune de lucru Windows, vom lansa Scilex.exe Programul cu În următoarea sesiune de lucru Windows, vom lansa Scilex.exe Programul cu
-nwni op•iune. Apoi vom rula intrigă func•ie în scopul de a verifica dacă această func•ie nu este disponibilă în nwni op•iune. Apoi vom rula intrigă func•ie în scopul de a verifica dacă această func•ie nu este disponibilă în nwni op•iune. Apoi vom rula intrigă func•ie în scopul de a verifica dacă această func•ie nu este disponibilă în nwni op•iune. Apoi vom rula intrigă func•ie în scopul de a verifica dacă această func•ie nu este disponibilă în
modul non-grafice.
D: \ Programs \ Scilab -5.2.0 \ bin> Scilex.exe -nwni
___________________________________________
Scilab -5.2.0 Consortium Scilab (DIGITEO) Copyright
(c) 1989 -2009 (INRIA) Copyright (c) 1989 -2007 (ENPC)
___________________________________________
execu•ie de pornire:
încărcarea ini•ială de mediu
–>plot ()
! – eroare 4 Undefined variable:
complot
18

Op•iunea cea mai utilă linie de comandă este – f op•iune, ceea ce permite să execute comenzile de la un Op•iunea cea mai utilă linie de comandă este – f op•iune, ceea ce permite să execute comenzile de la un Op•iunea cea mai utilă linie de comandă este – f op•iune, ceea ce permite să execute comenzile de la un
anumit fi lul, în general, o metodă numită lot prelucrare. Să presupunem că con•inutul fi lul myscript2.sce este anumit fi lul, în general, o metodă numită lot prelucrare. Să presupunem că con•inutul fi lul myscript2.sce este anumit fi lul, în general, o metodă numită lot prelucrare. Să presupunem că con•inutul fi lul myscript2.sce este anumit fi lul, în general, o metodă numită lot prelucrare. Să presupunem că con•inutul fi lul myscript2.sce este anumit fi lul, în general, o metodă numită lot prelucrare. Să presupunem că con•inutul fi lul myscript2.sce este
următorul, în cazul în care părăsi Func•ia este folosită pentru a ie•i din Scilab. următorul, în cazul în care părăsi Func•ia este folosită pentru a ie•i din Scilab. următorul, în cazul în care părăsi Func•ia este folosită pentru a ie•i din Scilab.
disp ( "Hello World!") quit ()
Comportamentul implicit al Scilab este să a•tepte pentru noi datele introduse de utilizator: Acesta este motivul pentru părăsi Comportamentul implicit al Scilab este să a•tepte pentru noi datele introduse de utilizator: Acesta este motivul pentru părăsi
comandă este folosit, astfel încât sesiunea se termină. Pentru a executa demonstra•ia sub Windows, am
creat directorul "C: \" script-uri •i a scris declara•iile în fi lul C: \ script \ myscript2.sce. Următoarea sesiune, creat directorul "C: \" script-uri •i a scris declara•iile în fi lul C: \ script \ myscript2.sce. Următoarea sesiune, creat directorul "C: \" script-uri •i a scris declara•iile în fi lul C: \ script \ myscript2.sce. Următoarea sesiune, creat directorul "C: \" script-uri •i a scris declara•iile în fi lul C: \ script \ myscript2.sce. Următoarea sesiune, creat directorul "C: \" script-uri •i a scris declara•iile în fi lul C: \ script \ myscript2.sce. Următoarea sesiune,
executat de la terminalul MS Windows, arată modul de utilizare a – f op•iunea de a executa script-ul anterior. executat de la terminalul MS Windows, arată modul de utilizare a – f op•iunea de a executa script-ul anterior. executat de la terminalul MS Windows, arată modul de utilizare a – f op•iunea de a executa script-ul anterior.
Observa•i că am folosit calea absolută a Scilex.exe executabil. Observa•i că am folosit calea absolută a Scilex.exe executabil. Observa•i că am folosit calea absolută a Scilex.exe executabil.
C: \ script> D: \ Programs \ Scilab -5.2.0 \ bin \ Scilex.exe -f myscript2.sce
___________________________________________
Scilab -5.2.0 Consortium Scilab (DIGITEO) Copyright
(c) 1989 -2009 (INRIA) Copyright (c) 1989 -2007 (ENPC)
___________________________________________
execu•ie de pornire:
încărcare mediu ini•ial Hello World! C: \ script>
Orice linie care începe cu cele două personaje slash „//“ este considerat de Scilab ca un comentariu •i
este ignorată. Pentru a verifica dacă Scilab rămâne în mod implicit în modul interactiv, am comentati părăsi declara•ia este ignorată. Pentru a verifica dacă Scilab rămâne în mod implicit în modul interactiv, am comentati părăsi declara•ia este ignorată. Pentru a verifica dacă Scilab rămâne în mod implicit în modul interactiv, am comentati părăsi declara•ia
cu „//“ sintaxa, la fel ca în următorul script.
disp ( "Hello World!") // quit ()
Dacă vom tasta•i“ scilex -f myscript2.sce “Comandă în terminal, Scilab va a•tepta acum pentru datele introduse Dacă vom tasta•i“ scilex -f myscript2.sce “Comandă în terminal, Scilab va a•tepta acum pentru datele introduse Dacă vom tasta•i“ scilex -f myscript2.sce “Comandă în terminal, Scilab va a•tepta acum pentru datele introduse
de utilizator, cum era de a•teptat. Pentru a ie•i, tastam interactiv părăsi() de utilizator, cum era de a•teptat. Pentru a ie•i, tastam interactiv părăsi()
declara•ie în terminal.
2.6 Exerci•ii
Exercitarea 2.1 ( Consola) Tasta•i următoarea declara•ie în consolă. Exercitarea 2.1 ( Consola) Tasta•i următoarea declara•ie în consolă. Exercitarea 2.1 ( Consola) Tasta•i următoarea declara•ie în consolă.
atomi
Acum, tasta•i pe <Tab> cheie. Ce se întâmplă? Acum, de tip „I“ literă, •i tasta•i din nou pe <Tab>. Ce se întâmplă? Acum, tasta•i pe <Tab> cheie. Ce se întâmplă? Acum, de tip „I“ literă, •i tasta•i din nou pe <Tab>. Ce se întâmplă?
Exercitarea 2.2 ( Utilizarea Exec) Când vom dezvolta un Scilab, script vom folosi de multe ori Exec func•ie în combina•ie cu ls func•ie, Exercitarea 2.2 ( Utilizarea Exec) Când vom dezvolta un Scilab, script vom folosi de multe ori Exec func•ie în combina•ie cu ls func•ie, Exercitarea 2.2 ( Utilizarea Exec) Când vom dezvolta un Scilab, script vom folosi de multe ori Exec func•ie în combina•ie cu ls func•ie, Exercitarea 2.2 ( Utilizarea Exec) Când vom dezvolta un Scilab, script vom folosi de multe ori Exec func•ie în combina•ie cu ls func•ie, Exercitarea 2.2 ( Utilizarea Exec) Când vom dezvolta un Scilab, script vom folosi de multe ori Exec func•ie în combina•ie cu ls func•ie, Exercitarea 2.2 ( Utilizarea Exec) Când vom dezvolta un Scilab, script vom folosi de multe ori Exec func•ie în combina•ie cu ls func•ie, Exercitarea 2.2 ( Utilizarea Exec) Când vom dezvolta un Scilab, script vom folosi de multe ori Exec func•ie în combina•ie cu ls func•ie,
care afi•ează lista de dosare •i directoarele din directorul curent. Putem folosi, de asemenea, PWD, care afi•ează directorul curent. SCI variabilă care afi•ează lista de dosare •i directoarele din directorul curent. Putem folosi, de asemenea, PWD, care afi•ează directorul curent. SCI variabilă care afi•ează lista de dosare •i directoarele din directorul curent. Putem folosi, de asemenea, PWD, care afi•ează directorul curent. SCI variabilă care afi•ează lista de dosare •i directoarele din directorul curent. Putem folosi, de asemenea, PWD, care afi•ează directorul curent. SCI variabilă care afi•ează lista de dosare •i directoarele din directorul curent. Putem folosi, de asemenea, PWD, care afi•ează directorul curent. SCI variabilă
con•ine numele directorului instala•iei Scilab curent. O folosim foarte des pentru a executa script-urile care sunt prevăzute în Scilab.
Tasta•i următoarele afirma•ii în consolă •i să vedem ce se întâmplă.
PWD
SCI
ls (SCI + "/ module")
19

ls (SCI + "/ module / elemente grafice / demo-uri")
exec (SCI + "/ module / grafica / demo / 2 d_3d_plots / contourf.dem.sce") exec (SCI + "/ module / grafica / demo / 2 d_3d_plots
/ contourf.dem.sce");
3 elemente de bază ale limbii
Scilab este un limbaj interpretat, ceea ce înseamnă că permite de a manipula variabile într-un mod foarte
dinamic. În această sec•iune, vom prezenta caracteristicile de bază ale limbii, care este, ne arată cum să
crea•i o variabilă reală, •i ce func•ii matematice elementare pot fi aplicate la o variabilă reală. Dacă Scilab
furnizate numai aceste caracteristici, ar fi doar un calculator super-birou. Din fericire, este mult mai mult •i
acest lucru este obiectul sec•iunilor rămase, în cazul în care vom arăta cum să gestiona•i alte tipuri de
variabile, care este boolean, numere complexe, numere întregi •i •iruri.
Se pare ciudat la prima fi, dar merită să-l declare chiar de la început: în Scilab, totul este o matrice. Pentru Se pare ciudat la prima fi, dar merită să-l declare chiar de la început: în Scilab, totul este o matrice. Pentru Se pare ciudat la prima fi, dar merită să-l declare chiar de la început: în Scilab, totul este o matrice. Pentru
a fi mai precis, ar trebui să scrie: toate reale, complexe, boolean, integer, string •i variabilele polinomial sunt a fi mai precis, ar trebui să scrie: toate reale, complexe, boolean, integer, string •i variabilele polinomial sunt
matrice. Liste •i alte structuri de date complexe (cum ar fi tlists •i mlists) nu sunt matrici (dar pot con•ine matrice. Liste •i alte structuri de date complexe (cum ar fi tlists •i mlists) nu sunt matrici (dar pot con•ine
matrici). Aceste structuri complexe de date nu vor fi prezentate în acest document.
Acesta este motivul pentru care am putea începe prin prezentarea matrici. Cu toate acestea, am ales să prezentăm bază tipuri
de date fi prima, deoarece matrici Scilab sunt, de fapt, o organiza•ie specială a acestor blocuri de construc•ie de bază.
În Scilab, putem gestiona numere reale •i complexe. Acest lucru conduce întotdeauna la o anumită confuzie în cazul în
care contextul nu este suficient de clar. În cele ce urmează, atunci când vom scrie variabilă reală, ne vom referi la o variabilă care contextul nu este suficient de clar. În cele ce urmează, atunci când vom scrie variabilă reală, ne vom referi la o variabilă care contextul nu este suficient de clar. În cele ce urmează, atunci când vom scrie variabilă reală, ne vom referi la o variabilă
care nu este con•inut complex. variabile complexe vor fi acoperite în sec•iunea 3.7 ca un caz special de variabile reale. În care nu este con•inut complex. variabile complexe vor fi acoperite în sec•iunea 3.7 ca un caz special de variabile reale. În care nu este con•inut complex. variabile complexe vor fi acoperite în sec•iunea 3.7 ca un caz special de variabile reale. În
cele mai multe cazuri, variabilele reale •i variabile complexe se comportă într-un mod foarte asemănător, de•i unele de
îngrijire suplimentare trebuie să fie luate atunci când datele complexe urmează să fie prelucrate. Pentru că ar face
prezentarea greoaie, vom simplifica majoritatea discu•iilor prin luarea în considerare doar variabile reale, având grijă în plus
cu variabile complexe numai atunci când este necesar.
3.1 Crearea de variabile reale
În această sec•iune, vom crea variabile reale •i de a efectua opera•iuni simple cu ei.
Scilab este un limbaj interpretat, ceea ce implică faptul că nu este necesar să declare o variabilă înainte de a
utiliza. Variabilele sunt create în momentul în care acestea sunt setate RST Fi.
În exemplul următor, vom crea •i seta•i variabila reală X la 1 •i de a efectua o multiplicare pe această În exemplul următor, vom crea •i seta•i variabila reală X la 1 •i de a efectua o multiplicare pe această În exemplul următor, vom crea •i seta•i variabila reală X la 1 •i de a efectua o multiplicare pe această
variabilă. În Scilab, operatorul „=“ înseamnă că dorim să seta•i variabila de pe partea stângă la valoarea
asociată cu partea dreaptă (nu este operatorul compara•ie, care sintaxa este asociată cu „==“ operatorul) .
–> X = 1
x =
1.
–>x = x * 2
20

+ plus
– scădere
* multiplicare* multiplicare
/ diviziune dreaptă, •i anume x / y = xy – 1 diviziune dreaptă, •i anume x / y = xy – 1 diviziune dreaptă, •i anume x / y = xy – 1 diviziune dreaptă, •i anume x / y = xy – 1
\ Divizia de stânga, •i anume x \ y = x – 1 •i Divizia de stânga, •i anume x \ y = x – 1 •i Divizia de stânga, •i anume x \ y = x – 1 •i Divizia de stânga, •i anume x \ y = x – 1 •i Divizia de stânga, •i anume x \ y = x – 1 •i
putere, •i anume X •i putere, •i anume X •i putere, •i anume X •i
** putere (la fel ca)** putere (la fel ca)
' transpune conjugat
Figura 12: operatorii matematici elementare Scilab.
x =
2.
Valoarea variabilei este afi•ată de fiecare dată când o declara•ie este executată. Această comportament
poate fi suprimat dacă linia se termină cu punct •i virgulă „;“ caracter, la fel ca în exemplul următor.
–> Y = 1;
–>y = y * 2;
Toate comune operatorii algebrice prezentate în fi gure 12 sunt disponibile în Scilab. Observa•i că Toate comune operatorii algebrice prezentate în fi gure 12 sunt disponibile în Scilab. Observa•i că Toate comune operatorii algebrice prezentate în fi gure 12 sunt disponibile în Scilab. Observa•i că
operatorul de putere este reprezentat de pălărie „“ caracterul de calcul, astfel încât X 2 în Scilab este realizată operatorul de putere este reprezentat de pălărie „“ caracterul de calcul, astfel încât X 2 în Scilab este realizată operatorul de putere este reprezentat de pălărie „“ caracterul de calcul, astfel încât X 2 în Scilab este realizată operatorul de putere este reprezentat de pălărie „“ caracterul de calcul, astfel încât X 2 în Scilab este realizată
de către“ X ˆ 2 „Expresie sau echivalent de“ x ** 2 “Expresie. Singurul citat“ ' “Operatorul va fi prezentat mai în de către“ X ˆ 2 „Expresie sau echivalent de“ x ** 2 “Expresie. Singurul citat“ ' “Operatorul va fi prezentat mai în de către“ X ˆ 2 „Expresie sau echivalent de“ x ** 2 “Expresie. Singurul citat“ ' “Operatorul va fi prezentat mai în de către“ X ˆ 2 „Expresie sau echivalent de“ x ** 2 “Expresie. Singurul citat“ ' “Operatorul va fi prezentat mai în de către“ X ˆ 2 „Expresie sau echivalent de“ x ** 2 “Expresie. Singurul citat“ ' “Operatorul va fi prezentat mai în de către“ X ˆ 2 „Expresie sau echivalent de“ x ** 2 “Expresie. Singurul citat“ ' “Operatorul va fi prezentat mai în de către“ X ˆ 2 „Expresie sau echivalent de“ x ** 2 “Expresie. Singurul citat“ ' “Operatorul va fi prezentat mai în de către“ X ˆ 2 „Expresie sau echivalent de“ x ** 2 “Expresie. Singurul citat“ ' “Operatorul va fi prezentat mai în de către“ X ˆ 2 „Expresie sau echivalent de“ x ** 2 “Expresie. Singurul citat“ ' “Operatorul va fi prezentat mai în
profunzime în sec•iunea 3.7 , Care prezintă numere complexe. Acesta va fi examinat din nou în sec•iunea 4.12 , profunzime în sec•iunea 3.7 , Care prezintă numere complexe. Acesta va fi examinat din nou în sec•iunea 4.12 , profunzime în sec•iunea 3.7 , Care prezintă numere complexe. Acesta va fi examinat din nou în sec•iunea 4.12 , profunzime în sec•iunea 3.7 , Care prezintă numere complexe. Acesta va fi examinat din nou în sec•iunea 4.12 , profunzime în sec•iunea 3.7 , Care prezintă numere complexe. Acesta va fi examinat din nou în sec•iunea 4.12 ,
Care se ocupă cu transpusa conjugată a unei matrice.
3.2 Numele de variabile
Numele de variabile pot fi, atâta timp cât utilizatorul dore•te, dar numai 24 de caractere Fi prima sunt luate în
considerare în Scilab. Pentru coeren•ă, ar trebui să ia în considerare numai nume de variabile care nu sunt
realizate din mai mult de 24 de caractere. Toate literele ASCII de la“ A " la " din “, De la“ A " la " cu “•i cifre de la“ 0 " la " 9 “Sunt realizate din mai mult de 24 de caractere. Toate literele ASCII de la“ A " la " din “, De la“ A " la " cu “•i cifre de la“ 0 " la " 9 “Sunt realizate din mai mult de 24 de caractere. Toate literele ASCII de la“ A " la " din “, De la“ A " la " cu “•i cifre de la“ 0 " la " 9 “Sunt realizate din mai mult de 24 de caractere. Toate literele ASCII de la“ A " la " din “, De la“ A " la " cu “•i cifre de la“ 0 " la " 9 “Sunt realizate din mai mult de 24 de caractere. Toate literele ASCII de la“ A " la " din “, De la“ A " la " cu “•i cifre de la“ 0 " la " 9 “Sunt realizate din mai mult de 24 de caractere. Toate literele ASCII de la“ A " la " din “, De la“ A " la " cu “•i cifre de la“ 0 " la " 9 “Sunt realizate din mai mult de 24 de caractere. Toate literele ASCII de la“ A " la " din “, De la“ A " la " cu “•i cifre de la“ 0 " la " 9 “Sunt realizate din mai mult de 24 de caractere. Toate literele ASCII de la“ A " la " din “, De la“ A " la " cu “•i cifre de la“ 0 " la " 9 “Sunt realizate din mai mult de 24 de caractere. Toate literele ASCII de la“ A " la " din “, De la“ A " la " cu “•i cifre de la“ 0 " la " 9 “Sunt realizate din mai mult de 24 de caractere. Toate literele ASCII de la“ A " la " din “, De la“ A " la " cu “•i cifre de la“ 0 " la " 9 “Sunt realizate din mai mult de 24 de caractere. Toate literele ASCII de la“ A " la " din “, De la“ A " la " cu “•i cifre de la“ 0 " la " 9 “Sunt realizate din mai mult de 24 de caractere. Toate literele ASCII de la“ A " la " din “, De la“ A " la " cu “•i cifre de la“ 0 " la " 9 “Sunt realizate din mai mult de 24 de caractere. Toate literele ASCII de la“ A " la " din “, De la“ A " la " cu “•i cifre de la“ 0 " la " 9 “Sunt
permise, cu caractere suplimentare«%»,«_»,«#»,«!»,«$»,«?». Observa•i, totu•i, că numele de variabile, a căror
literă este prima fi „%“, au o semnifica•ie specială în Scilab, după cum vom vedea în sec•iunea 3.5 , Care prezintă literă este prima fi „%“, au o semnifica•ie specială în Scilab, după cum vom vedea în sec•iunea 3.5 , Care prezintă literă este prima fi „%“, au o semnifica•ie specială în Scilab, după cum vom vedea în sec•iunea 3.5 , Care prezintă
pre-de fi variabile matematice NED.
Scilab este sensibil caz, ceea ce înseamnă că litere mari •i inferioare sunt considerate a fi di ff erent de
Scilab. În următorul scenariu, noi definim cele două variabile
A •i A •i se verifică dacă aceste două variabile sunt considerate a fi di ff erent de Scilab. A •i A •i se verifică dacă aceste două variabile sunt considerate a fi di ff erent de Scilab. A •i A •i se verifică dacă aceste două variabile sunt considerate a fi di ff erent de Scilab. A •i A •i se verifică dacă aceste două variabile sunt considerate a fi di ff erent de Scilab.
–> A = 2 A =
2.
–> A = 1 a =
1.
–> AA
=
2.
21

–> Aa
=
1.
3.3 Comentarii •i continuarea liniilor
Orice linie care începe cu două linii oblice „//“ este considerat de Scilab ca un comentariu •i este ignorată. Nu
există nici o posibilitate de a comenta un bloc de linii, cum ar fi cu „/ * … * /“, În limba C. există nici o posibilitate de a comenta un bloc de linii, cum ar fi cu „/ * … * /“, În limba C. există nici o posibilitate de a comenta un bloc de linii, cum ar fi cu „/ * … * /“, În limba C.
Atunci când o instruc•iune executabilă este prea lung pentru a fi scrise pe o singură linie, a doua •i
următoarele linii se numesc linii de continuare. În Scilab, orice linie care se termină cu două puncte este
considerat a fi începutul unei noi linii de continuare. În următoarea sesiune, vom da exemple de comentarii
Scilab •i continuarea liniilor.
–>// Acesta este comentariul meu.
–> X = 1 ..
–>+2 ..
–>+3 ..
–>+ 4
x =
10.
3.4 Func•ii matematice elementare
Mese 13 •i 14 prezintă o listă de func•ii matematice elementare. Cele mai multe dintre aceste func•ii să ia un singur Mese 13 •i 14 prezintă o listă de func•ii matematice elementare. Cele mai multe dintre aceste func•ii să ia un singur Mese 13 •i 14 prezintă o listă de func•ii matematice elementare. Cele mai multe dintre aceste func•ii să ia un singur Mese 13 •i 14 prezintă o listă de func•ii matematice elementare. Cele mai multe dintre aceste func•ii să ia un singur Mese 13 •i 14 prezintă o listă de func•ii matematice elementare. Cele mai multe dintre aceste func•ii să ia un singur
argument de intrare •i de a reveni un argument de ie•ire. Aceste func•ii sunt vectorizate, în sensul că de intrare •i de
ie•ire argumentele lor sunt matrici. Acest lucru permite să calculeze datele cu performan•e superioare, fără nici un fel
de buclă.
În exemplul următor, vom folosi cos •i fără func•ii •i verifica cos egalitate ( X) 2 + păcat ( X) 2 = 1. În exemplul următor, vom folosi cos •i fără func•ii •i verifica cos egalitate ( X) 2 + păcat ( X) 2 = 1. În exemplul următor, vom folosi cos •i fără func•ii •i verifica cos egalitate ( X) 2 + păcat ( X) 2 = 1. În exemplul următor, vom folosi cos •i fără func•ii •i verifica cos egalitate ( X) 2 + păcat ( X) 2 = 1. În exemplul următor, vom folosi cos •i fără func•ii •i verifica cos egalitate ( X) 2 + păcat ( X) 2 = 1. În exemplul următor, vom folosi cos •i fără func•ii •i verifica cos egalitate ( X) 2 + păcat ( X) 2 = 1. În exemplul următor, vom folosi cos •i fără func•ii •i verifica cos egalitate ( X) 2 + păcat ( X) 2 = 1. În exemplul următor, vom folosi cos •i fără func•ii •i verifica cos egalitate ( X) 2 + păcat ( X) 2 = 1. În exemplul următor, vom folosi cos •i fără func•ii •i verifica cos egalitate ( X) 2 + păcat ( X) 2 = 1. În exemplul următor, vom folosi cos •i fără func•ii •i verifica cos egalitate ( X) 2 + păcat ( X) 2 = 1. În exemplul următor, vom folosi cos •i fără func•ii •i verifica cos egalitate ( X) 2 + păcat ( X) 2 = 1.
–>x = cos (2) x =
-0.4161468
–>y = sin (2) y =
0.9092974
–>x ^ 2 + y ^ 2
ani =
1.
3.5 Pre-de fi variabile matematice nite
În Scilab, mai multe variabile matematice sunt pre-variabile de fi nite, ale căror nume începe cu un caracter la
sută „%“. Variabilele care au o semnifica•ie matematică sunt rezumate în fi gure 15 . sută „%“. Variabilele care au o semnifica•ie matematică sunt rezumate în fi gure 15 . sută „%“. Variabilele care au o semnifica•ie matematică sunt rezumate în fi gure 15 .
În exemplul următor, folosim variabila% pi pentru a verifica cos egalitate matematice ( X) 2 + păcat ( X) 2 = 1. În exemplul următor, folosim variabila% pi pentru a verifica cos egalitate matematice ( X) 2 + păcat ( X) 2 = 1. În exemplul următor, folosim variabila% pi pentru a verifica cos egalitate matematice ( X) 2 + păcat ( X) 2 = 1. În exemplul următor, folosim variabila% pi pentru a verifica cos egalitate matematice ( X) 2 + păcat ( X) 2 = 1. În exemplul următor, folosim variabila% pi pentru a verifica cos egalitate matematice ( X) 2 + păcat ( X) 2 = 1. În exemplul următor, folosim variabila% pi pentru a verifica cos egalitate matematice ( X) 2 + păcat ( X) 2 = 1. În exemplul următor, folosim variabila% pi pentru a verifica cos egalitate matematice ( X) 2 + păcat ( X) 2 = 1. În exemplul următor, folosim variabila% pi pentru a verifica cos egalitate matematice ( X) 2 + păcat ( X) 2 = 1. În exemplul următor, folosim variabila% pi pentru a verifica cos egalitate matematice ( X) 2 + păcat ( X) 2 = 1.
22

acos acosd ACOSH acoshm acosm acot acotd acoth ACSC acscd acsch ASEC
asecd asech asin Asind
ASINH ASINH atribuie un fluaj a•teaptă ATANH atanhm atanm
cos cosd coshm cosh COSM cotd cotg coth
cothm csc CSCD csch sec secd au fost fără
sinc sunt sinh tan sinhm sinm dinte cu gust de pe•te
tanhm tanm
Figura 13: func•ii matematice elementare Scilab: trigonometrie.
exp expm log log10 log1p log2 logm max
maxi min mini modulo pmodulo semn signm sqrt sqrtm
Figura 14: Scilab elementare func•ii matematice: alte func•ii.
–>c = cos (% pi) c =
-1.
–>s = sin (% pi) s =
1.225D-16
–>c ^ 2 + s ^ 2
ani =
1.
Faptul că valoarea calculată a păcatului ( ii) este nu chiar egal cu 0 este o consecin•ă a faptului că Scilab Faptul că valoarea calculată a păcatului ( ii) este nu chiar egal cu 0 este o consecin•ă a faptului că Scilab Faptul că valoarea calculată a păcatului ( ii) este nu chiar egal cu 0 este o consecin•ă a faptului că Scilab Faptul că valoarea calculată a păcatului ( ii) este nu chiar egal cu 0 este o consecin•ă a faptului că Scilab Faptul că valoarea calculată a păcatului ( ii) este nu chiar egal cu 0 este o consecin•ă a faptului că Scilab
stochează numerele reale cu numere de puncte fl flotante, adică, cu o precizie limitată.
3.6 Booleans
Variabilele booleene pot stoca valori reale sau false. În Scilab, adevărat este scris cu% T Variabilele booleene pot stoca valori reale sau false. În Scilab, adevărat este scris cu% T
sau% T •i fals este scris cu% f sau% F. Figura 16 prezintă o serie de operatori de compara•ie care sunt disponibile sau% T •i fals este scris cu% f sau% F. Figura 16 prezintă o serie de operatori de compara•ie care sunt disponibile sau% T •i fals este scris cu% f sau% F. Figura 16 prezintă o serie de operatori de compara•ie care sunt disponibile sau% T •i fals este scris cu% f sau% F. Figura 16 prezintă o serie de operatori de compara•ie care sunt disponibile sau% T •i fals este scris cu% f sau% F. Figura 16 prezintă o serie de operatori de compara•ie care sunt disponibile sau% T •i fals este scris cu% f sau% F. Figura 16 prezintă o serie de operatori de compara•ie care sunt disponibile sau% T •i fals este scris cu% f sau% F. Figura 16 prezintă o serie de operatori de compara•ie care sunt disponibile sau% T •i fals este scris cu% f sau% F. Figura 16 prezintă o serie de operatori de compara•ie care sunt disponibile sau% T •i fals este scris cu% f sau% F. Figura 16 prezintă o serie de operatori de compara•ie care sunt disponibile
în Scilab. Ace•ti operatori returnează valori boolean •i să ia ca argumente de intrare toate tipurile de date de bază
(de exemplu, reale •i complexe numere, numere întregi •i •iruri). Operatorii de comparare sunt revizuite în
sec•iunea 4.14 , În cazul în care se face accentul pe compararea matricelor. sec•iunea 4.14 , În cazul în care se face accentul pe compararea matricelor. sec•iunea 4.14 , În cazul în care se face accentul pe compararea matricelor.
În exemplul următor, vom efectua unele calcule algebrice cu boolean Scilab.
% i numărul imaginar eu numărul imaginar eu
% e constanta lui Euler e % e constanta lui Euler e % e constanta lui Euler e
% pi constanta matematică Fr. % pi constanta matematică Fr. % pi constanta matematică Fr.
Figura 15: pre-de fi variabile matematice NED.
23

a & b logică •i
a | b logică sau
~ A ~ A logic nu
a == b adevărat dacă cele două expresii sunt egale
A ~ = b sau a <> b adevărat dacă cele două expresii sunt di ff erent A ~ = b sau a <> b adevărat dacă cele două expresii sunt di ff erent A ~ = b sau a <> b adevărat dacă cele două expresii sunt di ff erent A ~ = b sau a <> b adevărat dacă cele două expresii sunt di ff erent A ~ = b sau a <> b adevărat dacă cele două expresii sunt di ff erent A ~ = b sau a <> b adevărat dacă cele două expresii sunt di ff erent
a <b adevărat dacă A este mai mic decât b adevărat dacă A este mai mic decât b adevărat dacă A este mai mic decât b adevărat dacă A este mai mic decât b
a> b adevărat dacă A este mai mare decât b adevărat dacă A este mai mare decât b adevărat dacă A este mai mare decât b adevărat dacă A este mai mare decât b
a <= b adevărat dacă A este mai mic sau egal cu b adevărat dacă A este mai mic sau egal cu b adevărat dacă A este mai mic sau egal cu b adevărat dacă A este mai mic sau egal cu b
a> = b adevărat dacă A este mai mare sau egal cu b adevărat dacă A este mai mare sau egal cu b adevărat dacă A este mai mare sau egal cu b adevărat dacă A este mai mare sau egal cu b
Figura 16: Operatorii de comparare.
real partea reală
imag partea imaginară
imult multiplicare de I, unitar imaginar imult multiplicare de I, unitar imaginar imult multiplicare de I, unitar imaginar imult multiplicare de I, unitar imaginar
e real returnează true dacă variabila nu are nicio intrare complexă e real returnează true dacă variabila nu are nicio intrare complexă
Figura 17: numere complexe Scilab func•ii elementare.
–> A =% T
a = T
–>b = (0 == 1) b = F
–> A & B
ans = F
3.7 Numere complexe
Scilab oferă numere complexe, care sunt stocate ca perechi de numere de puncte fl flotante. Pre-de definit%
variabilă eu reprezintă numărul imaginar matematic eu care satis fi es eu 2 = – 1. Toate func•iile elementare variabilă eu reprezintă numărul imaginar matematic eu care satis fi es eu 2 = – 1. Toate func•iile elementare variabilă eu reprezintă numărul imaginar matematic eu care satis fi es eu 2 = – 1. Toate func•iile elementare variabilă eu reprezintă numărul imaginar matematic eu care satis fi es eu 2 = – 1. Toate func•iile elementare variabilă eu reprezintă numărul imaginar matematic eu care satis fi es eu 2 = – 1. Toate func•iile elementare variabilă eu reprezintă numărul imaginar matematic eu care satis fi es eu 2 = – 1. Toate func•iile elementare variabilă eu reprezintă numărul imaginar matematic eu care satis fi es eu 2 = – 1. Toate func•iile elementare variabilă eu reprezintă numărul imaginar matematic eu care satis fi es eu 2 = – 1. Toate func•iile elementare variabilă eu reprezintă numărul imaginar matematic eu care satis fi es eu 2 = – 1. Toate func•iile elementare
prezentate anterior înainte, cum ar fi fără prezentate anterior înainte, cum ar fi fără
de exemplu, sunt supraîncărcate pentru numere complexe. Acest lucru înseamnă că, în cazul în care argumentul lor de
intrare este un număr complex, rezultatul este un număr complex. Figura 17 prezintă func•ii care permit gestionarea intrare este un număr complex, rezultatul este un număr complex. Figura 17 prezintă func•ii care permit gestionarea intrare este un număr complex, rezultatul este un număr complex. Figura 17 prezintă func•ii care permit gestionarea
numerelor complexe.
În exemplul următor, am stabilit variabila X la 1 + I, •i de a efectua mai multe opera•ii de bază pe ea, cum În exemplul următor, am stabilit variabila X la 1 + I, •i de a efectua mai multe opera•ii de bază pe ea, cum În exemplul următor, am stabilit variabila X la 1 + I, •i de a efectua mai multe opera•ii de bază pe ea, cum În exemplul următor, am stabilit variabila X la 1 + I, •i de a efectua mai multe opera•ii de bază pe ea, cum În exemplul următor, am stabilit variabila X la 1 + I, •i de a efectua mai multe opera•ii de bază pe ea, cum
ar fi preluarea păr•ilor sale reale •i imaginare. Observa•i modul în care operatorul unic citat, notat cu“ ' “, Este ar fi preluarea păr•ilor sale reale •i imaginare. Observa•i modul în care operatorul unic citat, notat cu“ ' “, Este ar fi preluarea păr•ilor sale reale •i imaginare. Observa•i modul în care operatorul unic citat, notat cu“ ' “, Este
folosit pentru a calcula conjugatul unui număr complex.
–>x = 1 +% ix =
1. + i
–>israel (x) ans = F
24

int8 int16 int32 uint8 uint16
uint32
Figura 18: Scilab tipuri de date întregi.
–> X ani“=
1. – i
–>y = 1% iy =
1. – i
–>reale (y) =
ans
1.
–>imag (y) =
ans
-1.
Am Fi Verificarea nally că egalitatea (1+ i) ( 1 – i) = 1 – eu 2 = 2 este veri fi ed de Scilab. Am Fi Verificarea nally că egalitatea (1+ i) ( 1 – i) = 1 – eu 2 = 2 este veri fi ed de Scilab. Am Fi Verificarea nally că egalitatea (1+ i) ( 1 – i) = 1 – eu 2 = 2 este veri fi ed de Scilab. Am Fi Verificarea nally că egalitatea (1+ i) ( 1 – i) = 1 – eu 2 = 2 este veri fi ed de Scilab. Am Fi Verificarea nally că egalitatea (1+ i) ( 1 – i) = 1 – eu 2 = 2 este veri fi ed de Scilab. Am Fi Verificarea nally că egalitatea (1+ i) ( 1 – i) = 1 – eu 2 = 2 este veri fi ed de Scilab. Am Fi Verificarea nally că egalitatea (1+ i) ( 1 – i) = 1 – eu 2 = 2 este veri fi ed de Scilab. Am Fi Verificarea nally că egalitatea (1+ i) ( 1 – i) = 1 – eu 2 = 2 este veri fi ed de Scilab. Am Fi Verificarea nally că egalitatea (1+ i) ( 1 – i) = 1 – eu 2 = 2 este veri fi ed de Scilab. Am Fi Verificarea nally că egalitatea (1+ i) ( 1 – i) = 1 – eu 2 = 2 este veri fi ed de Scilab.
–> X * y =
ani
2.
3.8 Întregi
Putem crea diferite tipuri de variabile întregi cu Scilab. Func•iile care permit crearea unor astfel de numere
întregi sunt prezentate în fi gure 18 . întregi sunt prezentate în fi gure 18 . întregi sunt prezentate în fi gure 18 .
În această sec•iune, vom Fi prima revistă caracteristicile de bază ale numere întregi, care sunt asociate cu un
anumit interval de valori. Apoi vom analiza conversia între numere întregi. În sec•iunea finală, considerăm
comportamentul numere întregi la limitele •i să se concentreze pe probleme de portabilitate.
3.8.1 Prezentare generală a numerelor întregi
Există o legătură directă între numărul de bi•i folosi•i pentru a stoca un număr întreg •i intervalul de valori pe
care pot gestiona întreg. Intervalul unei variabile întreg depinde de numărul de bi•i ai săi.
•Un n bit a semnat număr întreg ia valorile din intervalul [ – 2 n – 1, 2 n – 1 – 1]. Un n bit a semnat număr întreg ia valorile din intervalul [ – 2 n – 1, 2 n – 1 – 1]. Un n bit a semnat număr întreg ia valorile din intervalul [ – 2 n – 1, 2 n – 1 – 1]. Un n bit a semnat număr întreg ia valorile din intervalul [ – 2 n – 1, 2 n – 1 – 1]. Un n bit a semnat număr întreg ia valorile din intervalul [ – 2 n – 1, 2 n – 1 – 1]. Un n bit a semnat număr întreg ia valorile din intervalul [ – 2 n – 1, 2 n – 1 – 1]. Un n bit a semnat număr întreg ia valorile din intervalul [ – 2 n – 1, 2 n – 1 – 1]. Un n bit a semnat număr întreg ia valorile din intervalul [ – 2 n – 1, 2 n – 1 – 1]. Un n bit a semnat număr întreg ia valorile din intervalul [ – 2 n – 1, 2 n – 1 – 1]. Un n bit a semnat număr întreg ia valorile din intervalul [ – 2 n – 1, 2 n – 1 – 1]. Un n bit a semnat număr întreg ia valorile din intervalul [ – 2 n – 1, 2 n – 1 – 1]. Un n bit a semnat număr întreg ia valorile din intervalul [ – 2 n – 1, 2 n – 1 – 1]. Un n bit a semnat număr întreg ia valorile din intervalul [ – 2 n – 1, 2 n – 1 – 1]. Un n bit a semnat număr întreg ia valorile din intervalul [ – 2 n – 1, 2 n – 1 – 1].
•Un n bit întreg fără semn ia valorile din intervalul [0, 2 n – 1]. Un n bit întreg fără semn ia valorile din intervalul [0, 2 n – 1]. Un n bit întreg fără semn ia valorile din intervalul [0, 2 n – 1]. Un n bit întreg fără semn ia valorile din intervalul [0, 2 n – 1]. Un n bit întreg fără semn ia valorile din intervalul [0, 2 n – 1]. Un n bit întreg fără semn ia valorile din intervalul [0, 2 n – 1].
De exemplu, un 8-bi•i semnat număr întreg, cum a fost creat de către int8 func•ia, poate stoca valori în De exemplu, un 8-bi•i semnat număr întreg, cum a fost creat de către int8 func•ia, poate stoca valori în De exemplu, un 8-bi•i semnat număr întreg, cum a fost creat de către int8 func•ia, poate stoca valori în
intervalul [ – 2 7, 2 7 – 1], care fi a• es la [ – 128, 127]. Harta de tipul întreg în intervalul corespunzător valorilor este intervalul [ – 2 7, 2 7 – 1], care fi a• es la [ – 128, 127]. Harta de tipul întreg în intervalul corespunzător valorilor este intervalul [ – 2 7, 2 7 – 1], care fi a• es la [ – 128, 127]. Harta de tipul întreg în intervalul corespunzător valorilor este intervalul [ – 2 7, 2 7 – 1], care fi a• es la [ – 128, 127]. Harta de tipul întreg în intervalul corespunzător valorilor este intervalul [ – 2 7, 2 7 – 1], care fi a• es la [ – 128, 127]. Harta de tipul întreg în intervalul corespunzător valorilor este intervalul [ – 2 7, 2 7 – 1], care fi a• es la [ – 128, 127]. Harta de tipul întreg în intervalul corespunzător valorilor este intervalul [ – 2 7, 2 7 – 1], care fi a• es la [ – 128, 127]. Harta de tipul întreg în intervalul corespunzător valorilor este intervalul [ – 2 7, 2 7 – 1], care fi a• es la [ – 128, 127]. Harta de tipul întreg în intervalul corespunzător valorilor este intervalul [ – 2 7, 2 7 – 1], care fi a• es la [ – 128, 127]. Harta de tipul întreg în intervalul corespunzător valorilor este intervalul [ – 2 7, 2 7 – 1], care fi a• es la [ – 128, 127]. Harta de tipul întreg în intervalul corespunzător valorilor este intervalul [ – 2 7, 2 7 – 1], care fi a• es la [ – 128, 127]. Harta de tipul întreg în intervalul corespunzător valorilor este
prezentată în fi gure 19 . În următoarea sesiune, vom verifica dacă un 32 de bi•i întreg fără semn are valori în prezentată în fi gure 19 . În următoarea sesiune, vom verifica dacă un 32 de bi•i întreg fără semn are valori în prezentată în fi gure 19 . În următoarea sesiune, vom verifica dacă un 32 de bi•i întreg fără semn are valori în
interiorul intervalul [0, 2 32 – 1], care fi a• es la [0, 4294967295]. interiorul intervalul [0, 2 32 – 1], care fi a• es la [0, 4294967295]. interiorul intervalul [0, 2 32 – 1], care fi a• es la [0, 4294967295]. interiorul intervalul [0, 2 32 – 1], care fi a• es la [0, 4294967295].
–>Format (25)
–> N = 32
25

y = int8 (x) a semnat întreg de 8 bi•i în [ – 2 7, 2 7 – 1] = [ – 128, 127] a semnat întreg de 8 bi•i în [ – 2 7, 2 7 – 1] = [ – 128, 127] a semnat întreg de 8 bi•i în [ – 2 7, 2 7 – 1] = [ – 128, 127] a semnat întreg de 8 bi•i în [ – 2 7, 2 7 – 1] = [ – 128, 127] a semnat întreg de 8 bi•i în [ – 2 7, 2 7 – 1] = [ – 128, 127] a semnat întreg de 8 bi•i în [ – 2 7, 2 7 – 1] = [ – 128, 127] a semnat întreg de 8 bi•i în [ – 2 7, 2 7 – 1] = [ – 128, 127] a semnat întreg de 8 bi•i în [ – 2 7, 2 7 – 1] = [ – 128, 127] a semnat întreg de 8 bi•i în [ – 2 7, 2 7 – 1] = [ – 128, 127] a semnat întreg de 8 bi•i în [ – 2 7, 2 7 – 1] = [ – 128, 127]
y = uint8 (x) un număr întreg de 8 bi•i fără semn în [0, 2 8 – 1] = [0, 255] un număr întreg de 8 bi•i fără semn în [0, 2 8 – 1] = [0, 255] un număr întreg de 8 bi•i fără semn în [0, 2 8 – 1] = [0, 255] un număr întreg de 8 bi•i fără semn în [0, 2 8 – 1] = [0, 255]
y = int16 (x) a semnat întreg pe 16 bi•i în [ – 2 15, 2 15 – 1] = [ – 32768, 32767] a semnat întreg pe 16 bi•i în [ – 2 15, 2 15 – 1] = [ – 32768, 32767] a semnat întreg pe 16 bi•i în [ – 2 15, 2 15 – 1] = [ – 32768, 32767] a semnat întreg pe 16 bi•i în [ – 2 15, 2 15 – 1] = [ – 32768, 32767] a semnat întreg pe 16 bi•i în [ – 2 15, 2 15 – 1] = [ – 32768, 32767] a semnat întreg pe 16 bi•i în [ – 2 15, 2 15 – 1] = [ – 32768, 32767] a semnat întreg pe 16 bi•i în [ – 2 15, 2 15 – 1] = [ – 32768, 32767] a semnat întreg pe 16 bi•i în [ – 2 15, 2 15 – 1] = [ – 32768, 32767] a semnat întreg pe 16 bi•i în [ – 2 15, 2 15 – 1] = [ – 32768, 32767] a semnat întreg pe 16 bi•i în [ – 2 15, 2 15 – 1] = [ – 32768, 32767]
y = uint16 (x) un întreg pe 16 bi•i fără semn în [0, 2 16 – 1] = [0, 65535] y = uint16 (x) un întreg pe 16 bi•i fără semn în [0, 2 16 – 1] = [0, 65535] y = uint16 (x) un întreg pe 16 bi•i fără semn în [0, 2 16 – 1] = [0, 65535] y = uint16 (x) un întreg pe 16 bi•i fără semn în [0, 2 16 – 1] = [0, 65535] y = uint16 (x) un întreg pe 16 bi•i fără semn în [0, 2 16 – 1] = [0, 65535]
y = int32 (x) un întreg semnat pe 32 de bi•i, în [ – 2 31, 2 31 – 1] = [ – 2147483648, 2147483647] un întreg semnat pe 32 de bi•i, în [ – 2 31, 2 31 – 1] = [ – 2147483648, 2147483647] un întreg semnat pe 32 de bi•i, în [ – 2 31, 2 31 – 1] = [ – 2147483648, 2147483647] un întreg semnat pe 32 de bi•i, în [ – 2 31, 2 31 – 1] = [ – 2147483648, 2147483647] un întreg semnat pe 32 de bi•i, în [ – 2 31, 2 31 – 1] = [ – 2147483648, 2147483647] un întreg semnat pe 32 de bi•i, în [ – 2 31, 2 31 – 1] = [ – 2147483648, 2147483647] un întreg semnat pe 32 de bi•i, în [ – 2 31, 2 31 – 1] = [ – 2147483648, 2147483647] un întreg semnat pe 32 de bi•i, în [ – 2 31, 2 31 – 1] = [ – 2147483648, 2147483647] un întreg semnat pe 32 de bi•i, în [ – 2 31, 2 31 – 1] = [ – 2147483648, 2147483647] un întreg semnat pe 32 de bi•i, în [ – 2 31, 2 31 – 1] = [ – 2147483648, 2147483647]
y = uint32 (x) un întreg pe 32 de bi•i fără semn în [0, 2 32 – 1] = [0, 4294967295] y = uint32 (x) un întreg pe 32 de bi•i fără semn în [0, 2 32 – 1] = [0, 4294967295] y = uint32 (x) un întreg pe 32 de bi•i fără semn în [0, 2 32 – 1] = [0, 4294967295] y = uint32 (x) un întreg pe 32 de bi•i fără semn în [0, 2 32 – 1] = [0, 4294967295] y = uint32 (x) un întreg pe 32 de bi•i fără semn în [0, 2 32 – 1] = [0, 4294967295]
Figura 19: Func•iile întregi Scilab.
conversia iconvert la inttype reprezentare întreagă
tip de numere întregi
Figura 20: func•ii de conversie întregi Scilab.
n =
32.
–>2 ^ n – 1 an =
4294967295.
–>i = uint32 (0) = 0 •i
–> J = i-1 j =
4294967295
–>k = j + 1 k = 0
3.8.2 conversii între numere întregi
Există func•ii care permit să se convertească la •i de la tipuri de date întregi. Aceste func•ii sunt prezentate în
fi gure 20 . inttype Func•ia permite să se intereseze despre tipul unei variabile întreg. În func•ie de tipul, fi gure 20 . inttype Func•ia permite să se intereseze despre tipul unei variabile întreg. În func•ie de tipul, fi gure 20 . inttype Func•ia permite să se intereseze despre tipul unei variabile întreg. În func•ie de tipul, fi gure 20 . inttype Func•ia permite să se intereseze despre tipul unei variabile întreg. În func•ie de tipul, fi gure 20 . inttype Func•ia permite să se intereseze despre tipul unei variabile întreg. În func•ie de tipul,
func•ia returnează o valoare corespunzătoare, a•a cum se rezumă în tabelul 21 . func•ia returnează o valoare corespunzătoare, a•a cum se rezumă în tabelul 21 . func•ia returnează o valoare corespunzătoare, a•a cum se rezumă în tabelul 21 .
inttype (x) Tip 1 inttype (x) Tip 1
8-bi•i semnat întreg
2 16-bi•i semnat întreg
4 32-bi•i semnat întreg
11 8 bi•i întreg fără semn
12 16 bi•i întreg fără semn
14 32 de bi•i întreg fără semn
Figura 21: Tipuri de numere întregi returnate de către inttype funcție. Figura 21: Tipuri de numere întregi returnate de către inttype funcție. Figura 21: Tipuri de numere întregi returnate de către inttype funcție.
26

Când sunt adăugate două numere întregi, sunt analizate tipurile de operanzilor: rezultă tipul întreg este
mai mare, astfel încât rezultatul poate fi stocat. În următorul script, vom crea un număr întreg de 8 bi•i I ( care mai mare, astfel încât rezultatul poate fi stocat. În următorul script, vom crea un număr întreg de 8 bi•i I ( care mai mare, astfel încât rezultatul poate fi stocat. În următorul script, vom crea un număr întreg de 8 bi•i I ( care
este asociat cu inttype = 1) •i un număr întreg de 16 bi•i j ( care este asociat cu inttype = 2). Rezultatul este este asociat cu inttype = 1) •i un număr întreg de 16 bi•i j ( care este asociat cu inttype = 2). Rezultatul este este asociat cu inttype = 1) •i un număr întreg de 16 bi•i j ( care este asociat cu inttype = 2). Rezultatul este este asociat cu inttype = 1) •i un număr întreg de 16 bi•i j ( care este asociat cu inttype = 2). Rezultatul este este asociat cu inttype = 1) •i un număr întreg de 16 bi•i j ( care este asociat cu inttype = 2). Rezultatul este este asociat cu inttype = 1) •i un număr întreg de 16 bi•i j ( care este asociat cu inttype = 2). Rezultatul este este asociat cu inttype = 1) •i un număr întreg de 16 bi•i j ( care este asociat cu inttype = 2). Rezultatul este
stocat în k, un 16-bit semnat întreg. stocat în k, un 16-bit semnat întreg. stocat în k, un 16-bit semnat întreg.
–>i = int8 (1) = 1
–>inttype (i) ans =
1.
–>j = int16 (2) j = 2
–>inttype (j) = ani
2.
–> K = i + jk
= 3
–>inttype (k) = ans
2.
3.8.3 numere întregi circulară •i portabilitate
Comportamentul de numere întregi la limitele domeniului merită o analiză specială, deoarece este di ff erent de la
software-ul pentru software-ul. În Scilab, comportamentul este circular, software-ul pentru software-ul. În Scilab, comportamentul este circular,
adică, în cazul în care un număr întreg la limita superioară este incrementat, valoarea următoare se situează la limita inferioară. Un
exemplu de comportament circulară este dat în sesiunea următoare, în cazul în care
–>uint8 (0+ (-4: 4)) ans =
253 254 255 252 0 1 2 3 4
–>uint8 (2 ^ 8 + (-4: 4)) ans =
253 254 255 252 0 1 2 3 4
–>int8 (2 ^ 7 + (-4: 4)) ans =
124 125 126 127 -128 -127 -126 -125 -124
Acest lucru este în contrast cu alte pachete matematice, cum ar fi Octave sau Matlab. În aceste pachete, în
cazul în care un număr întreg este la limita superioară, următorul număr întreg stă la limita superioară. În
următoarea sesiune Octave, executăm acelea•i calcule ca •i anterior.
octavă -3.2.4. exe: 1> uint8 (0+ (-4: 4)) ans =
0 0 0 0 0 1 2 3 4 octave -3.2.4. exe: 5> uint8 (2 ^ 8 + (-4: 4)) ans =
253 254 255 252 255 255 255 255 255 octavă -3.2.4. exe: 2> int8 (2 ^ 7 + (-4: 4))
ans =
27

124 125 126 127 127 127 127 127 127
Modul circular Scilab permite o flexibilitate mai mare în prelucrarea de numere întregi, deoarece permite să
scrie algoritmi cu mai pu•ine dacă declara•ii. Dar ace•ti algoritmi trebuie să fie verificate, în special în cazul în care scrie algoritmi cu mai pu•ine dacă declara•ii. Dar ace•ti algoritmi trebuie să fie verificate, în special în cazul în care scrie algoritmi cu mai pu•ine dacă declara•ii. Dar ace•ti algoritmi trebuie să fie verificate, în special în cazul în care
acestea implică limitele. Mai mult decât atât, traducerea unui script dintr-un alt sistem de calcul în Scilab poate
conduce la rezultate erent di ff.
3.9 numere întregi în virgulă mobilă
În Scilab, variabila numerică implicită este dublu, adică pe 64 de bi•i fl numărul punctului flotante. Acest lucru
este valabil chiar dacă vom scrie ceea ce este matematic un număr întreg. În [ 9 ], Cleve Moler apela acest număr este valabil chiar dacă vom scrie ceea ce este matematic un număr întreg. În [ 9 ], Cleve Moler apela acest număr este valabil chiar dacă vom scrie ceea ce este matematic un număr întreg. În [ 9 ], Cleve Moler apela acest număr
un „int fl“, prescurtarea de la fl punct întreg flotante. În practică, putem stoca în siguran•ă numere întregi în
intervalul [ – 2 52, 2 52] în camere duble. Subliniem faptul că, cu condi•ia ca toate valorile de intrare, intermediare •i de intervalul [ – 2 52, 2 52] în camere duble. Subliniem faptul că, cu condi•ia ca toate valorile de intrare, intermediare •i de intervalul [ – 2 52, 2 52] în camere duble. Subliniem faptul că, cu condi•ia ca toate valorile de intrare, intermediare •i de intervalul [ – 2 52, 2 52] în camere duble. Subliniem faptul că, cu condi•ia ca toate valorile de intrare, intermediare •i de intervalul [ – 2 52, 2 52] în camere duble. Subliniem faptul că, cu condi•ia ca toate valorile de intrare, intermediare •i de intervalul [ – 2 52, 2 52] în camere duble. Subliniem faptul că, cu condi•ia ca toate valorile de intrare, intermediare •i de intervalul [ – 2 52, 2 52] în camere duble. Subliniem faptul că, cu condi•ia ca toate valorile de intrare, intermediare •i de
ie•ire sunt numere întregi strict în interiorul [ – 2 52, 2 52] interval, calculele întregi sunt exacte. De exemplu, în ie•ire sunt numere întregi strict în interiorul [ – 2 52, 2 52] interval, calculele întregi sunt exacte. De exemplu, în ie•ire sunt numere întregi strict în interiorul [ – 2 52, 2 52] interval, calculele întregi sunt exacte. De exemplu, în ie•ire sunt numere întregi strict în interiorul [ – 2 52, 2 52] interval, calculele întregi sunt exacte. De exemplu, în ie•ire sunt numere întregi strict în interiorul [ – 2 52, 2 52] interval, calculele întregi sunt exacte. De exemplu, în ie•ire sunt numere întregi strict în interiorul [ – 2 52, 2 52] interval, calculele întregi sunt exacte. De exemplu, în ie•ire sunt numere întregi strict în interiorul [ – 2 52, 2 52] interval, calculele întregi sunt exacte. De exemplu, în
exemplul următor, vom efectua adăugarea exactă a două numere întregi mari care rămân în intervalul „sigur“.
–>Format (25)
–>^ 2 a = 40-12 a =
1099511627764.
–>b = 2 ^ 45 + b = 3
35184372088835.
–>c = a + bc =
36283883716599.
In schimb, atunci când vom efectua calcule în afara acestui interval, putem avea rezultate nea•teptate. De
exemplu, în sesiunea următoare, vom vedea că adăugări care implică termeni u•or mai mari decât 2 53 produc exemplu, în sesiunea următoare, vom vedea că adăugări care implică termeni u•or mai mari decât 2 53 produc exemplu, în sesiunea următoare, vom vedea că adăugări care implică termeni u•or mai mari decât 2 53 produc
numai chiar valori.
–>Format (25)
–>(2 ^ 53 + (1:10)) „ani =
9007199254740992.
9007199254740994.
9007199254740996.
9007199254740996.
9007199254740996.
9007199254740998.
9007199254741000.
9007199254741000.
9007199254741000.
9007199254741002.
În următoarea sesiune, calculăm 2 52 folosind punctul întreg 2 fl în flotante primul caz, •i folosind 16 bi•i În următoarea sesiune, calculăm 2 52 folosind punctul întreg 2 fl în flotante primul caz, •i folosind 16 bi•i În următoarea sesiune, calculăm 2 52 folosind punctul întreg 2 fl în flotante primul caz, •i folosind 16 bi•i
întreg 2, în al doilea caz. În primul caz, nu are loc peste flux, chiar dacă numărul este la limita de numere de
puncte fl pe 64 de bi•i flotante. În al doilea caz, rezultatul este complet gre•it, deoarece numărul 2 52 nu poate fi puncte fl pe 64 de bi•i flotante. În al doilea caz, rezultatul este complet gre•it, deoarece numărul 2 52 nu poate fi puncte fl pe 64 de bi•i flotante. În al doilea caz, rezultatul este complet gre•it, deoarece numărul 2 52 nu poate fi
reprezentat ca un întreg pe 16 bi•i.
–> 2 ^ 52
28

ani =
4503599627370496.
–>uint16 (2 ^ 52) = 0 ani
In sectiune 4.15 , Analizăm problemele care apar atunci când indicii implicate accesul In sectiune 4.15 , Analizăm problemele care apar atunci când indicii implicate accesul In sectiune 4.15 , Analizăm problemele care apar atunci când indicii implicate accesul
elementele unei matrice sunt duble.
3.10 an variabil 3.10 an variabil 3.10 an variabil
Ori de câte ori vom face un calcul •i nu se păstrează rezultatul într-o variabilă de ie•ire, rezultatul este stocat în
implicit an variabil. Odată ce este de definit, putem folosi această variabilă ca orice altă variabilă Scilab. implicit an variabil. Odată ce este de definit, putem folosi această variabilă ca orice altă variabilă Scilab. implicit an variabil. Odată ce este de definit, putem folosi această variabilă ca orice altă variabilă Scilab.
În următoarea sesiune, vom calcula exp (3), astfel încât rezultatul este stocat în
an variabil. Apoi, vom folosi con•inutul său ca o variabilă obi•nuită.an variabil. Apoi, vom folosi con•inutul său ca o variabilă obi•nuită.
–>exp (3) ani
=
20.08553692318766792368
–>t = log (ans) t =
3.
În general, an variabilă ar trebui să fie utilizat numai într-o sesiune interactivă, în scopul de a progresa în În general, an variabilă ar trebui să fie utilizat numai într-o sesiune interactivă, în scopul de a progresa în În general, an variabilă ar trebui să fie utilizat numai într-o sesiune interactivă, în scopul de a progresa în
calcul, fără a fi nare de o nouă variabilă. De exemplu, este posibil să fi uitat pentru a stoca rezultatul unui calcul
interesant •i nu doresc să recalcula rezultatul. Acest lucru ar putea fi cazul, după o secven•ă lungă de încercări
•i erori, în cazul în care am experimentat mai multe modalită•i de a ob•ine rezultatul, fără a avea grija de a stoca
de fapt rezultatul. În acest caz, interactiv, folosind an poate permite pentru a salva ceva timp uman (sau ma•ină). de fapt rezultatul. În acest caz, interactiv, folosind an poate permite pentru a salva ceva timp uman (sau ma•ină). de fapt rezultatul. În acest caz, interactiv, folosind an poate permite pentru a salva ceva timp uman (sau ma•ină).
În schimb, dacă suntem un script folosit dezvoltarea de într-un mod non-interactiv, este o practică proastă să se
bazeze pe an variabilă •i ar trebui să stocheze rezultatele în variabile regulate. bazeze pe an variabilă •i ar trebui să stocheze rezultatele în variabile regulate. bazeze pe an variabilă •i ar trebui să stocheze rezultatele în variabile regulate.
3.11 •iruri
Siruri de caractere pot fi stocate în variabile, cu condi•ia ca acestea să fie delimitate de ghilimele duble „“ “. Siruri de caractere pot fi stocate în variabile, cu condi•ia ca acestea să fie delimitate de ghilimele duble „“ “.
Opera•iunea de concatenare este disponibil de la „+“ operator. În următoarea sesiune Scilab, ne definim două
•iruri •i apoi le înlăn•ui cu „+“ operator.
–>x = "foo" x = foo
–>y = "bar" y =
bar
–> X + y =
ans foobar
Ele sunt multe func•ii care permit de a procesa siruri de caractere, inclusiv expresii regulate. Nu vom da
mai multe detalii despre acest subiect în acest document.
29

3.12 tip dinamic variabilelor
Când vom crea •i administra variabile, Scilab permite schimbarea tipului unei variabile dinamic. Acest lucru
înseamnă că putem crea o valoare reală, iar apoi a pus o variabilă •ir în ea, a•a cum este prezentat în
următoarea sesiune.
–> X = 1
x =
1.
–> X + 1
ani =
2.
–>x = "foo" x =
foo
–>x + "bar" ans
= foobar
Subliniem aici că Scilab nu este un limbaj tipizat, care este, noi nu trebuie să declare tipul unei variabile
înainte de a stabili con•inutul său. Mai mult decât atât, tipul unei variabile se poate schimba în timpul duratei de
via•ă a variabilei.
3.13 Exerci•ii
Exercitarea 3.1 ( Preceden•a operatorilor) Care sunt rezultatele următoarelor calcule (gândi•i-vă înainte de a încerca în Scilab)? Exercitarea 3.1 ( Preceden•a operatorilor) Care sunt rezultatele următoarelor calcule (gândi•i-vă înainte de a încerca în Scilab)? Exercitarea 3.1 ( Preceden•a operatorilor) Care sunt rezultatele următoarelor calcule (gândi•i-vă înainte de a încerca în Scilab)?
* 3 + 2 4 2 + 3 * 4
2/3 + 4 2 + 3/4
Exercitarea 3.2 ( parantezele) Care sunt rezultatele următoarelor calcule (gândi•i-vă înainte de a încerca în Scilab)? Exercitarea 3.2 ( parantezele) Care sunt rezultatele următoarelor calcule (gândi•i-vă înainte de a încerca în Scilab)? Exercitarea 3.2 ( parantezele) Care sunt rezultatele următoarelor calcule (gândi•i-vă înainte de a încerca în Scilab)?
2 * (3 + 4) (2 + 3) * 4
(2 + 3) / 4 3 / (2 + 4)
Exercitarea 3.3 ( exponen•i) Care sunt rezultatele următoarelor calcule (gândi•i-vă înainte de a încerca în Scilab)? Exercitarea 3.3 ( exponen•i) Care sunt rezultatele următoarelor calcule (gândi•i-vă înainte de a încerca în Scilab)? Exercitarea 3.3 ( exponen•i) Care sunt rezultatele următoarelor calcule (gândi•i-vă înainte de a încerca în Scilab)?
1.23456789 D10
1.23456789 e10
1.23456789e-5
Exercitarea 3.4 ( funcții) Care sunt rezultatele următoarelor calcule (gândi•i-vă înainte de a încerca în Scilab)? Exercitarea 3.4 ( funcții) Care sunt rezultatele următoarelor calcule (gândi•i-vă înainte de a încerca în Scilab)? Exercitarea 3.4 ( funcții) Care sunt rezultatele următoarelor calcule (gândi•i-vă înainte de a încerca în Scilab)?
sqrt (4) sqrt (9) sqrt
(-1) sqrt (-2) exp (1)
log (exp (2)) exp (log
(2))
30

10 ^ 2
log10 (10 ^ 2) 10 ^
log10 (2) semnul (2)
Semnul (-2) semn (0)
Exercitarea 3.5 ( Trigonometrie) Care sunt rezultatele următoarelor calcule (gândi•i-vă înainte de a încerca în Scilab)? Exercitarea 3.5 ( Trigonometrie) Care sunt rezultatele următoarelor calcule (gândi•i-vă înainte de a încerca în Scilab)? Exercitarea 3.5 ( Trigonometrie) Care sunt rezultatele următoarelor calcule (gândi•i-vă înainte de a încerca în Scilab)?
cos (0) sin (0)
cos (% pi) sin
(pi%)
cos (% pi / 4) – sin (% pi / 4)
4 Matrici
În limba Scilab, matrice joacă un rol central. În această sec•iune, vom introduce matrice Scilab •i prezintă modul
de a crea •i de interogare matrici. De asemenea, analiza modul de a avea acces la elementele unei matrice, fie
element cu element, fie prin opera•iuni de nivel superior.
4.1 Prezentare generală
În Scilab, tipul de date de bază este matricea, care este definit de către:
•numărul de rânduri,
•numărul de coloane,
•tipul de date.
Tipul de date poate fi real, întreg, boolean, string •i polinomială. Atunci când două matrice au acela•i număr
de rânduri •i coloane, noi spunem că cele două matrice au acelea•i formă. de rânduri •i coloane, noi spunem că cele două matrice au acelea•i formă.
In Scilab, vectorii sunt un caz particular de matrice, în care numărul de rânduri (sau numărul de coloane)
este egal cu 1. Variabilele scalare simple nu există în Scilab: o variabilă scalară este o matrice cu 1 rând •i 1
coloană. Acesta este motivul pentru care în acest capitol, când analizăm comportamentul matricelor Scilab, există
acela•i comportament pentru vectori rând sau o coloană (adică n × 1 sau 1 × n matrici) precum scalari (adică 1 × 1 acela•i comportament pentru vectori rând sau o coloană (adică n × 1 sau 1 × n matrici) precum scalari (adică 1 × 1 acela•i comportament pentru vectori rând sau o coloană (adică n × 1 sau 1 × n matrici) precum scalari (adică 1 × 1 acela•i comportament pentru vectori rând sau o coloană (adică n × 1 sau 1 × n matrici) precum scalari (adică 1 × 1 acela•i comportament pentru vectori rând sau o coloană (adică n × 1 sau 1 × n matrici) precum scalari (adică 1 × 1 acela•i comportament pentru vectori rând sau o coloană (adică n × 1 sau 1 × n matrici) precum scalari (adică 1 × 1 acela•i comportament pentru vectori rând sau o coloană (adică n × 1 sau 1 × n matrici) precum scalari (adică 1 × 1 acela•i comportament pentru vectori rând sau o coloană (adică n × 1 sau 1 × n matrici) precum scalari (adică 1 × 1 acela•i comportament pentru vectori rând sau o coloană (adică n × 1 sau 1 × n matrici) precum scalari (adică 1 × 1
matrici).
Este corect să spunem că Scilab a fost conceput în principal pentru matrici de real variabile. Acest lucru permite de Este corect să spunem că Scilab a fost conceput în principal pentru matrici de real variabile. Acest lucru permite de Este corect să spunem că Scilab a fost conceput în principal pentru matrici de real variabile. Acest lucru permite de
a efectua opera•ii de algebră liniară, cu un limbaj de nivel înalt.
Prin proiectare, Scilab a fost creat pentru a fi capabil de a efectua opera•iuni de matrice cât mai repede
posibil. Blocul de construc•ie pentru această caracteristică este faptul că matrice Scilab sunt stocate într-o
structură de date internă, care pot fi gestionate la nivel de interpret. Cele mai multe opera•ii de algebră liniară
de bază, cum ar fi adăugarea, Scădere, transpune sau produs scalar sunt realizate printr-un, optimizat, codul
sursă compilat. Aceste opera•iuni sunt efectuate cu operatori comune „+“, „-“, „*“ •i apostroful“ ' “, Astfel încât, la sursă compilat. Aceste opera•iuni sunt efectuate cu operatori comune „+“, „-“, „*“ •i apostroful“ ' “, Astfel încât, la sursă compilat. Aceste opera•iuni sunt efectuate cu operatori comune „+“, „-“, „*“ •i apostroful“ ' “, Astfel încât, la
nivelul Scilab, codul sursă este atât de simplu •i rapid.
31

Cu ace•ti operatori la nivel înalt, cei mai mul•i algoritmi de matrice nu necesită utilizarea bucle. De fapt, un script
Scilab care efectuează acelea•i opera•ii cu bucle este de obicei de la 10 la 100 de ori mai lent. Această caracteristică
a Scilab este cunoscut sub numele vectorizare. În scopul de a ob•ine o implementare rapidă a unui anumit algoritm, a Scilab este cunoscut sub numele vectorizare. În scopul de a ob•ine o implementare rapidă a unui anumit algoritm, a Scilab este cunoscut sub numele vectorizare. În scopul de a ob•ine o implementare rapidă a unui anumit algoritm,
dezvoltatorul Scilab ar trebui să utilizeze întotdeauna opera•iuni la nivel înalt, astfel încât fiecare afirma•ie
procesează o matrice (sau un vector) in loc de un scalar.
Mai multe sarcini complexe de algebră liniară, cum ar fi rezolu•ia sistemelor de ecua•ii liniare Ax = b, diverse Mai multe sarcini complexe de algebră liniară, cum ar fi rezolu•ia sistemelor de ecua•ii liniare Ax = b, diverse Mai multe sarcini complexe de algebră liniară, cum ar fi rezolu•ia sistemelor de ecua•ii liniare Ax = b, diverse Mai multe sarcini complexe de algebră liniară, cum ar fi rezolu•ia sistemelor de ecua•ii liniare Ax = b, diverse
descompuneri (de exemplu, de Gauss pivot par•ial
PA = LU), / eigenvector calcule de valori proprii, sunt de asemenea efectuate prin codurile sursă compilate •i PA = LU), / eigenvector calcule de valori proprii, sunt de asemenea efectuate prin codurile sursă compilate •i PA = LU), / eigenvector calcule de valori proprii, sunt de asemenea efectuate prin codurile sursă compilate •i
optimizate. Aceste opera•iuni sunt efectuate de către operatori comune, cum ar fi slash „/“ sau Backslash „\“
sau cu func•ii cum ar fi spec, care calculează vectori •i valori proprii. sau cu func•ii cum ar fi spec, care calculează vectori •i valori proprii. sau cu func•ii cum ar fi spec, care calculează vectori •i valori proprii.
4.2 Crearea unei matrice de valori reale
Există un simplu •i e sintaxa FFI ciente pentru a crea o matrice cu valori date. Următoarele este lista
simbolurilor utilizate pentru definim o matrice:
•paranteze pătrate „[“ •i „]“ marchează începutul •i sfâr•itul matricei,
•virgule“,“ separa•i valorile în coloanele di ff erent,
•semicoloane „;“ separa valorile rândurilor erent di ff.
Sintaxa următoare poate fi utilizată pentru a definim o matrice, în cazul în care spa•iile goale sunt op•ionale (linia,
dar face mai u•or de citit) •i“…“ reprezintă valori intermediare:
A = [a11, a12, …, A1N; A21, A22, …, a2n; …; AN1, AN2, …, ann].
În exemplul următor, vom crea un 2 × 3 matrice de valori reale. În exemplul următor, vom crea un 2 × 3 matrice de valori reale. În exemplul următor, vom crea un 2 × 3 matrice de valori reale.
–>A = [1, 2, 3; 4, 5, 6] =
1. 2. 3.
4. 5. 6.
O sintaxă mai simplă este disponibilă, care nu are nevoie de a utiliza virgula •i virgulă de caractere. La
crearea unei matrice, spa•iul gol separă coloanele în timp ce noua linie separă rândurile, ca •i în următoarea
sintaxă:
A = [a11 a12 … A1N a21 a22 … a2n

AN1 AN2 … ann]
Acest lucru permite de a u•ura considerabil gestionarea matrici, la fel ca în următoarea sesiune.
–>A = [1 2 3
–>4 5 6] A =
1. 2. 3.
4. 5. 6.
32

ochi matrice de identitate
linspace vector liniar distan•ate
cele matrice alcătuită din cele
zerouri matrice alcătuită din zerouri
testmatrix generarea unor matrici particulare testmatrix generarea unor matrici particulare
mare generator de numere aleatoare
Rand generator de numere aleatoare
Figura 22: Func•iile care generează matrici.
Sintaxa anterioară pentru matrici este utilă în situa•iile în care matrice urmează să fie scrise în date fi les,
deoarece fi simplificate es citirea umană (•i verificarea) a valorilor din fi lul •i fi simplificate es citirea matricei în
Scilab.
Mai multe comenzi Scilab permit crearea matrici de la o anumită dimensiune, de exemplu, dintr-un anumit
număr de rânduri •i coloane. Aceste func•ii sunt prezentate în fi gure 22 . Cele mai frecvent utilizate sunt ochi, număr de rânduri •i coloane. Aceste func•ii sunt prezentate în fi gure 22 . Cele mai frecvent utilizate sunt ochi, număr de rânduri •i coloane. Aceste func•ii sunt prezentate în fi gure 22 . Cele mai frecvent utilizate sunt ochi, număr de rânduri •i coloane. Aceste func•ii sunt prezentate în fi gure 22 . Cele mai frecvent utilizate sunt ochi,
zerouri •i cele. Aceste comenzi iau două argumente de intrare, numărul de rânduri •i coloane ale matricei pentru zerouri •i cele. Aceste comenzi iau două argumente de intrare, numărul de rânduri •i coloane ale matricei pentru zerouri •i cele. Aceste comenzi iau două argumente de intrare, numărul de rânduri •i coloane ale matricei pentru zerouri •i cele. Aceste comenzi iau două argumente de intrare, numărul de rânduri •i coloane ale matricei pentru
a genera.
–>A = cele (2,3) A =
1. 1. 1.
1. 1. 1.
4.3 Matricea goală []
O matrice de gol poate fi creat folosind paranteze pătrate goale, la fel ca în sesiunea următoare, în cazul în care vom
crea o 0 × 0 matrice. crea o 0 × 0 matrice. crea o 0 × 0 matrice.
–> A = [] A
=
[]
Această sintaxă permite să •terge•i con•inutul unei matrice, astfel încât memoria asociată este eliberat.
–>A = cele (100, 100);
–>A = [] A =
[]
4.4 matrici de interogare
Func•iile din fi gure 23 permite să interogheze sau să actualizeze o matrice. Func•iile din fi gure 23 permite să interogheze sau să actualizeze o matrice. Func•iile din fi gure 23 permite să interogheze sau să actualizeze o matrice.
mărimea Func•ia returnează două argumente de ie•ire Nu. •i nc, care reprezintă numărul de rânduri •i mărimea Func•ia returnează două argumente de ie•ire Nu. •i nc, care reprezintă numărul de rânduri •i mărimea Func•ia returnează două argumente de ie•ire Nu. •i nc, care reprezintă numărul de rânduri •i mărimea Func•ia returnează două argumente de ie•ire Nu. •i nc, care reprezintă numărul de rânduri •i mărimea Func•ia returnează două argumente de ie•ire Nu. •i nc, care reprezintă numărul de rânduri •i mărimea Func•ia returnează două argumente de ie•ire Nu. •i nc, care reprezintă numărul de rânduri •i mărimea Func•ia returnează două argumente de ie•ire Nu. •i nc, care reprezintă numărul de rânduri •i
numărul de coloane.
–>A = cele (2,3) A =
1. 1. 1.
1. 1. 1.
–>[Nr, nc] = size (A)
33

mărimea Dimensiunea obiectelor
matrice remodelarea un vector sau o matrice la o matrice dimensiune erent di ff
resize_matrix a crea o nouă matrice cu o dimensiune erent di ff resize_matrix a crea o nouă matrice cu o dimensiune erent di ff
Figura 23: Func•ii care interogare sau modifica matrici.
nc =
3.
nr =
2.
mărimea Func•ia este de importantă valoare practică atunci când am proiecta o func•ie, deoarece mărimea Func•ia este de importantă valoare practică atunci când am proiecta o func•ie, deoarece mărimea Func•ia este de importantă valoare practică atunci când am proiecta o func•ie, deoarece
procesarea pe care trebuie să le efectueze pe o matrice dat poate depinde de forma. De exemplu, pentru a
calcula norma unei matrice dat, algoritmi erent di ff poate fi utilizat în func•ie de cazul în care matricea este un
vector coloană cu dimensiune Nu. × 1 •i vector coloană cu dimensiune Nu. × 1 •i vector coloană cu dimensiune Nu. × 1 •i vector coloană cu dimensiune Nu. × 1 •i
Nu.> 0, un vector rând cu dimensiune 1 × nc •i nc> 0, sau o matrice generală cu dimensiune Nu.> 0, un vector rând cu dimensiune 1 × nc •i nc> 0, sau o matrice generală cu dimensiune Nu.> 0, un vector rând cu dimensiune 1 × nc •i nc> 0, sau o matrice generală cu dimensiune Nu.> 0, un vector rând cu dimensiune 1 × nc •i nc> 0, sau o matrice generală cu dimensiune Nu.> 0, un vector rând cu dimensiune 1 × nc •i nc> 0, sau o matrice generală cu dimensiune Nu.> 0, un vector rând cu dimensiune 1 × nc •i nc> 0, sau o matrice generală cu dimensiune Nu.> 0, un vector rând cu dimensiune 1 × nc •i nc> 0, sau o matrice generală cu dimensiune
Nu. × nc •i Nu, nc> 1. mărimea Func•ia de asemenea, are următoarea Nu. × nc •i Nu, nc> 1. mărimea Func•ia de asemenea, are următoarea Nu. × nc •i Nu, nc> 1. mărimea Func•ia de asemenea, are următoarea Nu. × nc •i Nu, nc> 1. mărimea Func•ia de asemenea, are următoarea Nu. × nc •i Nu, nc> 1. mărimea Func•ia de asemenea, are următoarea Nu. × nc •i Nu, nc> 1. mărimea Func•ia de asemenea, are următoarea Nu. × nc •i Nu, nc> 1. mărimea Func•ia de asemenea, are următoarea Nu. × nc •i Nu, nc> 1. mărimea Func•ia de asemenea, are următoarea
sintaxă
nr = size (A, sel)
care permite doar pentru a ob•ine numărul de rânduri sau numărul de coloane •i în cazul în care
celulă poate avea următoarele valori celulă poate avea următoarele valori
•celulă = 1 sau sel = "r", returnează numărul de rânduri, celulă = 1 sau sel = "r", returnează numărul de rânduri, celulă = 1 sau sel = "r", returnează numărul de rânduri, celulă = 1 sau sel = "r", returnează numărul de rânduri,
•cell = 2 sau sel = "c", returnează numărul de coloane. cell = 2 sau sel = "c", returnează numărul de coloane. cell = 2 sau sel = "c", returnează numărul de coloane. cell = 2 sau sel = "c", returnează numărul de coloane.
•sel = "*", returnează numărul total de elemente, adică, numărul de coloane ori numărul de rânduri. sel = "*", returnează numărul total de elemente, adică, numărul de coloane ori numărul de rânduri.
În următoarea sesiune, vom folosi mărimea Func•ia pentru a calcula numărul total de elemente ale unei În următoarea sesiune, vom folosi mărimea Func•ia pentru a calcula numărul total de elemente ale unei În următoarea sesiune, vom folosi mărimea Func•ia pentru a calcula numărul total de elemente ale unei
matrice.
–>A = cele (2,3) A =
1. 1. 1.
1. 1. 1.
–>Dimensiunea (A, "*")
ans =
6.
4.5 Accesarea elementelor unei matrice
Există mai multe metode pentru a accesa elementele unei matrice A: Există mai multe metode pentru a accesa elementele unei matrice A:
•întreaga matrice, cu A sintaxă, întreaga matrice, cu A sintaxă, întreaga matrice, cu A sintaxă,
•element cu element cu A (i, j) sintaxă, element cu element cu A (i, j) sintaxă, element cu element cu A (i, j) sintaxă,
•o serie de indice valori cu două puncte „:“ operator.
34

Operatorul de colon va fi revizuit în sec•iunea următoare.
Pentru a face un acces global la toate elementele matricei, numele variabilei simplu, de exemplu, A, poate Pentru a face un acces global la toate elementele matricei, numele variabilei simplu, de exemplu, A, poate Pentru a face un acces global la toate elementele matricei, numele variabilei simplu, de exemplu, A, poate
fi folosit. Toate opera•iunile de algebrei elementare sunt disponibile pentru matrici, cum ar fi adăugarea cu
„+“, scădere cu „-“, cu condi•ia ca cele două matrice au aceea•i dimensiune. În următorul script, vom adăuga
toate elementele de două matrici.
–>A = cele (2,3) A =
1. 1. 1.
1. 1. 1.
–>B = 2 * cele (2,3) B =
2. 2. 2.
2. 2. 2.
–> A + B =
ans
3. 3. 3.
3. 3. 3.
Un element al unei matrice poate fi accesată direct cu A (i, j) sintaxă, cu condi•ia ca eu •i j sunt valori Un element al unei matrice poate fi accesată direct cu A (i, j) sintaxă, cu condi•ia ca eu •i j sunt valori Un element al unei matrice poate fi accesată direct cu A (i, j) sintaxă, cu condi•ia ca eu •i j sunt valori Un element al unei matrice poate fi accesată direct cu A (i, j) sintaxă, cu condi•ia ca eu •i j sunt valori Un element al unei matrice poate fi accesată direct cu A (i, j) sintaxă, cu condi•ia ca eu •i j sunt valori Un element al unei matrice poate fi accesată direct cu A (i, j) sintaxă, cu condi•ia ca eu •i j sunt valori Un element al unei matrice poate fi accesată direct cu A (i, j) sintaxă, cu condi•ia ca eu •i j sunt valori
index valide.
Subliniem faptul că, în mod implicit, indicele fi prima dintr-o matrice este 1. Acest lucru contrastează cu alte
limbi, cum ar fi limba C, de exemplu, în cazul în care indicele fi prima este
0. De exemplu, să presupunem că A este un Nu. × nc matrice, unde Nu. este numărul de rânduri •i nc este numărul de 0. De exemplu, să presupunem că A este un Nu. × nc matrice, unde Nu. este numărul de rânduri •i nc este numărul de 0. De exemplu, să presupunem că A este un Nu. × nc matrice, unde Nu. este numărul de rânduri •i nc este numărul de 0. De exemplu, să presupunem că A este un Nu. × nc matrice, unde Nu. este numărul de rânduri •i nc este numărul de 0. De exemplu, să presupunem că A este un Nu. × nc matrice, unde Nu. este numărul de rânduri •i nc este numărul de 0. De exemplu, să presupunem că A este un Nu. × nc matrice, unde Nu. este numărul de rânduri •i nc este numărul de 0. De exemplu, să presupunem că A este un Nu. × nc matrice, unde Nu. este numărul de rânduri •i nc este numărul de 0. De exemplu, să presupunem că A este un Nu. × nc matrice, unde Nu. este numărul de rânduri •i nc este numărul de 0. De exemplu, să presupunem că A este un Nu. × nc matrice, unde Nu. este numărul de rânduri •i nc este numărul de 0. De exemplu, să presupunem că A este un Nu. × nc matrice, unde Nu. este numărul de rânduri •i nc este numărul de 0. De exemplu, să presupunem că A este un Nu. × nc matrice, unde Nu. este numărul de rânduri •i nc este numărul de
coloane. Prin urmare, valoarea A (i, j) are un sens doar în cazul în care valorile indicelui eu •i j îndeplinesc 1 ≤ eu ≤ Nu. •i 1 ≤ j ≤ coloane. Prin urmare, valoarea A (i, j) are un sens doar în cazul în care valorile indicelui eu •i j îndeplinesc 1 ≤ eu ≤ Nu. •i 1 ≤ j ≤ coloane. Prin urmare, valoarea A (i, j) are un sens doar în cazul în care valorile indicelui eu •i j îndeplinesc 1 ≤ eu ≤ Nu. •i 1 ≤ j ≤ coloane. Prin urmare, valoarea A (i, j) are un sens doar în cazul în care valorile indicelui eu •i j îndeplinesc 1 ≤ eu ≤ Nu. •i 1 ≤ j ≤ coloane. Prin urmare, valoarea A (i, j) are un sens doar în cazul în care valorile indicelui eu •i j îndeplinesc 1 ≤ eu ≤ Nu. •i 1 ≤ j ≤ coloane. Prin urmare, valoarea A (i, j) are un sens doar în cazul în care valorile indicelui eu •i j îndeplinesc 1 ≤ eu ≤ Nu. •i 1 ≤ j ≤ coloane. Prin urmare, valoarea A (i, j) are un sens doar în cazul în care valorile indicelui eu •i j îndeplinesc 1 ≤ eu ≤ Nu. •i 1 ≤ j ≤ coloane. Prin urmare, valoarea A (i, j) are un sens doar în cazul în care valorile indicelui eu •i j îndeplinesc 1 ≤ eu ≤ Nu. •i 1 ≤ j ≤ coloane. Prin urmare, valoarea A (i, j) are un sens doar în cazul în care valorile indicelui eu •i j îndeplinesc 1 ≤ eu ≤ Nu. •i 1 ≤ j ≤ coloane. Prin urmare, valoarea A (i, j) are un sens doar în cazul în care valorile indicelui eu •i j îndeplinesc 1 ≤ eu ≤ Nu. •i 1 ≤ j ≤ coloane. Prin urmare, valoarea A (i, j) are un sens doar în cazul în care valorile indicelui eu •i j îndeplinesc 1 ≤ eu ≤ Nu. •i 1 ≤ j ≤ coloane. Prin urmare, valoarea A (i, j) are un sens doar în cazul în care valorile indicelui eu •i j îndeplinesc 1 ≤ eu ≤ Nu. •i 1 ≤ j ≤ coloane. Prin urmare, valoarea A (i, j) are un sens doar în cazul în care valorile indicelui eu •i j îndeplinesc 1 ≤ eu ≤ Nu. •i 1 ≤ j ≤ coloane. Prin urmare, valoarea A (i, j) are un sens doar în cazul în care valorile indicelui eu •i j îndeplinesc 1 ≤ eu ≤ Nu. •i 1 ≤ j ≤ coloane. Prin urmare, valoarea A (i, j) are un sens doar în cazul în care valorile indicelui eu •i j îndeplinesc 1 ≤ eu ≤ Nu. •i 1 ≤ j ≤
nc. În cazul în care valorile indicelui nu sunt valabile, o eroare este generat, la fel ca în sesiunea următoare.nc. În cazul în care valorile indicelui nu sunt valabile, o eroare este generat, la fel ca în sesiunea următoare.
–>A = cele (2,3) A =
1. 1. 1.
1. 1. 1.
–>A (1,1) =
ans
1.
–>A (12, 1)
! – eroare 21
Indexul nevalid.
–>A (0,1)
! – eroare 21 de index
nevalid.
Accesul direct la elemente de matrice cu A (i, j) sintaxa ar trebui să fie utilizate numai atunci când poate fi Accesul direct la elemente de matrice cu A (i, j) sintaxa ar trebui să fie utilizate numai atunci când poate fi Accesul direct la elemente de matrice cu A (i, j) sintaxa ar trebui să fie utilizate numai atunci când poate fi
utilizat nici un alt nivel superior comenzi Scilab. Într-adevăr, Scilab oferă multe caracteristici care permit să
producă calcule mai simple •i mai rapide, bazate pe vectorizare. Una dintre aceste caracteristici este colon „:“
operatorul, ceea ce este foarte important în situa•ii practice.
4.6 două puncte „:“ Operatorul
Cea mai simplă Sintaxa operatorului de colon este următoarea:
v = i: j
35

Unde eu este indicele de pornire •i j este indicele care se încheie cu eu ≤ j. Acest lucru creează vectorul v = (i, i + 1, . . . . j). În Unde eu este indicele de pornire •i j este indicele care se încheie cu eu ≤ j. Acest lucru creează vectorul v = (i, i + 1, . . . . j). În Unde eu este indicele de pornire •i j este indicele care se încheie cu eu ≤ j. Acest lucru creează vectorul v = (i, i + 1, . . . . j). În Unde eu este indicele de pornire •i j este indicele care se încheie cu eu ≤ j. Acest lucru creează vectorul v = (i, i + 1, . . . . j). În Unde eu este indicele de pornire •i j este indicele care se încheie cu eu ≤ j. Acest lucru creează vectorul v = (i, i + 1, . . . . j). În Unde eu este indicele de pornire •i j este indicele care se încheie cu eu ≤ j. Acest lucru creează vectorul v = (i, i + 1, . . . . j). În Unde eu este indicele de pornire •i j este indicele care se încheie cu eu ≤ j. Acest lucru creează vectorul v = (i, i + 1, . . . . j). În Unde eu este indicele de pornire •i j este indicele care se încheie cu eu ≤ j. Acest lucru creează vectorul v = (i, i + 1, . . . . j). În Unde eu este indicele de pornire •i j este indicele care se încheie cu eu ≤ j. Acest lucru creează vectorul v = (i, i + 1, . . . . j). În Unde eu este indicele de pornire •i j este indicele care se încheie cu eu ≤ j. Acest lucru creează vectorul v = (i, i + 1, . . . . j). În Unde eu este indicele de pornire •i j este indicele care se încheie cu eu ≤ j. Acest lucru creează vectorul v = (i, i + 1, . . . . j). În Unde eu este indicele de pornire •i j este indicele care se încheie cu eu ≤ j. Acest lucru creează vectorul v = (i, i + 1, . . . . j). În Unde eu este indicele de pornire •i j este indicele care se încheie cu eu ≤ j. Acest lucru creează vectorul v = (i, i + 1, . . . . j). În Unde eu este indicele de pornire •i j este indicele care se încheie cu eu ≤ j. Acest lucru creează vectorul v = (i, i + 1, . . . . j). În Unde eu este indicele de pornire •i j este indicele care se încheie cu eu ≤ j. Acest lucru creează vectorul v = (i, i + 1, . . . . j). În Unde eu este indicele de pornire •i j este indicele care se încheie cu eu ≤ j. Acest lucru creează vectorul v = (i, i + 1, . . . . j). În Unde eu este indicele de pornire •i j este indicele care se încheie cu eu ≤ j. Acest lucru creează vectorul v = (i, i + 1, . . . . j). În
următoarea sesiune, vom crea un vector de valori ale indicelui de la 2 la 4 într-o singură declara•ie. următoarea sesiune, vom crea un vector de valori ale indicelui de la 2 la 4 într-o singură declara•ie. următoarea sesiune, vom crea un vector de valori ale indicelui de la 2 la 4 într-o singură declara•ie. următoarea sesiune, vom crea un vector de valori ale indicelui de la 2 la 4 într-o singură declara•ie. următoarea sesiune, vom crea un vector de valori ale indicelui de la 2 la 4 într-o singură declara•ie.
–>v = 2: 4 v =
2. 3. 4.
Sintaxa completă permite să con fi gure incrementul utilizat la generarea valorilor indexate, adică Etapa. Sintaxa Sintaxa completă permite să con fi gure incrementul utilizat la generarea valorilor indexate, adică Etapa. Sintaxa Sintaxa completă permite să con fi gure incrementul utilizat la generarea valorilor indexate, adică Etapa. Sintaxa
completă pentru operatorul de colon este
v = i: s: j
Unde eu este indicele de pornire, j este indicele care se încheie •i s este pasul. Această comandă creează vectorul v = Unde eu este indicele de pornire, j este indicele care se încheie •i s este pasul. Această comandă creează vectorul v = Unde eu este indicele de pornire, j este indicele care se încheie •i s este pasul. Această comandă creează vectorul v = Unde eu este indicele de pornire, j este indicele care se încheie •i s este pasul. Această comandă creează vectorul v = Unde eu este indicele de pornire, j este indicele care se încheie •i s este pasul. Această comandă creează vectorul v = Unde eu este indicele de pornire, j este indicele care se încheie •i s este pasul. Această comandă creează vectorul v = Unde eu este indicele de pornire, j este indicele care se încheie •i s este pasul. Această comandă creează vectorul v = Unde eu este indicele de pornire, j este indicele care se încheie •i s este pasul. Această comandă creează vectorul v =
(i, i + s, i + 2 s,. . . , I + ns) Unde n este cel mai mare număr întreg astfel încât i + ns ≤ j. Dacă s diviziunilor j – I, apoi ultimul (i, i + s, i + 2 s,. . . , I + ns) Unde n este cel mai mare număr întreg astfel încât i + ns ≤ j. Dacă s diviziunilor j – I, apoi ultimul (i, i + s, i + 2 s,. . . , I + ns) Unde n este cel mai mare număr întreg astfel încât i + ns ≤ j. Dacă s diviziunilor j – I, apoi ultimul (i, i + s, i + 2 s,. . . , I + ns) Unde n este cel mai mare număr întreg astfel încât i + ns ≤ j. Dacă s diviziunilor j – I, apoi ultimul (i, i + s, i + 2 s,. . . , I + ns) Unde n este cel mai mare număr întreg astfel încât i + ns ≤ j. Dacă s diviziunilor j – I, apoi ultimul (i, i + s, i + 2 s,. . . , I + ns) Unde n este cel mai mare număr întreg astfel încât i + ns ≤ j. Dacă s diviziunilor j – I, apoi ultimul (i, i + s, i + 2 s,. . . , I + ns) Unde n este cel mai mare număr întreg astfel încât i + ns ≤ j. Dacă s diviziunilor j – I, apoi ultimul (i, i + s, i + 2 s,. . . , I + ns) Unde n este cel mai mare număr întreg astfel încât i + ns ≤ j. Dacă s diviziunilor j – I, apoi ultimul (i, i + s, i + 2 s,. . . , I + ns) Unde n este cel mai mare număr întreg astfel încât i + ns ≤ j. Dacă s diviziunilor j – I, apoi ultimul (i, i + s, i + 2 s,. . . , I + ns) Unde n este cel mai mare număr întreg astfel încât i + ns ≤ j. Dacă s diviziunilor j – I, apoi ultimul (i, i + s, i + 2 s,. . . , I + ns) Unde n este cel mai mare număr întreg astfel încât i + ns ≤ j. Dacă s diviziunilor j – I, apoi ultimul (i, i + s, i + 2 s,. . . , I + ns) Unde n este cel mai mare număr întreg astfel încât i + ns ≤ j. Dacă s diviziunilor j – I, apoi ultimul (i, i + s, i + 2 s,. . . , I + ns) Unde n este cel mai mare număr întreg astfel încât i + ns ≤ j. Dacă s diviziunilor j – I, apoi ultimul (i, i + s, i + 2 s,. . . , I + ns) Unde n este cel mai mare număr întreg astfel încât i + ns ≤ j. Dacă s diviziunilor j – I, apoi ultimul (i, i + s, i + 2 s,. . . , I + ns) Unde n este cel mai mare număr întreg astfel încât i + ns ≤ j. Dacă s diviziunilor j – I, apoi ultimul (i, i + s, i + 2 s,. . . , I + ns) Unde n este cel mai mare număr întreg astfel încât i + ns ≤ j. Dacă s diviziunilor j – I, apoi ultimul (i, i + s, i + 2 s,. . . , I + ns) Unde n este cel mai mare număr întreg astfel încât i + ns ≤ j. Dacă s diviziunilor j – I, apoi ultimul
index în vectorul de valori ale indicelui este j. În alte cazuri, avem i + ns <j. În timp ce în cele mai multe situa•ii, etapa s index în vectorul de valori ale indicelui este j. În alte cazuri, avem i + ns <j. În timp ce în cele mai multe situa•ii, etapa s index în vectorul de valori ale indicelui este j. În alte cazuri, avem i + ns <j. În timp ce în cele mai multe situa•ii, etapa s index în vectorul de valori ale indicelui este j. În alte cazuri, avem i + ns <j. În timp ce în cele mai multe situa•ii, etapa s index în vectorul de valori ale indicelui este j. În alte cazuri, avem i + ns <j. În timp ce în cele mai multe situa•ii, etapa s index în vectorul de valori ale indicelui este j. În alte cazuri, avem i + ns <j. În timp ce în cele mai multe situa•ii, etapa s
este pozitiv, ar putea fi, de asemenea, negativ.
În următoarea sesiune, vom crea un vector de cre•tere a valorilor indicelui de la 3 la În următoarea sesiune, vom crea un vector de cre•tere a valorilor indicelui de la 3 la În următoarea sesiune, vom crea un vector de cre•tere a valorilor indicelui de la 3 la
10 cu un pas egal cu 2. 10 cu un pas egal cu 2. 10 cu un pas egal cu 2.
–>v = 3: 2: 10 v =
3. 5. 7. 9.
Observa•i că ultima valoare din vectorul v este i + ns = 9, care este mai mică decât j = 10. În următoarea Observa•i că ultima valoare din vectorul v este i + ns = 9, care este mai mică decât j = 10. În următoarea Observa•i că ultima valoare din vectorul v este i + ns = 9, care este mai mică decât j = 10. În următoarea Observa•i că ultima valoare din vectorul v este i + ns = 9, care este mai mică decât j = 10. În următoarea Observa•i că ultima valoare din vectorul v este i + ns = 9, care este mai mică decât j = 10. În următoarea Observa•i că ultima valoare din vectorul v este i + ns = 9, care este mai mică decât j = 10. În următoarea Observa•i că ultima valoare din vectorul v este i + ns = 9, care este mai mică decât j = 10. În următoarea
sesiune, prezentăm două exemple în care etapa este negativ. În primul caz, operatorul de colon generează
scăderea valorilor indicelui de la 10 la 4. În al doilea exemplu, operatorul de colon generează o matrice goală, scăderea valorilor indicelui de la 10 la 4. În al doilea exemplu, operatorul de colon generează o matrice goală, scăderea valorilor indicelui de la 10 la 4. În al doilea exemplu, operatorul de colon generează o matrice goală, scăderea valorilor indicelui de la 10 la 4. În al doilea exemplu, operatorul de colon generează o matrice goală, scăderea valorilor indicelui de la 10 la 4. În al doilea exemplu, operatorul de colon generează o matrice goală,
deoarece nu există valori mai mici decât 3 •i mai mare de 10, în acela•i timp.
–>v = 10: -2: 3 v =
10. 8. 6. 4.
–>v = 3: -2: 10 v =
[]
Cu un vector de valori ale indicelui, putem accesa elementele unei matrice într-un interval dat, ca •i cu
următoarea sintaxă ed fi simplificata
A (i: j, k: l)
Unde i, j, k, l încep •i se termină valori ale indicelui. Sintaxa completă este Unde i, j, k, l încep •i se termină valori ale indicelui. Sintaxa completă este Unde i, j, k, l încep •i se termină valori ale indicelui. Sintaxa completă este
A (i: s: j, k: t: l), Unde s •i T sunt pa•ii. A (i: s: j, k: t: l), Unde s •i T sunt pa•ii. A (i: s: j, k: t: l), Unde s •i T sunt pa•ii. A (i: s: j, k: t: l), Unde s •i T sunt pa•ii. A (i: s: j, k: t: l), Unde s •i T sunt pa•ii. A (i: s: j, k: t: l), Unde s •i T sunt pa•ii.
De exemplu, să presupunem că A este un 4 × 5 matrice, •i că dorim să acceseze elementele A i, j pentru i De exemplu, să presupunem că A este un 4 × 5 matrice, •i că dorim să acceseze elementele A i, j pentru i De exemplu, să presupunem că A este un 4 × 5 matrice, •i că dorim să acceseze elementele A i, j pentru i De exemplu, să presupunem că A este un 4 × 5 matrice, •i că dorim să acceseze elementele A i, j pentru i De exemplu, să presupunem că A este un 4 × 5 matrice, •i că dorim să acceseze elementele A i, j pentru i De exemplu, să presupunem că A este un 4 × 5 matrice, •i că dorim să acceseze elementele A i, j pentru i De exemplu, să presupunem că A este un 4 × 5 matrice, •i că dorim să acceseze elementele A i, j pentru i De exemplu, să presupunem că A este un 4 × 5 matrice, •i că dorim să acceseze elementele A i, j pentru i De exemplu, să presupunem că A este un 4 × 5 matrice, •i că dorim să acceseze elementele A i, j pentru i
= 1, 2 •i j = 3, 4. Cu limba Scilab, acest lucru se poate face într-o singură declara•ie, folosind sintaxa A (1: 2,3: = 1, 2 •i j = 3, 4. Cu limba Scilab, acest lucru se poate face într-o singură declara•ie, folosind sintaxa A (1: 2,3: = 1, 2 •i j = 3, 4. Cu limba Scilab, acest lucru se poate face într-o singură declara•ie, folosind sintaxa A (1: 2,3: = 1, 2 •i j = 3, 4. Cu limba Scilab, acest lucru se poate face într-o singură declara•ie, folosind sintaxa A (1: 2,3: = 1, 2 •i j = 3, 4. Cu limba Scilab, acest lucru se poate face într-o singură declara•ie, folosind sintaxa A (1: 2,3: = 1, 2 •i j = 3, 4. Cu limba Scilab, acest lucru se poate face într-o singură declara•ie, folosind sintaxa A (1: 2,3:
4), astfel cum a arătat în următoarea sesiune.4), astfel cum a arătat în următoarea sesiune.
–>A = testmatrix ( "Hilb", 5) A =
25. -300. 1050. -1400. 630.
-300. 4800. -18900. 26880. -12600.
1050. – 18900. 79380. -117600. 56700.
-1400. 26880. – 117600. 179200. – 88200.
36

A întreaga matrice
A(:,:) întreaga matrice
A (i: j, k) elementele la rânduri de eu la j, în coloana k A (i: j, k) elementele la rânduri de eu la j, în coloana k A (i: j, k) elementele la rânduri de eu la j, în coloana k A (i: j, k) elementele la rânduri de eu la j, în coloana k A (i: j, k) elementele la rânduri de eu la j, în coloana k A (i: j, k) elementele la rânduri de eu la j, în coloana k A (i: j, k) elementele la rânduri de eu la j, în coloana k
A (i, j: k) elementele la rândul I, la coloanele din j la k A (i, j: k) elementele la rândul I, la coloanele din j la k A (i, j: k) elementele la rândul I, la coloanele din j la k A (i, j: k) elementele la rândul I, la coloanele din j la k A (i, j: k) elementele la rândul I, la coloanele din j la k A (i, j: k) elementele la rândul I, la coloanele din j la k A (i, j: k) elementele la rândul I, la coloanele din j la k
A (i, 🙂 randul eu randul eu
A (:, j) coloana j coloana j
Figura 24: Accesul la o matrice cu două puncte „:“ operator.
630. -12600. 56700. -88200. 44100.
–>A (1: 2, 3: 4) ans =
1050. -1400.
-18900. 26880.
În anumite circumstan•e, se poate întâmpla ca valorile indicelui sunt rezultatul unui calcul. De exemplu,
algoritmul se poate baza pe o buclă în cazul în care valorile indicelui sunt actualizate în mod regulat. În
aceste cazuri, sintaxa
A (vi, vj)
Unde vi, vj sunt vectori de valori ale indicelui, pot fi folosite pentru a desemna elementele Unde vi, vj sunt vectori de valori ale indicelui, pot fi folosite pentru a desemna elementele Unde vi, vj sunt vectori de valori ale indicelui, pot fi folosite pentru a desemna elementele
A ale căror subscript sunt elementele noi •i vj. Că sintaxa este ilustrată în exemplul următor. A ale căror subscript sunt elementele noi •i vj. Că sintaxa este ilustrată în exemplul următor. A ale căror subscript sunt elementele noi •i vj. Că sintaxa este ilustrată în exemplul următor. A ale căror subscript sunt elementele noi •i vj. Că sintaxa este ilustrată în exemplul următor. A ale căror subscript sunt elementele noi •i vj. Că sintaxa este ilustrată în exemplul următor. A ale căror subscript sunt elementele noi •i vj. Că sintaxa este ilustrată în exemplul următor.
–>A = testmatrix ( "Hilb", 5) A =
25. -300. 1050. -1400. 630.
-300. 4800. -18900. 26880. -12600.
1050. – 18900. 79380. -117600. 56700.
-1400. 26880. – 117600. 179200. – 88200.
630. -12600. 56700. -88200. 44100.
–>vi = 1: 2 noi
=
1. 2.
–>vj = 3: 4 =
vj
3. 4.
–>A (vi, vj) ani =
1050. -1400.
-18900. 26880.
–>= vi + vi = 1
2. 3.
–>vj = vj = vj + 1
4. 5.
–>A (vi, vj) ani =
26880. -12600.
-117600. 56700.
37

Există mai multe variante pe această sintaxă, •i fi gure 24 prezintă unele dintre combina•iile posibile. Există mai multe variante pe această sintaxă, •i fi gure 24 prezintă unele dintre combina•iile posibile. Există mai multe variante pe această sintaxă, •i fi gure 24 prezintă unele dintre combina•iile posibile.
De exemplu, în sesiunea următoare, vom folosi operatorul de colon, în scopul de a se inversează două
rânduri de matrice A. rânduri de matrice A.
–>A = testmatrix ( "Hilb", 3) A =
9. -36. 30.
-36. 192. – 180.
30. – 180. 180.
–>([1 2], 🙂 = A ([2 1], A = 🙂
-36. 192. – 180.
9. -36. 30.
30. – 180. 180.
Am putea interchange, de asemenea, coloanele matricei A cu declara•ia A (:, [3 1 2]). Am putea interchange, de asemenea, coloanele matricei A cu declara•ia A (:, [3 1 2]). Am putea interchange, de asemenea, coloanele matricei A cu declara•ia A (:, [3 1 2]). Am putea interchange, de asemenea, coloanele matricei A cu declara•ia A (:, [3 1 2]).
În această sec•iune am analizat mai multe utilizarea practică a operatorului de colon. Într-adevăr, acest operator este
utilizat în mai multe script-uri în cazul în care problemele de performan•ă, deoarece permite a avea acces la mai multe
elemente ale unei matrice într-o singură declara•ie. Acest lucru este asociat cu vectorizare de script-uri, un subiect care elemente ale unei matrice într-o singură declara•ie. Acest lucru este asociat cu vectorizare de script-uri, un subiect care elemente ale unei matrice într-o singură declara•ie. Acest lucru este asociat cu vectorizare de script-uri, un subiect care
este esen•ială pentru limba Scilab •i este revizuită pe parcursul acestui document.
4.7 ochi matrice 4.7 ochi matrice 4.7 ochi matrice
ochi Func•ia permite de a crea matricea de identitate cu dimensiunea care depinde de context. Numele său a ochi Func•ia permite de a crea matricea de identitate cu dimensiunea care depinde de context. Numele său a ochi Func•ia permite de a crea matricea de identitate cu dimensiunea care depinde de context. Numele său a
fost ales în locul eu pentru a se evita confuzia cu un indice sau cu numărul imaginar. fost ales în locul eu pentru a se evita confuzia cu un indice sau cu numărul imaginar. fost ales în locul eu pentru a se evita confuzia cu un indice sau cu numărul imaginar.
În următoarea sesiune, adaugam 3 la elementele diagonale ale matricei A. În următoarea sesiune, adaugam 3 la elementele diagonale ale matricei A.
–>A = cele (3,3) A =
1. 1. 1.
1. 1. 1.
1. 1. 1.
–>B = A + 3 * ochi () B =
4. 1. 1.
1. 4. 1.
1. 1. 4.
În următoarea sesiune, noi definim o matrice de identitate B cu ochi func•ie în func•ie de dimensiunea unei În următoarea sesiune, noi definim o matrice de identitate B cu ochi func•ie în func•ie de dimensiunea unei În următoarea sesiune, noi definim o matrice de identitate B cu ochi func•ie în func•ie de dimensiunea unei În următoarea sesiune, noi definim o matrice de identitate B cu ochi func•ie în func•ie de dimensiunea unei În următoarea sesiune, noi definim o matrice de identitate B cu ochi func•ie în func•ie de dimensiunea unei
matrice dată A. matrice dată A.
–>A = cele (2,2) A =
1. 1.
1. 1.
–>B = ochi (A) B =
1. 0.
0. 1.
38

În cele din urmă, putem folosi ochi (m, n) sintaxa pentru a crea o matrice identitate cu În cele din urmă, putem folosi ochi (m, n) sintaxa pentru a crea o matrice identitate cu În cele din urmă, putem folosi ochi (m, n) sintaxa pentru a crea o matrice identitate cu
m rânduri •i n coloane. m rânduri •i n coloane. m rânduri •i n coloane. m rânduri •i n coloane.
4.8 Matrici sunt dinamice
Dimensiunea unei matrice poate cre•te sau reduce în mod dinamic. Acest lucru permite să se adapteze dimensiunea matricei la
datele pe care le con•ine.
Lua•i în considerare următoarea sesiune în care ne definim un 2 × 3 matrice. Lua•i în considerare următoarea sesiune în care ne definim un 2 × 3 matrice. Lua•i în considerare următoarea sesiune în care ne definim un 2 × 3 matrice.
–>A = [1 2 3; 4 5 6] =
1. 2. 3.
4. 5. 6.
În următoarea sesiune, vom introduce valoarea 7 la indicii (3, 1). Acest lucru creează al treilea rând din În următoarea sesiune, vom introduce valoarea 7 la indicii (3, 1). Acest lucru creează al treilea rând din
matrice, programati A( 3, 1) de intrare la 7 •i fi lls celelalte valori ale •irului nou create cu zerouri. matrice, programati A( 3, 1) de intrare la 7 •i fi lls celelalte valori ale •irului nou create cu zerouri. matrice, programati A( 3, 1) de intrare la 7 •i fi lls celelalte valori ale •irului nou create cu zerouri. matrice, programati A( 3, 1) de intrare la 7 •i fi lls celelalte valori ale •irului nou create cu zerouri.
–>A (3,1) = 7 =
1. 2. 3.
4. 5. 6.
7. 0. 0.
Exemplul anterior a arătat că matrici pot cre•te. În următoarea sesiune, vom vedea că putem reduce, de
asemenea, dimensiunea unei matrice. Acest lucru se realizează prin utilizarea matricei goale „[]“ de operator
pentru a •terge coloana a treia.
–>A: = (3) [] = A
1. 2.
4. 5.
7. 0.
Putem schimba, de asemenea, forma matricei cu matrice funcție. matrice Putem schimba, de asemenea, forma matricei cu matrice funcție. matrice Putem schimba, de asemenea, forma matricei cu matrice funcție. matrice Putem schimba, de asemenea, forma matricei cu matrice funcție. matrice
Func•ia permite de a remodela o matrice sursă într-o matrice •intă cu o dimensiune di ff erent. Transformarea
se realizează coloană cu coloană, prin suprapunerea elementelor matricei sursă. În următoarea sesiune, vom
remodela matricea A, care are 3 × 2 = 6 elemente într-un vector rând cu 6 coloane. remodela matricea A, care are 3 × 2 = 6 elemente într-un vector rând cu 6 coloane. remodela matricea A, care are 3 × 2 = 6 elemente într-un vector rând cu 6 coloane. remodela matricea A, care are 3 × 2 = 6 elemente într-un vector rând cu 6 coloane. remodela matricea A, care are 3 × 2 = 6 elemente într-un vector rând cu 6 coloane.
–>B = matricea (A, 1,6) B =
1. 4. 7. 2. 5. 0.
4.9 dolar „$“ operatorul
De obicei, vom face uz de indicii pentru a face referin•ă de la început unei matrice. Prin opozi•ie, dolarul „$“ De obicei, vom face uz de indicii pentru a face referin•ă de la început unei matrice. Prin opozi•ie, dolarul „$“ De obicei, vom face uz de indicii pentru a face referin•ă de la început unei matrice. Prin opozi•ie, dolarul „$“
operatorul permite elemente de referin•ă de la sfâr•itul anului a matricei. De „$“ Operatorul semni fi es operatorul permite elemente de referin•ă de la sfâr•itul anului a matricei. De „$“ Operatorul semni fi es operatorul permite elemente de referin•ă de la sfâr•itul anului a matricei. De „$“ Operatorul semni fi es
„indicele care corespunde ultimului“ rând sau coloană, în func•ie de context. Această sintaxă este asociată
cu o algebră, astfel încât indicele de $ – eu corespunde indicelui ` – I, în cazul în care ` este numărul de rânduri cu o algebră, astfel încât indicele de $ – eu corespunde indicelui ` – I, în cazul în care ` este numărul de rânduri cu o algebră, astfel încât indicele de $ – eu corespunde indicelui ` – I, în cazul în care ` este numărul de rânduri cu o algebră, astfel încât indicele de $ – eu corespunde indicelui ` – I, în cazul în care ` este numărul de rânduri cu o algebră, astfel încât indicele de $ – eu corespunde indicelui ` – I, în cazul în care ` este numărul de rânduri cu o algebră, astfel încât indicele de $ – eu corespunde indicelui ` – I, în cazul în care ` este numărul de rânduri cu o algebră, astfel încât indicele de $ – eu corespunde indicelui ` – I, în cazul în care ` este numărul de rânduri
sau coloane corespunzătoare. Diverse utilizări ale operatorului de dolar sunt prezentate în fi gure 25 . În sau coloane corespunzătoare. Diverse utilizări ale operatorului de dolar sunt prezentate în fi gure 25 . În sau coloane corespunzătoare. Diverse utilizări ale operatorului de dolar sunt prezentate în fi gure 25 . În
exemplul următor, considerăm un 3 × 3 matrice •i accesăm elementul exemplul următor, considerăm un 3 × 3 matrice •i accesăm elementul exemplul următor, considerăm un 3 × 3 matrice •i accesăm elementul
A (2,1) = A (nr-1-nc 2) = A ($ – 1 $ – 2) deoarece nr = 3 •i nc = 3. A (2,1) = A (nr-1-nc 2) = A ($ – 1 $ – 2) deoarece nr = 3 •i nc = 3. A (2,1) = A (nr-1-nc 2) = A ($ – 1 $ – 2) deoarece nr = 3 •i nc = 3. A (2,1) = A (nr-1-nc 2) = A ($ – 1 $ – 2) deoarece nr = 3 •i nc = 3. A (2,1) = A (nr-1-nc 2) = A ($ – 1 $ – 2) deoarece nr = 3 •i nc = 3. A (2,1) = A (nr-1-nc 2) = A ($ – 1 $ – 2) deoarece nr = 3 •i nc = 3.
39

A (i, $) elementul la rândul I, în coloana nc elementul la rândul I, în coloana nc elementul la rândul I, în coloana nc elementul la rândul I, în coloana nc
A ($, j) elementul la rândul Nu, în coloana j elementul la rândul Nu, în coloana j elementul la rândul Nu, în coloana j elementul la rândul Nu, în coloana j
A ($ – i, $ – j) elementul la rândul Nu. – I, în coloana nc – j A ($ – i, $ – j) elementul la rândul Nu. – I, în coloana nc – j A ($ – i, $ – j) elementul la rândul Nu. – I, în coloana nc – j A ($ – i, $ – j) elementul la rândul Nu. – I, în coloana nc – j A ($ – i, $ – j) elementul la rândul Nu. – I, în coloana nc – j A ($ – i, $ – j) elementul la rândul Nu. – I, în coloana nc – j A ($ – i, $ – j) elementul la rândul Nu. – I, în coloana nc – j A ($ – i, $ – j) elementul la rândul Nu. – I, în coloana nc – j A ($ – i, $ – j) elementul la rândul Nu. – I, în coloana nc – j
Figura 25: Accesul la o matrice cu dolarul „$“ operator. De „$“ Operatorul semni fi es «ultimul index».
–>A = testmatrix ( "Hilb", 3) A =
9. -36. 30.
-36. 192. – 180.
30. – 180. 180.
–>A ($ – 1 $ – 2 ani) =
-36.
Dolarul „$“ operatorul permite să adăuga•i elemente în mod dinamic la sfâr•itul matrice. În sesiunea
următoare, vom adăuga un rând la capătul matricei Hilbert.
–>($ + 1, 🙂 = [1 2 3] =
9. -36. 30.
-36. 192. – 180.
30. – 180. 180.
1. 2. 3.
De „$“ operatorul este folosit cele mai multe ori, în contextul „$ + 1 “Declara•ie, care permite adăuga•i la De „$“ operatorul este folosit cele mai multe ori, în contextul „$ + 1 “Declara•ie, care permite adăuga•i la De „$“ operatorul este folosit cele mai multe ori, în contextul „$ + 1 “Declara•ie, care permite adăuga•i la De „$“ operatorul este folosit cele mai multe ori, în contextul „$ + 1 “Declara•ie, care permite adăuga•i la
sfâr•itul anului unei matrice. Acest lucru poate fi convenabil, deoarece se evită necesitatea de actualizare a sfâr•itul anului unei matrice. Acest lucru poate fi convenabil, deoarece se evită necesitatea de actualizare a
numărului de rânduri sau coloane în mod continuu, de•i ar trebui să fie folosite cu grijă, numai în situa•iile în care
numărul de rânduri sau coloane nu pot fi cunoscute în prealabil. Motivul este faptul că interpretul trebuie să plan
intern re-aloca memorie pentru întreaga matrice •i pentru a copia valorile vechi pentru noua destina•ie. Acest lucru
poate duce la penalită•i de performan•ă •i de aceea ar trebui să fie avertiza•i împotriva utilizărilor rele ale acestui
operator. Toate în toate, singura utilizare bună a „$ + 1 “Declara•ie este atunci când nu •tim în avans numărul nal fi operator. Toate în toate, singura utilizare bună a „$ + 1 “Declara•ie este atunci când nu •tim în avans numărul nal fi operator. Toate în toate, singura utilizare bună a „$ + 1 “Declara•ie este atunci când nu •tim în avans numărul nal fi
de rânduri sau coloane.
4.10 opera•ii de nivel scăzut
To•i operatorii algebra comune, cum ar fi „+“, „-“, „*“ •i sunt „/“ disponibile cu matrici reale. În următoarele
sec•iuni, ne concentrăm asupra exactă fi carea cativ acestor operatori, astfel încât multe surse de confuzie
sunt evitate.
Regulile pentru „+“ •i „-“ operatorii sunt aplicate direct din algebra obi•nuită. În următoarea sesiune, vom
adăuga două 2 × 2 matrici. adăuga două 2 × 2 matrici. adăuga două 2 × 2 matrici.
–>A = [1 2
–> 3 4] A =
1. 2.
3. 4.
–>B = [5 6
–> 7 8] B =
40

5. 6.
7. 8.
–> A + B =
ans
6. 8.
10. 12.
Când efectuăm adăugarea a două matrici, în cazul în care un operand este 1 × 1 matrice (de exemplu, un scalar), Când efectuăm adăugarea a două matrici, în cazul în care un operand este 1 × 1 matrice (de exemplu, un scalar), Când efectuăm adăugarea a două matrici, în cazul în care un operand este 1 × 1 matrice (de exemplu, un scalar),
valoarea acestui scalar se adaugă la fiecare element al doua matrice. Această caracteristică este prezentată în următoarea
sesiune.
–>A = [1 2
–> 3 4] A =
1. 2.
3. 4.
–> A + 1 an
= este
2. 3.
4. 5.
Adăugarea este posibilă doar în cazul în care cele două matrice sunt concordant adi•iei. În următoarea sesiune,
vom încerca să adăuga•i un 2 × 3 matrice cu 2 × 2 matrice •i verifică dacă acest lucru nu este posibil. vom încerca să adăuga•i un 2 × 3 matrice cu 2 × 2 matrice •i verifică dacă acest lucru nu este posibil. vom încerca să adăuga•i un 2 × 3 matrice cu 2 × 2 matrice •i verifică dacă acest lucru nu este posibil. vom încerca să adăuga•i un 2 × 3 matrice cu 2 × 2 matrice •i verifică dacă acest lucru nu este posibil. vom încerca să adăuga•i un 2 × 3 matrice cu 2 × 2 matrice •i verifică dacă acest lucru nu este posibil.
–>A = [1 2
–> 3 4] A =
1. 2.
3. 4.
–>B = [1 2 3
–>4 5 6] B =
1. 2. 3.
4. 5. 6.
–> A + B
! – eroare de 8 plus inconsistentă.
Operatorii elementare care sunt disponibile pentru matrici sunt prezentate în fi gure 26 . Operatorii elementare care sunt disponibile pentru matrici sunt prezentate în fi gure 26 . Operatorii elementare care sunt disponibile pentru matrici sunt prezentate în fi gure 26 .
Limbajul Scilab oferă doi operatori de diviziune, care este, divizia de dreapta „/“ •i a lăsat diviziunea „\“. Divizia
de dreapta, astfel încât este X = A / B = AB – 1 este solu•ia XB = A. Divizia de la stânga, astfel încât este X = A \ B de dreapta, astfel încât este X = A / B = AB – 1 este solu•ia XB = A. Divizia de la stânga, astfel încât este X = A \ B de dreapta, astfel încât este X = A / B = AB – 1 este solu•ia XB = A. Divizia de la stânga, astfel încât este X = A \ B de dreapta, astfel încât este X = A / B = AB – 1 este solu•ia XB = A. Divizia de la stânga, astfel încât este X = A \ B de dreapta, astfel încât este X = A / B = AB – 1 este solu•ia XB = A. Divizia de la stânga, astfel încât este X = A \ B de dreapta, astfel încât este X = A / B = AB – 1 este solu•ia XB = A. Divizia de la stânga, astfel încât este X = A \ B de dreapta, astfel încât este X = A / B = AB – 1 este solu•ia XB = A. Divizia de la stânga, astfel încât este X = A \ B de dreapta, astfel încât este X = A / B = AB – 1 este solu•ia XB = A. Divizia de la stânga, astfel încât este X = A \ B de dreapta, astfel încât este X = A / B = AB – 1 este solu•ia XB = A. Divizia de la stânga, astfel încât este X = A \ B
= A – 1 B este solu•ia AX = B. Divizia de la stânga A \ B calculează solu•ia problemei pătrat cel asociat dacă A nu = A – 1 B este solu•ia AX = B. Divizia de la stânga A \ B calculează solu•ia problemei pătrat cel asociat dacă A nu = A – 1 B este solu•ia AX = B. Divizia de la stânga A \ B calculează solu•ia problemei pătrat cel asociat dacă A nu = A – 1 B este solu•ia AX = B. Divizia de la stânga A \ B calculează solu•ia problemei pătrat cel asociat dacă A nu = A – 1 B este solu•ia AX = B. Divizia de la stânga A \ B calculează solu•ia problemei pătrat cel asociat dacă A nu = A – 1 B este solu•ia AX = B. Divizia de la stânga A \ B calculează solu•ia problemei pătrat cel asociat dacă A nu = A – 1 B este solu•ia AX = B. Divizia de la stânga A \ B calculează solu•ia problemei pătrat cel asociat dacă A nu = A – 1 B este solu•ia AX = B. Divizia de la stânga A \ B calculează solu•ia problemei pătrat cel asociat dacă A nu = A – 1 B este solu•ia AX = B. Divizia de la stânga A \ B calculează solu•ia problemei pătrat cel asociat dacă A nu = A – 1 B este solu•ia AX = B. Divizia de la stânga A \ B calculează solu•ia problemei pătrat cel asociat dacă A nu
este o matrice pătrată.
Figura 26 separă operatorii care tratează matricile ca întreg •i operatorii elementwise, care sunt Figura 26 separă operatorii care tratează matricile ca întreg •i operatorii elementwise, care sunt Figura 26 separă operatorii care tratează matricile ca întreg •i operatorii elementwise, care sunt
prezentate în sec•iunea următoare.
4.11 opera•iuni Elementwise
În cazul în care un punct“.“ Este scris înainte de un operator, acesta este asociat cu un operator elementwise,
adică opera•ia este realizată element cu element-. De exemplu, cu operatorul obi•nuit de multiplicare „*“,
con•inutul matricei C = A * B este c ij = con•inutul matricei C = A * B este c ij = con•inutul matricei C = A * B este c ij = con•inutul matricei C = A * B este c ij = con•inutul matricei C = A * B este c ij =
41

+ plus .+plus elementwise
– scădere .-scădere elementwise
* multiplicare .* multiplicare elementwise* multiplicare elementwise
/ diviziune dreapta . / elementwise diviziune dreapta. / elementwise diviziune dreapta
\ diviziune stânga . \ elementwise diviziune din stânga. \ elementwise diviziune din stânga
sau ** putere, •i anume X •i sau ** putere, •i anume X •i sau ** putere, •i anume X •i sau ** putere, •i anume X •i sau ** putere, •i anume X •i .putere elementwise
' transpune •i conjugat. ' transpune (dar nu se conjuge) transpune •i conjugat. ' transpune (dar nu se conjuge) transpune •i conjugat. ' transpune (dar nu se conjuge)
Figura 26: Operatorii de matrice •i operatorii elementwise.
Σ
k = 1, n A eu b kj. Odată cu multiplicarea elementwise“. *“ Operator, con•inutul matricei C = A. * B este c ij = A ij b ij. k = 1, n A eu b kj. Odată cu multiplicarea elementwise“. *“ Operator, con•inutul matricei C = A. * B este c ij = A ij b ij. k = 1, n A eu b kj. Odată cu multiplicarea elementwise“. *“ Operator, con•inutul matricei C = A. * B este c ij = A ij b ij. k = 1, n A eu b kj. Odată cu multiplicarea elementwise“. *“ Operator, con•inutul matricei C = A. * B este c ij = A ij b ij. k = 1, n A eu b kj. Odată cu multiplicarea elementwise“. *“ Operator, con•inutul matricei C = A. * B este c ij = A ij b ij. k = 1, n A eu b kj. Odată cu multiplicarea elementwise“. *“ Operator, con•inutul matricei C = A. * B este c ij = A ij b ij. k = 1, n A eu b kj. Odată cu multiplicarea elementwise“. *“ Operator, con•inutul matricei C = A. * B este c ij = A ij b ij. k = 1, n A eu b kj. Odată cu multiplicarea elementwise“. *“ Operator, con•inutul matricei C = A. * B este c ij = A ij b ij. k = 1, n A eu b kj. Odată cu multiplicarea elementwise“. *“ Operator, con•inutul matricei C = A. * B este c ij = A ij b ij. k = 1, n A eu b kj. Odată cu multiplicarea elementwise“. *“ Operator, con•inutul matricei C = A. * B este c ij = A ij b ij. k = 1, n A eu b kj. Odată cu multiplicarea elementwise“. *“ Operator, con•inutul matricei C = A. * B este c ij = A ij b ij. k = 1, n A eu b kj. Odată cu multiplicarea elementwise“. *“ Operator, con•inutul matricei C = A. * B este c ij = A ij b ij. k = 1, n A eu b kj. Odată cu multiplicarea elementwise“. *“ Operator, con•inutul matricei C = A. * B este c ij = A ij b ij. k = 1, n A eu b kj. Odată cu multiplicarea elementwise“. *“ Operator, con•inutul matricei C = A. * B este c ij = A ij b ij. k = 1, n A eu b kj. Odată cu multiplicarea elementwise“. *“ Operator, con•inutul matricei C = A. * B este c ij = A ij b ij. k = 1, n A eu b kj. Odată cu multiplicarea elementwise“. *“ Operator, con•inutul matricei C = A. * B este c ij = A ij b ij.
În următoarea sesiune, două matrice sunt multiplicate cu „*“ operator •i apoi cu elementwise“. *“
Operator, astfel încât să putem verifica dacă rezultatele sunt di ff erent.
–>A = cele (2,2) A =
1. 1.
1. 1.
–>B = 2 * cele (2,2) B =
2. 2.
2. 2.
–> A ans *
B =
4. 4.
4. 4.
–>A. * B
ani =
2. 2.
2. 2.
4.12 Conjugat •i transpusa transpusa non-conjugat
Ar putea exista unele confuzii atunci când elementwise singur citat“. ' “•i un singur citat regulat“ ' “Operatorii Ar putea exista unele confuzii atunci când elementwise singur citat“. ' “•i un singur citat regulat“ ' “Operatorii Ar putea exista unele confuzii atunci când elementwise singur citat“. ' “•i un singur citat regulat“ ' “Operatorii Ar putea exista unele confuzii atunci când elementwise singur citat“. ' “•i un singur citat regulat“ ' “Operatorii Ar putea exista unele confuzii atunci când elementwise singur citat“. ' “•i un singur citat regulat“ ' “Operatorii
sunt utilizate fără o cunoa•tere atentă a definitiile lor fi de exacte. Cu o matrice de camere duble care con•in
valori reale, single citat“ ' valori reale, single citat“ '
“Operatorul transpune numai matricea. În schimb, atunci când se utilizează o matrice de valori duble care
con•in complexe, unic citat“ ' “Transpune operatorului •i conjugate matricea. Prin urmare, opera•ia A = Z“ produce con•in complexe, unic citat“ ' “Transpune operatorului •i conjugate matricea. Prin urmare, opera•ia A = Z“ produce con•in complexe, unic citat“ ' “Transpune operatorului •i conjugate matricea. Prin urmare, opera•ia A = Z“ produce con•in complexe, unic citat“ ' “Transpune operatorului •i conjugate matricea. Prin urmare, opera•ia A = Z“ produce con•in complexe, unic citat“ ' “Transpune operatorului •i conjugate matricea. Prin urmare, opera•ia A = Z“ produce con•in complexe, unic citat“ ' “Transpune operatorului •i conjugate matricea. Prin urmare, opera•ia A = Z“ produce con•in complexe, unic citat“ ' “Transpune operatorului •i conjugate matricea. Prin urmare, opera•ia A = Z“ produce
o matrice cu intrări A jk = X kj – Iy kj, o matrice cu intrări A jk = X kj – Iy kj, o matrice cu intrări A jk = X kj – Iy kj, o matrice cu intrări A jk = X kj – Iy kj, o matrice cu intrări A jk = X kj – Iy kj, o matrice cu intrări A jk = X kj – Iy kj, o matrice cu intrări A jk = X kj – Iy kj, o matrice cu intrări A jk = X kj – Iy kj,
Unde eu este numărul imaginar, astfel încât eu 2 = – 1 •i X •i •i sunt păr•ile reale •i imaginare ale matricei Z. Elementwise Unde eu este numărul imaginar, astfel încât eu 2 = – 1 •i X •i •i sunt păr•ile reale •i imaginare ale matricei Z. Elementwise Unde eu este numărul imaginar, astfel încât eu 2 = – 1 •i X •i •i sunt păr•ile reale •i imaginare ale matricei Z. Elementwise Unde eu este numărul imaginar, astfel încât eu 2 = – 1 •i X •i •i sunt păr•ile reale •i imaginare ale matricei Z. Elementwise Unde eu este numărul imaginar, astfel încât eu 2 = – 1 •i X •i •i sunt păr•ile reale •i imaginare ale matricei Z. Elementwise Unde eu este numărul imaginar, astfel încât eu 2 = – 1 •i X •i •i sunt păr•ile reale •i imaginare ale matricei Z. Elementwise Unde eu este numărul imaginar, astfel încât eu 2 = – 1 •i X •i •i sunt păr•ile reale •i imaginare ale matricei Z. Elementwise Unde eu este numărul imaginar, astfel încât eu 2 = – 1 •i X •i •i sunt păr•ile reale •i imaginare ale matricei Z. Elementwise Unde eu este numărul imaginar, astfel încât eu 2 = – 1 •i X •i •i sunt păr•ile reale •i imaginare ale matricei Z. Elementwise Unde eu este numărul imaginar, astfel încât eu 2 = – 1 •i X •i •i sunt păr•ile reale •i imaginare ale matricei Z. Elementwise Unde eu este numărul imaginar, astfel încât eu 2 = – 1 •i X •i •i sunt păr•ile reale •i imaginare ale matricei Z. Elementwise Unde eu este numărul imaginar, astfel încât eu 2 = – 1 •i X •i •i sunt păr•ile reale •i imaginare ale matricei Z. Elementwise Unde eu este numărul imaginar, astfel încât eu 2 = – 1 •i X •i •i sunt păr•ile reale •i imaginare ale matricei Z. Elementwise
singur citat“. ' “Transpune întotdeauna fără conjugarea matricea, fie ea reală sau complexă. Prin urmare, singur citat“. ' “Transpune întotdeauna fără conjugarea matricea, fie ea reală sau complexă. Prin urmare, singur citat“. ' “Transpune întotdeauna fără conjugarea matricea, fie ea reală sau complexă. Prin urmare,
opera•ia
A = Z „. produce o matrice cu intrări A jk = X kj + Iy kj. A = Z „. produce o matrice cu intrări A jk = X kj + Iy kj. A = Z „. produce o matrice cu intrări A jk = X kj + Iy kj. A = Z „. produce o matrice cu intrări A jk = X kj + Iy kj. A = Z „. produce o matrice cu intrări A jk = X kj + Iy kj. A = Z „. produce o matrice cu intrări A jk = X kj + Iy kj. A = Z „. produce o matrice cu intrări A jk = X kj + Iy kj. A = Z „. produce o matrice cu intrări A jk = X kj + Iy kj.
În următoarea sesiune, se utilizează o matrice unsymetric dublelor con•inând valori complexe, astfel
încât erence di ff între cei doi operatori este evident.
–>A = [1 2; 3 4] +% i * [5 6; 7 8] A =
42

1. + 5.I 2. + 6.i
3. + 7.I 4. + 8.i
–> „ani A =
1. – 5.I 3. – 7.I
2. – 6.i 4. – 8.i
–>A.'
ani =
1. + 5.I 3. + 7.I
2. + 6.i 4. + 8.i
În următoarea sesiune, noi definim o matrice unsymetric de camere duble care con•in valori reale •i vezi că
rezultatele“ ' " •i ". ' “Sunt acelea•i în acest caz particular. rezultatele“ ' " •i ". ' “Sunt acelea•i în acest caz particular. rezultatele“ ' " •i ". ' “Sunt acelea•i în acest caz particular. rezultatele“ ' " •i ". ' “Sunt acelea•i în acest caz particular. rezultatele“ ' " •i ". ' “Sunt acelea•i în acest caz particular.
–>B = [2 1; 3 4] = B
1. 2.
3. 4.
–> ani B“=
1. 3.
2. 4.
–>B.“
ani =
1. 3.
2. 4.
Multe bug-uri sunt create din cauza acestei confuzii, astfel încât este obligatoriu să vă pune•i următoarea
întrebare: ce se întâmplă dacă matricea mea este complexă? În cazul în care răspunsul este „Vreau să transpună
doar“, atunci citatul elementwise“. ' “Operatorul trebuie să fie utilizat. doar“, atunci citatul elementwise“. ' “Operatorul trebuie să fie utilizat. doar“, atunci citatul elementwise“. ' “Operatorul trebuie să fie utilizat.
4.13 Multiplicarea doi vectori
Lăsa în ∈ R n să fie un vector coloană •i v T ∈ R n să fie un vector coloană. matricea Lăsa în ∈ R n să fie un vector coloană •i v T ∈ R n să fie un vector coloană. matricea Lăsa în ∈ R n să fie un vector coloană •i v T ∈ R n să fie un vector coloană. matricea Lăsa în ∈ R n să fie un vector coloană •i v T ∈ R n să fie un vector coloană. matricea Lăsa în ∈ R n să fie un vector coloană •i v T ∈ R n să fie un vector coloană. matricea Lăsa în ∈ R n să fie un vector coloană •i v T ∈ R n să fie un vector coloană. matricea Lăsa în ∈ R n să fie un vector coloană •i v T ∈ R n să fie un vector coloană. matricea Lăsa în ∈ R n să fie un vector coloană •i v T ∈ R n să fie un vector coloană. matricea Lăsa în ∈ R n să fie un vector coloană •i v T ∈ R n să fie un vector coloană. matricea Lăsa în ∈ R n să fie un vector coloană •i v T ∈ R n să fie un vector coloană. matricea Lăsa în ∈ R n să fie un vector coloană •i v T ∈ R n să fie un vector coloană. matricea Lăsa în ∈ R n să fie un vector coloană •i v T ∈ R n să fie un vector coloană. matricea
A = uv T are intrări A ij = în eu v j. În următoarea sesiune Scilab, vom multiplica vectorul coloană în prin vectorul rând v A = uv T are intrări A ij = în eu v j. În următoarea sesiune Scilab, vom multiplica vectorul coloană în prin vectorul rând v A = uv T are intrări A ij = în eu v j. În următoarea sesiune Scilab, vom multiplica vectorul coloană în prin vectorul rând v A = uv T are intrări A ij = în eu v j. În următoarea sesiune Scilab, vom multiplica vectorul coloană în prin vectorul rând v A = uv T are intrări A ij = în eu v j. În următoarea sesiune Scilab, vom multiplica vectorul coloană în prin vectorul rând v A = uv T are intrări A ij = în eu v j. În următoarea sesiune Scilab, vom multiplica vectorul coloană în prin vectorul rând v A = uv T are intrări A ij = în eu v j. În următoarea sesiune Scilab, vom multiplica vectorul coloană în prin vectorul rând v A = uv T are intrări A ij = în eu v j. În următoarea sesiune Scilab, vom multiplica vectorul coloană în prin vectorul rând v A = uv T are intrări A ij = în eu v j. În următoarea sesiune Scilab, vom multiplica vectorul coloană în prin vectorul rând v A = uv T are intrări A ij = în eu v j. În următoarea sesiune Scilab, vom multiplica vectorul coloană în prin vectorul rând v A = uv T are intrări A ij = în eu v j. În următoarea sesiune Scilab, vom multiplica vectorul coloană în prin vectorul rând v A = uv T are intrări A ij = în eu v j. În următoarea sesiune Scilab, vom multiplica vectorul coloană în prin vectorul rând v A = uv T are intrări A ij = în eu v j. În următoarea sesiune Scilab, vom multiplica vectorul coloană în prin vectorul rând v A = uv T are intrări A ij = în eu v j. În următoarea sesiune Scilab, vom multiplica vectorul coloană în prin vectorul rând v
•i stochează rezultatul în variabila A. •i stochează rezultatul în variabila A.
–>= U [1
–> 2
–> 3] u
=
1.
2.
3.
–>v = [4 5 6] v =
4. 5. 6.
–> U * v
ans =
4. 5. 6.
8. 10. 12.
12. 15. 18.
43

•i (A, "r") rowwise „•i“ •i (A, "r") rowwise „•i“
•i (A, "c") pe coloană „•i“ •i (A, "c") pe coloană „•i“
sau (A, "r") rowwise „sau“
sau (A, "c") pe coloană „sau“
Figura 27: Operatorii speciale de compara•ie pentru matrici. Operatorii de obicei „<“, „&“, „|“ sunt de asemenea
disponibile pentru matrici, dar •i •i sau permit efectuarea opera•iunilor rowwise •i pe coloană. disponibile pentru matrici, dar •i •i sau permit efectuarea opera•iunilor rowwise •i pe coloană. disponibile pentru matrici, dar •i •i sau permit efectuarea opera•iunilor rowwise •i pe coloană. disponibile pentru matrici, dar •i •i sau permit efectuarea opera•iunilor rowwise •i pe coloană. disponibile pentru matrici, dar •i •i sau permit efectuarea opera•iunilor rowwise •i pe coloană.
Acest lucru ar putea duce la o oarecare confuzie, deoarece manualele de algebra liniară ia în considerare numai
vectori coloană. Noi, de obicei, notăm cu în ∈ R n un vector coloană, astfel încât vectorul rândul corespunzător este notat cu vectori coloană. Noi, de obicei, notăm cu în ∈ R n un vector coloană, astfel încât vectorul rândul corespunzător este notat cu vectori coloană. Noi, de obicei, notăm cu în ∈ R n un vector coloană, astfel încât vectorul rândul corespunzător este notat cu vectori coloană. Noi, de obicei, notăm cu în ∈ R n un vector coloană, astfel încât vectorul rândul corespunzător este notat cu vectori coloană. Noi, de obicei, notăm cu în ∈ R n un vector coloană, astfel încât vectorul rândul corespunzător este notat cu vectori coloană. Noi, de obicei, notăm cu în ∈ R n un vector coloană, astfel încât vectorul rândul corespunzător este notat cu
în T. În implementarea Scilab asociat, un vector rând pot fi stocate direct în variabila în. S-ar putea fi, de asemenea, o sursă în T. În implementarea Scilab asociat, un vector rând pot fi stocate direct în variabila în. S-ar putea fi, de asemenea, o sursă în T. În implementarea Scilab asociat, un vector rând pot fi stocate direct în variabila în. S-ar putea fi, de asemenea, o sursă în T. În implementarea Scilab asociat, un vector rând pot fi stocate direct în variabila în. S-ar putea fi, de asemenea, o sursă în T. În implementarea Scilab asociat, un vector rând pot fi stocate direct în variabila în. S-ar putea fi, de asemenea, o sursă
de bug-uri, în cazul în care este de a•teptat vectorul de a•teptat să fie un vector de rând •i este, de fapt, un vector
coloană. Acesta este motivul pentru care orice algoritm care func•ionează doar pe un anumit tip de matrice (vector rând
sau vector coloană) trebuie să verifice dacă vectorul de intrare are într-adevăr forma corespunzătoare •i să genereze o
eroare dacă nu.
4.14 Compararea a două matrici reale
Compararea a două matrici este posibilă numai atunci când matricelor au aceea•i formă. Operatorii de
compara•ie prezentate în fi gure 16 într-adevăr, sunt efectuate în cazul în care argumentele de intrare A •i B sunt compara•ie prezentate în fi gure 16 într-adevăr, sunt efectuate în cazul în care argumentele de intrare A •i B sunt compara•ie prezentate în fi gure 16 într-adevăr, sunt efectuate în cazul în care argumentele de intrare A •i B sunt compara•ie prezentate în fi gure 16 într-adevăr, sunt efectuate în cazul în care argumentele de intrare A •i B sunt compara•ie prezentate în fi gure 16 într-adevăr, sunt efectuate în cazul în care argumentele de intrare A •i B sunt compara•ie prezentate în fi gure 16 într-adevăr, sunt efectuate în cazul în care argumentele de intrare A •i B sunt compara•ie prezentate în fi gure 16 într-adevăr, sunt efectuate în cazul în care argumentele de intrare A •i B sunt
matrice. Când două matrici sunt comparate, rezultatul este o matrice boolean. Această matrice poate fi apoi
combinate cu operatori precum •i, sau, care sunt prezentate în fi gure 27 . Operatorii de obicei „&“, „|“ sunt de combinate cu operatori precum •i, sau, care sunt prezentate în fi gure 27 . Operatorii de obicei „&“, „|“ sunt de combinate cu operatori precum •i, sau, care sunt prezentate în fi gure 27 . Operatorii de obicei „&“, „|“ sunt de combinate cu operatori precum •i, sau, care sunt prezentate în fi gure 27 . Operatorii de obicei „&“, „|“ sunt de combinate cu operatori precum •i, sau, care sunt prezentate în fi gure 27 . Operatorii de obicei „&“, „|“ sunt de
asemenea disponibile pentru matrici, dar •i •i sau permit efectuarea opera•iunilor rowwise •i pe coloană. asemenea disponibile pentru matrici, dar •i •i sau permit efectuarea opera•iunilor rowwise •i pe coloană. asemenea disponibile pentru matrici, dar •i •i sau permit efectuarea opera•iunilor rowwise •i pe coloană. asemenea disponibile pentru matrici, dar •i •i sau permit efectuarea opera•iunilor rowwise •i pe coloană. asemenea disponibile pentru matrici, dar •i •i sau permit efectuarea opera•iunilor rowwise •i pe coloană.
În următoarea sesiune Scilab, vom crea o matrice A •i se compară cu numărul 3. Observa•i că această În următoarea sesiune Scilab, vom crea o matrice A •i se compară cu numărul 3. Observa•i că această În următoarea sesiune Scilab, vom crea o matrice A •i se compară cu numărul 3. Observa•i că această În următoarea sesiune Scilab, vom crea o matrice A •i se compară cu numărul 3. Observa•i că această În următoarea sesiune Scilab, vom crea o matrice A •i se compară cu numărul 3. Observa•i că această
compara•ie este valabilă, deoarece numărul 3 este comparat element cu element împotriva A. Apoi am crea o compara•ie este valabilă, deoarece numărul 3 este comparat element cu element împotriva A. Apoi am crea o compara•ie este valabilă, deoarece numărul 3 este comparat element cu element împotriva A. Apoi am crea o compara•ie este valabilă, deoarece numărul 3 este comparat element cu element împotriva A. Apoi am crea o compara•ie este valabilă, deoarece numărul 3 este comparat element cu element împotriva A. Apoi am crea o
matrice B •i să compare cele două matrice A •i B. În sfâr•it, sau Func•ia este utilizată pentru a realiza o matrice B •i să compare cele două matrice A •i B. În sfâr•it, sau Func•ia este utilizată pentru a realiza o matrice B •i să compare cele două matrice A •i B. În sfâr•it, sau Func•ia este utilizată pentru a realiza o matrice B •i să compare cele două matrice A •i B. În sfâr•it, sau Func•ia este utilizată pentru a realiza o matrice B •i să compare cele două matrice A •i B. În sfâr•it, sau Func•ia este utilizată pentru a realiza o matrice B •i să compare cele două matrice A •i B. În sfâr•it, sau Func•ia este utilizată pentru a realiza o matrice B •i să compare cele două matrice A •i B. În sfâr•it, sau Func•ia este utilizată pentru a realiza o matrice B •i să compare cele două matrice A •i B. În sfâr•it, sau Func•ia este utilizată pentru a realiza o matrice B •i să compare cele două matrice A •i B. În sfâr•it, sau Func•ia este utilizată pentru a realiza o
compara•ie rowwise astfel încât să ob•inem coloanele în care o valoare în coloana a matricei A este mai compara•ie rowwise astfel încât să ob•inem coloanele în care o valoare în coloana a matricei A este mai compara•ie rowwise astfel încât să ob•inem coloanele în care o valoare în coloana a matricei A este mai
mare decât o valoare în coloana a matricei B. mare decât o valoare în coloana a matricei B.
–>A = [1 2 7
–>6 9 8] A =
1. 2. 7.
6. 9. 8.
–> A> 3
ans =
FFTTTT
–>B = [4 5 6
–>7 8 9] B =
4. 5. 6.
7. 8. 9.
–> A> B
44

ans =
FFTFTF
–>sau (A> B, "r") ans =
FTT
4.15 Probleme cu numere întregi punct de fl flotante
În această sec•iune, analizăm problemele care pot apărea atunci când folosim numere întregi, care sunt stocate ca numere
de puncte fl flotante. În cazul în care este utilizat fără precau•ie, aceste numere pot duce la rezultate dezastruoase, după
cum vom vedea.
Să presupunem că matricea A este un pătrat 2 × 2 matrice. Pentru a accesa elementul Să presupunem că matricea A este un pătrat 2 × 2 matrice. Pentru a accesa elementul Să presupunem că matricea A este un pătrat 2 × 2 matrice. Pentru a accesa elementul Să presupunem că matricea A este un pătrat 2 × 2 matrice. Pentru a accesa elementul Să presupunem că matricea A este un pătrat 2 × 2 matrice. Pentru a accesa elementul
(2,1) din această matrice, putem folosi un index constant, cum ar fi A (2,1), care este în siguran•ă. Mai mult decât atât, putem (2,1) din această matrice, putem folosi un index constant, cum ar fi A (2,1), care este în siguran•ă. Mai mult decât atât, putem (2,1) din această matrice, putem folosi un index constant, cum ar fi A (2,1), care este în siguran•ă. Mai mult decât atât, putem (2,1) din această matrice, putem folosi un index constant, cum ar fi A (2,1), care este în siguran•ă. Mai mult decât atât, putem
accesa elementul ( 2,1) prin utilizarea valorilor fl punctelor flotante, la fel ca în următoarea sesiune. accesa elementul ( 2,1) prin utilizarea valorilor fl punctelor flotante, la fel ca în următoarea sesiune. accesa elementul ( 2,1) prin utilizarea valorilor fl punctelor flotante, la fel ca în următoarea sesiune.
–>A = testmatrix ( "Hilb", 2) A =
4. – 6.
-6. 12.
Acum, pentru a putea accesa elementul de matrice, putem folosi variabile eu •i j Acum, pentru a putea accesa elementul de matrice, putem folosi variabile eu •i j Acum, pentru a putea accesa elementul de matrice, putem folosi variabile eu •i j Acum, pentru a putea accesa elementul de matrice, putem folosi variabile eu •i j
•i de a folosi declara•ia A (i, j), ca în următoarea sesiune. •i de a folosi declara•ia A (i, j), ca în următoarea sesiune. •i de a folosi declara•ia A (i, j), ca în următoarea sesiune.
–> I = 2 i =
2.
–> J = 1 j =
1.
–>A (i, j) =
ans
-6.
În sesiunea precedentă, subliniem că variabilele eu •i j sunt camere duble. Acesta este motivul pentru următoarea În sesiunea precedentă, subliniem că variabilele eu •i j sunt camere duble. Acesta este motivul pentru următoarea În sesiunea precedentă, subliniem că variabilele eu •i j sunt camere duble. Acesta este motivul pentru următoarea În sesiunea precedentă, subliniem că variabilele eu •i j sunt camere duble. Acesta este motivul pentru următoarea În sesiunea precedentă, subliniem că variabilele eu •i j sunt camere duble. Acesta este motivul pentru următoarea
declara•ie este valabilă.
–>A (2 [1.0 1.1 1.5 1.9]) ans =
-6. – 6. – 6. – 6.
Sesiunea anterioară arată că punctul fl valorile 1,0 flotante, 1.1, 1.5 •i 1.9 sunt toate convertite la numărul
întreg 1, ca •i în cazul în care int func•ie a fost utilizată pentru a converti numărul punctului fl într-un întreg întreg 1, ca •i în cazul în care int func•ie a fost utilizată pentru a converti numărul punctului fl într-un întreg întreg 1, ca •i în cazul în care int func•ie a fost utilizată pentru a converti numărul punctului fl într-un întreg
flotante. Într-adevăr, int Func•ia returnează numărul punctului fl stocarea flotante partea întreagă a numărului flotante. Într-adevăr, int Func•ia returnează numărul punctului fl stocarea flotante partea întreagă a numărului flotante. Într-adevăr, int Func•ia returnează numărul punctului fl stocarea flotante partea întreagă a numărului
dat punct fl flotante: într-un anumit sens, se rotunje•te spre zero. De exemplu, int (1.0), int (1.1), int (1.5) •i dat punct fl flotante: într-un anumit sens, se rotunje•te spre zero. De exemplu, int (1.0), int (1.1), int (1.5) •i dat punct fl flotante: într-un anumit sens, se rotunje•te spre zero. De exemplu, int (1.0), int (1.1), int (1.5) •i
int (1.9) toate se întoarce în timp ce 1 int (-1.0), int (-1.1), int (-1.5) •i int (-1.9) toate returneaza -1. int (1.9) toate se întoarce în timp ce 1 int (-1.0), int (-1.1), int (-1.5) •i int (-1.9) toate returneaza -1. int (1.9) toate se întoarce în timp ce 1 int (-1.0), int (-1.1), int (-1.5) •i int (-1.9) toate returneaza -1. int (1.9) toate se întoarce în timp ce 1 int (-1.0), int (-1.1), int (-1.5) •i int (-1.9) toate returneaza -1. int (1.9) toate se întoarce în timp ce 1 int (-1.0), int (-1.1), int (-1.5) •i int (-1.9) toate returneaza -1. int (1.9) toate se întoarce în timp ce 1 int (-1.0), int (-1.1), int (-1.5) •i int (-1.9) toate returneaza -1.
Observa•i că comportamentul de rotunjire poate fi explicată prin int func•ia, •i nu de podea funcție. Acest lucru Observa•i că comportamentul de rotunjire poate fi explicată prin int func•ia, •i nu de podea funcție. Acest lucru Observa•i că comportamentul de rotunjire poate fi explicată prin int func•ia, •i nu de podea funcție. Acest lucru Observa•i că comportamentul de rotunjire poate fi explicată prin int func•ia, •i nu de podea funcție. Acest lucru Observa•i că comportamentul de rotunjire poate fi explicată prin int func•ia, •i nu de podea funcție. Acest lucru
poate fi văzut atunci când luăm în considerare valori întregi negativ, în cazul în care valorile returnate ale celor două
func•ii nu sunt acelea•i. Într-adevăr, să presupunem că matricea A este un 4 × 4 matrice, cum a fost creat de A = func•ii nu sunt acelea•i. Într-adevăr, să presupunem că matricea A este un 4 × 4 matrice, cum a fost creat de A = func•ii nu sunt acelea•i. Într-adevăr, să presupunem că matricea A este un 4 × 4 matrice, cum a fost creat de A = func•ii nu sunt acelea•i. Într-adevăr, să presupunem că matricea A este un 4 × 4 matrice, cum a fost creat de A = func•ii nu sunt acelea•i. Într-adevăr, să presupunem că matricea A este un 4 × 4 matrice, cum a fost creat de A = func•ii nu sunt acelea•i. Într-adevăr, să presupunem că matricea A este un 4 × 4 matrice, cum a fost creat de A =
testmatrix ( "Hilb", 4) pentru testmatrix ( "Hilb", 4) pentru
45

exemplu. afectuos Func•ia returnează partea triunghiulară superioară a matricei de intrare. declarațiile triu (A, exemplu. afectuos Func•ia returnează partea triunghiulară superioară a matricei de intrare. declarațiile triu (A, exemplu. afectuos Func•ia returnează partea triunghiulară superioară a matricei de intrare. declarațiile triu (A, exemplu. afectuos Func•ia returnează partea triunghiulară superioară a matricei de intrare. declarațiile triu (A,
-1), afec•iune (A, int (-1.5)) •i triu (A, -1.5) produc acela•i rezultat. În schimb, declara•ia triu (A, etaj (-1.5)) produce -1), afec•iune (A, int (-1.5)) •i triu (A, -1.5) produc acela•i rezultat. În schimb, declara•ia triu (A, etaj (-1.5)) produce -1), afec•iune (A, int (-1.5)) •i triu (A, -1.5) produc acela•i rezultat. În schimb, declara•ia triu (A, etaj (-1.5)) produce -1), afec•iune (A, int (-1.5)) •i triu (A, -1.5) produc acela•i rezultat. În schimb, declara•ia triu (A, etaj (-1.5)) produce -1), afec•iune (A, int (-1.5)) •i triu (A, -1.5) produc acela•i rezultat. În schimb, declara•ia triu (A, etaj (-1.5)) produce -1), afec•iune (A, int (-1.5)) •i triu (A, -1.5) produc acela•i rezultat. În schimb, declara•ia triu (A, etaj (-1.5)) produce -1), afec•iune (A, int (-1.5)) •i triu (A, -1.5) produc acela•i rezultat. În schimb, declara•ia triu (A, etaj (-1.5)) produce
acela•i rezultat ca triu (A, -2). acela•i rezultat ca triu (A, -2).
Acest sistem permite să aibă o limbă care este atât de simplu •i e ciente FFI. Dar poate avea, de asemenea,
consecin•e nefericite, uneori, ceea ce duce la rezultate nea•teptate. De exemplu, lua•i în considerare următoarea
sesiune.
–>cele (1,1) ans =
1.
–>cele (1, (1 -0.9) * 10) ans =
[]
În cazul în care calculele au fost efectuate în aritmetică exactă, rezultatul (1 – 0.9) * 10 ar trebui să fie egală cu 1, ceea ce În cazul în care calculele au fost efectuate în aritmetică exactă, rezultatul (1 – 0.9) * 10 ar trebui să fie egală cu 1, ceea ce În cazul în care calculele au fost efectuate în aritmetică exactă, rezultatul (1 – 0.9) * 10 ar trebui să fie egală cu 1, ceea ce În cazul în care calculele au fost efectuate în aritmetică exactă, rezultatul (1 – 0.9) * 10 ar trebui să fie egală cu 1, ceea ce În cazul în care calculele au fost efectuate în aritmetică exactă, rezultatul (1 – 0.9) * 10 ar trebui să fie egală cu 1, ceea ce
duce la un 1 × 1 matrice. În schimb, declara•ia cele (1, (1-0.9) * 10) duce la un 1 × 1 matrice. În schimb, declara•ia cele (1, (1-0.9) * 10) duce la un 1 × 1 matrice. În schimb, declara•ia cele (1, (1-0.9) * 10) duce la un 1 × 1 matrice. În schimb, declara•ia cele (1, (1-0.9) * 10)
creează o matrice goală, pentru că valoarea returnată de int Func•ia este egal cu zero, a•a cum este prezentat în creează o matrice goală, pentru că valoarea returnată de int Func•ia este egal cu zero, a•a cum este prezentat în creează o matrice goală, pentru că valoarea returnată de int Func•ia este egal cu zero, a•a cum este prezentat în
următoarea sesiune.
–>int ((1 -0.9) * 10) ani =
0.
Într-adevăr, numărul zecimal 0.9 nu poate fi reprezentat exact ca o precizie fl număr dublu punct flotante. Acest
lucru conduce la o rotunjire, astfel încât reprezentarea punctului fl de 1-0.9 este flotante pu•in mai mică decât 0,1.
Atunci când se efectuează multiplicarea (1-0.9) * 10, punctul rezultat, prin urmare, este fl flotante pu•in mai mică
decât 1, a•a cum este prezentat în următoarea sesiune.
–>Format (25)
–> = 1-0.9
ani
.0999999999999999777955
–>(1-0.9) * 10 ani =
.9999999999999997779554
Apoi fl numărul punctului .999999999999999 flotante este considerat ca fiind un număr întreg de zero, ceea ce
face cele Func•ia întoarce o matrice goală. Originea acestei probleme este, prin urmare, utilizarea punctului fl face cele Func•ia întoarce o matrice goală. Originea acestei probleme este, prin urmare, utilizarea punctului fl face cele Func•ia întoarce o matrice goală. Originea acestei probleme este, prin urmare, utilizarea punctului fl
numărul 0.1 flotante, care nu ar fi fost folosit fără precau•ie pentru a efectua aritmetice cu numere întregi de
puncte fl flotante.
4.16 Mai multe despre func•iile elementare
În această sec•iune, vom analiza mai multe func•ii elementare, în special func•iile de trigonometrie bazate pe
grade, func•ii de logaritmi •i func•ii elementare pe bază de matrice.
func•ii trigonometrice, cum ar fi fără •i cos sunt prevăzute cu argumentul de intrare clasic în radiani. Dar func•ii trigonometrice, cum ar fi fără •i cos sunt prevăzute cu argumentul de intrare clasic în radiani. Dar func•ii trigonometrice, cum ar fi fără •i cos sunt prevăzute cu argumentul de intrare clasic în radiani. Dar func•ii trigonometrice, cum ar fi fără •i cos sunt prevăzute cu argumentul de intrare clasic în radiani. Dar func•ii trigonometrice, cum ar fi fără •i cos sunt prevăzute cu argumentul de intrare clasic în radiani. Dar
alte func•ii trigonometrice, cum ar fi
cosd Func•ia de exemplu, iau un argument de intrare în grad. Acest lucru înseamnă că, în tand sens cosd Func•ia de exemplu, iau un argument de intrare în grad. Acest lucru înseamnă că, în tand sens
matematic ( x) = tan ( XP / 180). Aceste func•ii pot fi u•or identifica•i, deoarece numele lor se termină cu litera“ d „De matematic ( x) = tan ( XP / 180). Aceste func•ii pot fi u•or identifica•i, deoarece numele lor se termină cu litera“ d „De matematic ( x) = tan ( XP / 180). Aceste func•ii pot fi u•or identifica•i, deoarece numele lor se termină cu litera“ d „De matematic ( x) = tan ( XP / 180). Aceste func•ii pot fi u•or identifica•i, deoarece numele lor se termină cu litera“ d „De matematic ( x) = tan ( XP / 180). Aceste func•ii pot fi u•or identifica•i, deoarece numele lor se termină cu litera“ d „De matematic ( x) = tan ( XP / 180). Aceste func•ii pot fi u•or identifica•i, deoarece numele lor se termină cu litera“ d „De matematic ( x) = tan ( XP / 180). Aceste func•ii pot fi u•or identifica•i, deoarece numele lor se termină cu litera“ d „De
exemplu, cosd, Sind printre al•ii. Avantajul cheie pentru func•iile elementare bazate pe grade este că ei exemplu, cosd, Sind printre al•ii. Avantajul cheie pentru func•iile elementare bazate pe grade este că ei exemplu, cosd, Sind printre al•ii. Avantajul cheie pentru func•iile elementare bazate pe grade este că ei
46

furnizează rezultate exacte atunci când argumentul lor are valori matematice speciale, cum ar fi multipli de 90 ◦. Într-adevăr, furnizează rezultate exacte atunci când argumentul lor are valori matematice speciale, cum ar fi multipli de 90 ◦. Într-adevăr, furnizează rezultate exacte atunci când argumentul lor are valori matematice speciale, cum ar fi multipli de 90 ◦. Într-adevăr,
punerea în aplicare a func•iilor bazate pe grade se bazează pe o reducere de argument, care este exact pentru valori
întregi. Acest lucru permite pentru a ob•ine rezultate exacte de punct fl pentru cazuri particulare flotante.
În următoarea sesiune, vom calcula păcat ( ii) •i sind (180), care sunt matematic egale, dar sunt asociate În următoarea sesiune, vom calcula păcat ( ii) •i sind (180), care sunt matematic egale, dar sunt asociate În următoarea sesiune, vom calcula păcat ( ii) •i sind (180), care sunt matematic egale, dar sunt asociate
cu di ff erent fl rezultate Punct flotante.
–>sin (% pi) ans =
1.225D-16
–>sunt (180) ans =
0.
Faptul că păcatul ( ii) nu este exact zero este asociat cu precizia limitată a numerelor punctelor de fl flotante. Faptul că păcatul ( ii) nu este exact zero este asociat cu precizia limitată a numerelor punctelor de fl flotante. Faptul că păcatul ( ii) nu este exact zero este asociat cu precizia limitată a numerelor punctelor de fl flotante.
Într-adevăr, argumentul Fr. este stocat în memorie cu un număr limitat de cifre semni fi cative, ceea ce duce la Într-adevăr, argumentul Fr. este stocat în memorie cu un număr limitat de cifre semni fi cative, ceea ce duce la Într-adevăr, argumentul Fr. este stocat în memorie cu un număr limitat de cifre semni fi cative, ceea ce duce la
rotunjire. În schimb, argumentul 180 este reprezentat exact ca un număr punct de fl flotante, pentru că este un
număr întreg mic. Prin urmare, valoarea sunt (180) este calculată de către sunt func•ionează ca sin (0). Încă o număr întreg mic. Prin urmare, valoarea sunt (180) este calculată de către sunt func•ionează ca sin (0). Încă o număr întreg mic. Prin urmare, valoarea sunt (180) este calculată de către sunt func•ionează ca sin (0). Încă o număr întreg mic. Prin urmare, valoarea sunt (180) este calculată de către sunt func•ionează ca sin (0). Încă o număr întreg mic. Prin urmare, valoarea sunt (180) este calculată de către sunt func•ionează ca sin (0). Încă o număr întreg mic. Prin urmare, valoarea sunt (180) este calculată de către sunt func•ionează ca sin (0). Încă o număr întreg mic. Prin urmare, valoarea sunt (180) este calculată de către sunt func•ionează ca sin (0). Încă o
dată, numărul zero este reprezentat de un număr exact punctul de fl flotante. Mai mult, func•ia de păcat este
reprezentat în [ – II / 2, II / 2] interval de un polinom de forma p (x) = x + x 3 q (x 2) Unde q este un grad de polinom reprezentat în [ – II / 2, II / 2] interval de un polinom de forma p (x) = x + x 3 q (x 2) Unde q este un grad de polinom reprezentat în [ – II / 2, II / 2] interval de un polinom de forma p (x) = x + x 3 q (x 2) Unde q este un grad de polinom reprezentat în [ – II / 2, II / 2] interval de un polinom de forma p (x) = x + x 3 q (x 2) Unde q este un grad de polinom reprezentat în [ – II / 2, II / 2] interval de un polinom de forma p (x) = x + x 3 q (x 2) Unde q este un grad de polinom reprezentat în [ – II / 2, II / 2] interval de un polinom de forma p (x) = x + x 3 q (x 2) Unde q este un grad de polinom reprezentat în [ – II / 2, II / 2] interval de un polinom de forma p (x) = x + x 3 q (x 2) Unde q este un grad de polinom reprezentat în [ – II / 2, II / 2] interval de un polinom de forma p (x) = x + x 3 q (x 2) Unde q este un grad de polinom reprezentat în [ – II / 2, II / 2] interval de un polinom de forma p (x) = x + x 3 q (x 2) Unde q este un grad de polinom reprezentat în [ – II / 2, II / 2] interval de un polinom de forma p (x) = x + x 3 q (x 2) Unde q este un grad de polinom reprezentat în [ – II / 2, II / 2] interval de un polinom de forma p (x) = x + x 3 q (x 2) Unde q este un grad de polinom reprezentat în [ – II / 2, II / 2] interval de un polinom de forma p (x) = x + x 3 q (x 2) Unde q este un grad de polinom reprezentat în [ – II / 2, II / 2] interval de un polinom de forma p (x) = x + x 3 q (x 2) Unde q este un grad de polinom
scăzut. Prin urmare, ob•inem sunt (180) = sin (0) = 0, scăzut. Prin urmare, ob•inem sunt (180) = sin (0) = 0,
care este rezultatul exact.
Buturuga Func•ia calculează logaritmul natural al argumentului de intrare, adică inversul func•iei exp = e X, Buturuga Func•ia calculează logaritmul natural al argumentului de intrare, adică inversul func•iei exp = e X, Buturuga Func•ia calculează logaritmul natural al argumentului de intrare, adică inversul func•iei exp = e X, Buturuga Func•ia calculează logaritmul natural al argumentului de intrare, adică inversul func•iei exp = e X, Buturuga Func•ia calculează logaritmul natural al argumentului de intrare, adică inversul func•iei exp = e X, Buturuga Func•ia calculează logaritmul natural al argumentului de intrare, adică inversul func•iei exp = e X,
Unde e este constanta lui Euler. Pentru a calcula func•ia logaritm pentru alte baze, putem folosi func•iile log10 Unde e este constanta lui Euler. Pentru a calcula func•ia logaritm pentru alte baze, putem folosi func•iile log10 Unde e este constanta lui Euler. Pentru a calcula func•ia logaritm pentru alte baze, putem folosi func•iile log10 Unde e este constanta lui Euler. Pentru a calcula func•ia logaritm pentru alte baze, putem folosi func•iile log10
•i log2,•i log2,
asociate cu baze 10 •i 2, respectiv. În următoarea sesiune, vom calcula valorile log, log10 •i log2 func•ii pentru asociate cu baze 10 •i 2, respectiv. În următoarea sesiune, vom calcula valorile log, log10 •i log2 func•ii pentru asociate cu baze 10 •i 2, respectiv. În următoarea sesiune, vom calcula valorile log, log10 •i log2 func•ii pentru asociate cu baze 10 •i 2, respectiv. În următoarea sesiune, vom calcula valorile log, log10 •i log2 func•ii pentru asociate cu baze 10 •i 2, respectiv. În următoarea sesiune, vom calcula valorile log, log10 •i log2 func•ii pentru
anumite valori speci fi de X. anumite valori speci fi de X.
–>x = [exp (1) exp (2) 1 10 2 ^ 1 2 ^ 10] x =
2.7182818 7.3890561 1. 10. 2. 1024.
–>[ 'Log (x 'x) log10 (x') log2 (x')] ans =
2.7182818 1. 0.4342945 1.442695
7.3890561 2. 0.8685890 2.8853901
1. 0. 0. 0.
10. 2.3025851 1. 3.3219281
2. 0.6931472 0.30103 1.
1024. 6.9314718 3.0103 10.
Coloana fi prima din tabelul anterior con•ine diferite valori ale X. Numărul coloanei 2 con•ine diferite valori ale log Coloana fi prima din tabelul anterior con•ine diferite valori ale X. Numărul coloanei 2 con•ine diferite valori ale log Coloana fi prima din tabelul anterior con•ine diferite valori ale X. Numărul coloanei 2 con•ine diferite valori ale log Coloana fi prima din tabelul anterior con•ine diferite valori ale X. Numărul coloanei 2 con•ine diferite valori ale log
(x), în timp ce coloanele 3 •i 4 con•ine diferite valori ale log10 (x) •i log2 (x). (x), în timp ce coloanele 3 •i 4 con•ine diferite valori ale log10 (x) •i log2 (x). (x), în timp ce coloanele 3 •i 4 con•ine diferite valori ale log10 (x) •i log2 (x). (x), în timp ce coloanele 3 •i 4 con•ine diferite valori ale log10 (x) •i log2 (x). (x), în timp ce coloanele 3 •i 4 con•ine diferite valori ale log10 (x) •i log2 (x).
Cele mai multe func•ii sunt elementwise, adică, având în vedere o matrice de intrare, se aplică aceea•i func•ie
pentru fiecare intrare a matricei. Cu toate acestea, unele func•ii au o semnifica•ie specială în ceea ce prive•te algebra
liniară. De exemplu, matricea exponen•ială a unei func•ii este de definit prin e X = Σ liniară. De exemplu, matricea exponen•ială a unei func•ii este de definit prin e X = Σ liniară. De exemplu, matricea exponen•ială a unei func•ii este de definit prin e X = Σ liniară. De exemplu, matricea exponen•ială a unei func•ii este de definit prin e X = Σ
k = 0, ∞ 1 k = 0, ∞ 1 k = 0, ∞ 1 k = 0, ∞ 1k! X k, Unde X este un pătrat n × n matrice. Pentru a k! X k, Unde X este un pătrat n × n matrice. Pentru a k! X k, Unde X este un pătrat n × n matrice. Pentru a k! X k, Unde X este un pătrat n × n matrice. Pentru a k! X k, Unde X este un pătrat n × n matrice. Pentru a k! X k, Unde X este un pătrat n × n matrice. Pentru a k! X k, Unde X este un pătrat n × n matrice. Pentru a k! X k, Unde X este un pătrat n × n matrice. Pentru a k! X k, Unde X este un pătrat n × n matrice. Pentru a k! X k, Unde X este un pătrat n × n matrice. Pentru a
calcula exponen•ială a unei matrice, putem folosi Expms funcție. Evident, func•ia exponen•ială elementwise exp calcula exponen•ială a unei matrice, putem folosi Expms funcție. Evident, func•ia exponen•ială elementwise exp calcula exponen•ială a unei matrice, putem folosi Expms funcție. Evident, func•ia exponen•ială elementwise exp calcula exponen•ială a unei matrice, putem folosi Expms funcție. Evident, func•ia exponen•ială elementwise exp
nu returnează acela•i rezultat. Mai general, func•iile care au o semnifica•ie specială în ceea ce prive•te matrici
au un nume care se termină cu litera“ m „De exemplu, expm, sinm, printre al•ii. În au un nume care se termină cu litera“ m „De exemplu, expm, sinm, printre al•ii. În au un nume care se termină cu litera“ m „De exemplu, expm, sinm, printre al•ii. În au un nume care se termină cu litera“ m „De exemplu, expm, sinm, printre al•ii. În au un nume care se termină cu litera“ m „De exemplu, expm, sinm, printre al•ii. În
47

CHOL factorizarea Cholesky
companion matrice companion
Cond număr condi•ie
determinant
INV invers matrice
linsolve solver ecua•ie liniară
lsq lineari probleme mici pătrate
lu Factori LU de eliminare Gauss
qr descompunerea QR
rcond Număr condi•ie inversă
spec valori proprii
SVD descompunerea unei valori singulare
testmatrix o colec•ie de matrici de testare testmatrix o colec•ie de matrici de testare
urmă urmă
Figura 28: Unele func•ii comune pentru algebra liniară.
următoarea sesiune, ne definim un 2 × 2 matrice care con•ine speci fi ce multples de II / 2 •i de a folosi fără •i sinm următoarea sesiune, ne definim un 2 × 2 matrice care con•ine speci fi ce multples de II / 2 •i de a folosi fără •i sinm următoarea sesiune, ne definim un 2 × 2 matrice care con•ine speci fi ce multples de II / 2 •i de a folosi fără •i sinm următoarea sesiune, ne definim un 2 × 2 matrice care con•ine speci fi ce multples de II / 2 •i de a folosi fără •i sinm următoarea sesiune, ne definim un 2 × 2 matrice care con•ine speci fi ce multples de II / 2 •i de a folosi fără •i sinm următoarea sesiune, ne definim un 2 × 2 matrice care con•ine speci fi ce multples de II / 2 •i de a folosi fără •i sinm următoarea sesiune, ne definim un 2 × 2 matrice care con•ine speci fi ce multples de II / 2 •i de a folosi fără •i sinm următoarea sesiune, ne definim un 2 × 2 matrice care con•ine speci fi ce multples de II / 2 •i de a folosi fără •i sinm
func•ii.
–>A = [% pi / 2% pi; 2 * pi% 3% * pi / 2] A =
1.5707963 3.1415927
6.2831853 4.712389
–>sin (A) ans
=
1. 1.225D-16
-2.449D-16-1.
–>sinm (A) =
militar
-0.3333333 0.6666667
1.3333333 0.3333333
4.17 nivel superior caracteristici algebra liniară
În această sec•iune, vom BRIE fl y introduce un nivel superior caracteristici algebra liniară de Scilab.
Scilab are o bibliotecă completă algebră liniară, care este capabil de a gestiona matrici atât dense •i rare.
O carte completă pe algebra liniară ar fi necesare pentru a face o descriere a algoritmilor oferite de Scilab în
acest fi ELD, iar acest lucru este evident în afara domeniului de aplicare a acestui document. Figura 28 prezintă acest fi ELD, iar acest lucru este evident în afara domeniului de aplicare a acestui document. Figura 28 prezintă acest fi ELD, iar acest lucru este evident în afara domeniului de aplicare a acestui document. Figura 28 prezintă
o listă cu cele mai frecvente func•ii algebra liniară.
4.18 Exerci•ii
Exercitarea 4.1 ( Plus unu) Crearea vectorului ( X 1 + 1, X 2 + 1, X 3 + 1, X 4 + 1) cu următoarele criterii: X. Exercitarea 4.1 ( Plus unu) Crearea vectorului ( X 1 + 1, X 2 + 1, X 3 + 1, X 4 + 1) cu următoarele criterii: X. Exercitarea 4.1 ( Plus unu) Crearea vectorului ( X 1 + 1, X 2 + 1, X 3 + 1, X 4 + 1) cu următoarele criterii: X. Exercitarea 4.1 ( Plus unu) Crearea vectorului ( X 1 + 1, X 2 + 1, X 3 + 1, X 4 + 1) cu următoarele criterii: X. Exercitarea 4.1 ( Plus unu) Crearea vectorului ( X 1 + 1, X 2 + 1, X 3 + 1, X 4 + 1) cu următoarele criterii: X. Exercitarea 4.1 ( Plus unu) Crearea vectorului ( X 1 + 1, X 2 + 1, X 3 + 1, X 4 + 1) cu următoarele criterii: X. Exercitarea 4.1 ( Plus unu) Crearea vectorului ( X 1 + 1, X 2 + 1, X 3 + 1, X 4 + 1) cu următoarele criterii: X. Exercitarea 4.1 ( Plus unu) Crearea vectorului ( X 1 + 1, X 2 + 1, X 3 + 1, X 4 + 1) cu următoarele criterii: X. Exercitarea 4.1 ( Plus unu) Crearea vectorului ( X 1 + 1, X 2 + 1, X 3 + 1, X 4 + 1) cu următoarele criterii: X. Exercitarea 4.1 ( Plus unu) Crearea vectorului ( X 1 + 1, X 2 + 1, X 3 + 1, X 4 + 1) cu următoarele criterii: X. Exercitarea 4.1 ( Plus unu) Crearea vectorului ( X 1 + 1, X 2 + 1, X 3 + 1, X 4 + 1) cu următoarele criterii: X. Exercitarea 4.1 ( Plus unu) Crearea vectorului ( X 1 + 1, X 2 + 1, X 3 + 1, X 4 + 1) cu următoarele criterii: X. Exercitarea 4.1 ( Plus unu) Crearea vectorului ( X 1 + 1, X 2 + 1, X 3 + 1, X 4 + 1) cu următoarele criterii: X. Exercitarea 4.1 ( Plus unu) Crearea vectorului ( X 1 + 1, X 2 + 1, X 3 + 1, X 4 + 1) cu următoarele criterii: X. Exercitarea 4.1 ( Plus unu) Crearea vectorului ( X 1 + 1, X 2 + 1, X 3 + 1, X 4 + 1) cu următoarele criterii: X. Exercitarea 4.1 ( Plus unu) Crearea vectorului ( X 1 + 1, X 2 + 1, X 3 + 1, X 4 + 1) cu următoarele criterii: X.
x = 1: 4;
Exercitarea 4.2 ( multiplicare Vectorized) Crearea vectorului ( X 1 •i 1, X 2 •i 2, X 3 •i 3, X 4 •i 4) cu următoarele X •i •i. Exercitarea 4.2 ( multiplicare Vectorized) Crearea vectorului ( X 1 •i 1, X 2 •i 2, X 3 •i 3, X 4 •i 4) cu următoarele X •i •i. Exercitarea 4.2 ( multiplicare Vectorized) Crearea vectorului ( X 1 •i 1, X 2 •i 2, X 3 •i 3, X 4 •i 4) cu următoarele X •i •i. Exercitarea 4.2 ( multiplicare Vectorized) Crearea vectorului ( X 1 •i 1, X 2 •i 2, X 3 •i 3, X 4 •i 4) cu următoarele X •i •i. Exercitarea 4.2 ( multiplicare Vectorized) Crearea vectorului ( X 1 •i 1, X 2 •i 2, X 3 •i 3, X 4 •i 4) cu următoarele X •i •i. Exercitarea 4.2 ( multiplicare Vectorized) Crearea vectorului ( X 1 •i 1, X 2 •i 2, X 3 •i 3, X 4 •i 4) cu următoarele X •i •i. Exercitarea 4.2 ( multiplicare Vectorized) Crearea vectorului ( X 1 •i 1, X 2 •i 2, X 3 •i 3, X 4 •i 4) cu următoarele X •i •i. Exercitarea 4.2 ( multiplicare Vectorized) Crearea vectorului ( X 1 •i 1, X 2 •i 2, X 3 •i 3, X 4 •i 4) cu următoarele X •i •i. Exercitarea 4.2 ( multiplicare Vectorized) Crearea vectorului ( X 1 •i 1, X 2 •i 2, X 3 •i 3, X 4 •i 4) cu următoarele X •i •i. Exercitarea 4.2 ( multiplicare Vectorized) Crearea vectorului ( X 1 •i 1, X 2 •i 2, X 3 •i 3, X 4 •i 4) cu următoarele X •i •i. Exercitarea 4.2 ( multiplicare Vectorized) Crearea vectorului ( X 1 •i 1, X 2 •i 2, X 3 •i 3, X 4 •i 4) cu următoarele X •i •i. Exercitarea 4.2 ( multiplicare Vectorized) Crearea vectorului ( X 1 •i 1, X 2 •i 2, X 3 •i 3, X 4 •i 4) cu următoarele X •i •i. Exercitarea 4.2 ( multiplicare Vectorized) Crearea vectorului ( X 1 •i 1, X 2 •i 2, X 3 •i 3, X 4 •i 4) cu următoarele X •i •i. Exercitarea 4.2 ( multiplicare Vectorized) Crearea vectorului ( X 1 •i 1, X 2 •i 2, X 3 •i 3, X 4 •i 4) cu următoarele X •i •i. Exercitarea 4.2 ( multiplicare Vectorized) Crearea vectorului ( X 1 •i 1, X 2 •i 2, X 3 •i 3, X 4 •i 4) cu următoarele X •i •i. Exercitarea 4.2 ( multiplicare Vectorized) Crearea vectorului ( X 1 •i 1, X 2 •i 2, X 3 •i 3, X 4 •i 4) cu următoarele X •i •i. Exercitarea 4.2 ( multiplicare Vectorized) Crearea vectorului ( X 1 •i 1, X 2 •i 2, X 3 •i 3, X 4 •i 4) cu următoarele X •i •i. Exercitarea 4.2 ( multiplicare Vectorized) Crearea vectorului ( X 1 •i 1, X 2 •i 2, X 3 •i 3, X 4 •i 4) cu următoarele X •i •i. Exercitarea 4.2 ( multiplicare Vectorized) Crearea vectorului ( X 1 •i 1, X 2 •i 2, X 3 •i 3, X 4 •i 4) cu următoarele X •i •i. Exercitarea 4.2 ( multiplicare Vectorized) Crearea vectorului ( X 1 •i 1, X 2 •i 2, X 3 •i 3, X 4 •i 4) cu următoarele X •i •i. Exercitarea 4.2 ( multiplicare Vectorized) Crearea vectorului ( X 1 •i 1, X 2 •i 2, X 3 •i 3, X 4 •i 4) cu următoarele X •i •i. Exercitarea 4.2 ( multiplicare Vectorized) Crearea vectorului ( X 1 •i 1, X 2 •i 2, X 3 •i 3, X 4 •i 4) cu următoarele X •i •i. Exercitarea 4.2 ( multiplicare Vectorized) Crearea vectorului ( X 1 •i 1, X 2 •i 2, X 3 •i 3, X 4 •i 4) cu următoarele X •i •i.
48

x = 1: 4; y = 5:
8;
Exercitarea 4.3 ( invertit Vectorized) Crearea vectorului ( Exercitarea 4.3 ( invertit Vectorized) Crearea vectorului ( Exercitarea 4.3 ( invertit Vectorized) Crearea vectorului (1
X 1, 1X 1, 1X 1, 1X 2, 1X 2, 1X 2, 1X 3, 1X 3, 1X 3, 1X 4X 4)
cu următoarele X. cu următoarele X.
x = 1: 4;
Exercitarea 4.4 ( Vectorized diviziune) Crearea vectorului ( Exercitarea 4.4 ( Vectorized diviziune) Crearea vectorului ( Exercitarea 4.4 ( Vectorized diviziune) Crearea vectorului (X 1X 1
•i 1, X 2 •i 1, X 2 •i 1, X 2 •i 1, X 2•i 2, X 3 •i 2, X 3 •i 2, X 3 •i 2, X 3•i 3, X 4 •i 3, X 4 •i 3, X 4 •i 3, X 4•i 4•i 4)
cu următoarele X •i cu următoarele X •i cu următoarele X •i
•i.
x = 12 * (6: 9); y = 1: 4;
Exercitarea 4.5 ( Vectorized Cuadratura) Crearea vectorului ( X 21, X 22, X 23, X 24 Exercitarea 4.5 ( Vectorized Cuadratura) Crearea vectorului ( X 21, X 22, X 23, X 24 Exercitarea 4.5 ( Vectorized Cuadratura) Crearea vectorului ( X 21, X 22, X 23, X 24 Exercitarea 4.5 ( Vectorized Cuadratura) Crearea vectorului ( X 21, X 22, X 23, X 24 Exercitarea 4.5 ( Vectorized Cuadratura) Crearea vectorului ( X 21, X 22, X 23, X 24 Exercitarea 4.5 ( Vectorized Cuadratura) Crearea vectorului ( X 21, X 22, X 23, X 24 Exercitarea 4.5 ( Vectorized Cuadratura) Crearea vectorului ( X 21, X 22, X 23, X 24 Exercitarea 4.5 ( Vectorized Cuadratura) Crearea vectorului ( X 21, X 22, X 23, X 24 Exercitarea 4.5 ( Vectorized Cuadratura) Crearea vectorului ( X 21, X 22, X 23, X 24 Exercitarea 4.5 ( Vectorized Cuadratura) Crearea vectorului ( X 21, X 22, X 23, X 24 Exercitarea 4.5 ( Vectorized Cuadratura) Crearea vectorului ( X 21, X 22, X 23, X 24)
cu x = 1, 2, 3, 4. cu x = 1, 2, 3, 4. cu x = 1, 2, 3, 4. cu x = 1, 2, 3, 4. cu x = 1, 2, 3, 4. cu x = 1, 2, 3, 4.
Exercitarea 4.6 ( Vectorized sinus) Crearea vectorului ( sin (x 1), sin (x 2), . . . . sin (x 10)) cu X este un vector de 10 valori alese liniar în intervalul Exercitarea 4.6 ( Vectorized sinus) Crearea vectorului ( sin (x 1), sin (x 2), . . . . sin (x 10)) cu X este un vector de 10 valori alese liniar în intervalul Exercitarea 4.6 ( Vectorized sinus) Crearea vectorului ( sin (x 1), sin (x 2), . . . . sin (x 10)) cu X este un vector de 10 valori alese liniar în intervalul Exercitarea 4.6 ( Vectorized sinus) Crearea vectorului ( sin (x 1), sin (x 2), . . . . sin (x 10)) cu X este un vector de 10 valori alese liniar în intervalul Exercitarea 4.6 ( Vectorized sinus) Crearea vectorului ( sin (x 1), sin (x 2), . . . . sin (x 10)) cu X este un vector de 10 valori alese liniar în intervalul Exercitarea 4.6 ( Vectorized sinus) Crearea vectorului ( sin (x 1), sin (x 2), . . . . sin (x 10)) cu X este un vector de 10 valori alese liniar în intervalul Exercitarea 4.6 ( Vectorized sinus) Crearea vectorului ( sin (x 1), sin (x 2), . . . . sin (x 10)) cu X este un vector de 10 valori alese liniar în intervalul Exercitarea 4.6 ( Vectorized sinus) Crearea vectorului ( sin (x 1), sin (x 2), . . . . sin (x 10)) cu X este un vector de 10 valori alese liniar în intervalul Exercitarea 4.6 ( Vectorized sinus) Crearea vectorului ( sin (x 1), sin (x 2), . . . . sin (x 10)) cu X este un vector de 10 valori alese liniar în intervalul Exercitarea 4.6 ( Vectorized sinus) Crearea vectorului ( sin (x 1), sin (x 2), . . . . sin (x 10)) cu X este un vector de 10 valori alese liniar în intervalul Exercitarea 4.6 ( Vectorized sinus) Crearea vectorului ( sin (x 1), sin (x 2), . . . . sin (x 10)) cu X este un vector de 10 valori alese liniar în intervalul Exercitarea 4.6 ( Vectorized sinus) Crearea vectorului ( sin (x 1), sin (x 2), . . . . sin (x 10)) cu X este un vector de 10 valori alese liniar în intervalul Exercitarea 4.6 ( Vectorized sinus) Crearea vectorului ( sin (x 1), sin (x 2), . . . . sin (x 10)) cu X este un vector de 10 valori alese liniar în intervalul Exercitarea 4.6 ( Vectorized sinus) Crearea vectorului ( sin (x 1), sin (x 2), . . . . sin (x 10)) cu X este un vector de 10 valori alese liniar în intervalul Exercitarea 4.6 ( Vectorized sinus) Crearea vectorului ( sin (x 1), sin (x 2), . . . . sin (x 10)) cu X este un vector de 10 valori alese liniar în intervalul Exercitarea 4.6 ( Vectorized sinus) Crearea vectorului ( sin (x 1), sin (x 2), . . . . sin (x 10)) cu X este un vector de 10 valori alese liniar în intervalul
[0, p].[0, p].
Exercitarea 4.7 ( Func•ia Vectorized) Calculati y = f (x) valori ale func•iei f de definit prin ecua•ia Exercitarea 4.7 ( Func•ia Vectorized) Calculati y = f (x) valori ale func•iei f de definit prin ecua•ia Exercitarea 4.7 ( Func•ia Vectorized) Calculati y = f (x) valori ale func•iei f de definit prin ecua•ia Exercitarea 4.7 ( Func•ia Vectorized) Calculati y = f (x) valori ale func•iei f de definit prin ecua•ia Exercitarea 4.7 ( Func•ia Vectorized) Calculati y = f (x) valori ale func•iei f de definit prin ecua•ia Exercitarea 4.7 ( Func•ia Vectorized) Calculati y = f (x) valori ale func•iei f de definit prin ecua•ia Exercitarea 4.7 ( Func•ia Vectorized) Calculati y = f (x) valori ale func•iei f de definit prin ecua•ia
f (x) = Buturuga 10 ( r / 10 x + 10 X) f (x) = Buturuga 10 ( r / 10 x + 10 X) f (x) = Buturuga 10 ( r / 10 x + 10 X) f (x) = Buturuga 10 ( r / 10 x + 10 X) f (x) = Buturuga 10 ( r / 10 x + 10 X) f (x) = Buturuga 10 ( r / 10 x + 10 X) f (x) = Buturuga 10 ( r / 10 x + 10 X) f (x) = Buturuga 10 ( r / 10 x + 10 X) (1)
cu r = 2.220.10 – 16 •i X un vector de 100 de valori linear ales în intervalul de [ – 16, 0]. cu r = 2.220.10 – 16 •i X un vector de 100 de valori linear ales în intervalul de [ – 16, 0]. cu r = 2.220.10 – 16 •i X un vector de 100 de valori linear ales în intervalul de [ – 16, 0]. cu r = 2.220.10 – 16 •i X un vector de 100 de valori linear ales în intervalul de [ – 16, 0]. cu r = 2.220.10 – 16 •i X un vector de 100 de valori linear ales în intervalul de [ – 16, 0]. cu r = 2.220.10 – 16 •i X un vector de 100 de valori linear ales în intervalul de [ – 16, 0]. cu r = 2.220.10 – 16 •i X un vector de 100 de valori linear ales în intervalul de [ – 16, 0]. cu r = 2.220.10 – 16 •i X un vector de 100 de valori linear ales în intervalul de [ – 16, 0]. cu r = 2.220.10 – 16 •i X un vector de 100 de valori linear ales în intervalul de [ – 16, 0]. cu r = 2.220.10 – 16 •i X un vector de 100 de valori linear ales în intervalul de [ – 16, 0].
5 Looping •i ramificarea
În această sec•iune, vom descrie modul de a face declara•ii condi•ionale, adică, prezentăm dacă afirma•ie. În această sec•iune, vom descrie modul de a face declara•ii condi•ionale, adică, prezentăm dacă afirma•ie. În această sec•iune, vom descrie modul de a face declara•ii condi•ionale, adică, prezentăm dacă afirma•ie.
Prezentăm Selecta•i declara•ie, care permite crearea unor selec•ii mai complexe. Va prezentam Scilab bucle, Prezentăm Selecta•i declara•ie, care permite crearea unor selec•ii mai complexe. Va prezentam Scilab bucle, Prezentăm Selecta•i declara•ie, care permite crearea unor selec•ii mai complexe. Va prezentam Scilab bucle,
care este, vom prezenta pentru •i in timp ce care este, vom prezenta pentru •i in timp ce care este, vom prezenta pentru •i in timp ce care este, vom prezenta pentru •i in timp ce
declara•ii. Am Fi prezent două instrumente principale Nally pentru a gestiona bucle, care este, pauză declara•ii. Am Fi prezent două instrumente principale Nally pentru a gestiona bucle, care este, pauză
•i continua declara•ii. •i continua declara•ii. •i continua declara•ii.
5.1 dacă afirma•ie 5.1 dacă afirma•ie 5.1 dacă afirma•ie
dacă Declara•ie permite de a efectua o declara•ie în cazul în care o condi•ie este satisfăcută ed. dacă Declara•ie permite de a efectua o declara•ie în cazul în care o condi•ie este satisfăcută ed. dacă Declara•ie permite de a efectua o declara•ie în cazul în care o condi•ie este satisfăcută ed.
dacă utilizează o variabilă boolean pentru a efectua alegerea: dacă boolean este adevărat, atunci declara•ia este executată. O dacă utilizează o variabilă boolean pentru a efectua alegerea: dacă boolean este adevărat, atunci declara•ia este executată. O
condi•ie este închisă atunci când Sfârșit cuvânt cheie este îndeplinită. În următorul script, vom afi•a •irul „Hello!“, În cazul în condi•ie este închisă atunci când Sfârșit cuvânt cheie este îndeplinită. În următorul script, vom afi•a •irul „Hello!“, În cazul în condi•ie este închisă atunci când Sfârșit cuvânt cheie este îndeplinită. În următorul script, vom afi•a •irul „Hello!“, În cazul în
care condi•ia% t, care este întotdeauna adevărat, este satisfăcută ed. care condi•ia% t, care este întotdeauna adevărat, este satisfăcută ed. care condi•ia% t, care este întotdeauna adevărat, este satisfăcută ed.
dacă (% t) atunci
disp ( "Bună ziua!") final
Script-ul anterior produce:
Buna !
În cazul în care condi•ia nu este satisfăcută Ed, altfel Declara•ie permite de a efectua o altă declara•ie, la În cazul în care condi•ia nu este satisfăcută Ed, altfel Declara•ie permite de a efectua o altă declara•ie, la În cazul în care condi•ia nu este satisfăcută Ed, altfel Declara•ie permite de a efectua o altă declara•ie, la
fel ca în următorul script.
if (% f) atunci
disp ( "Bună ziua!") altceva
disp ( "La revedere!") final
49

Script-ul anterior produce:
La revedere !
În scopul de a ob•ine un boolean, orice operator de compara•ie poate fi folosit, de exemplu, „==“, „>“, etc … sau
orice func•ie care returnează un boolean. În următoarea sesiune, vom folosi „==“ operator pentru a afi•a mesajul
„Bună ziua!“.
i = 2
if (i == 2), atunci
disp ( "Bună ziua!") altceva
disp ( "La revedere!") final
Este important să nu se utilizeze „=“ operatorul în stare, adică nu trebuie să utilizeze declara•ia dacă (i = Este important să nu se utilizeze „=“ operatorul în stare, adică nu trebuie să utilizeze declara•ia dacă (i =
2), atunci. Este o eroare, deoarece „=“ operatorul permite să seta•i o variabilă: este di ff erent de la operatorul 2), atunci. Este o eroare, deoarece „=“ operatorul permite să seta•i o variabilă: este di ff erent de la operatorul
de comparare „==“. În cazul unei erori, Scilab ne avertizează că ceva gre•it sa întâmplat.
–> I = 2 i =
2.
–>dacă (i = 2), atunci
Aten•ie: utilizarea învechită a „=“ în loc de „==“.
!
–> disp ( "Bună ziua!")
Buna !
–> altceva
–> disp ( "La revedere!")
–> end
Atunci când avem de a combina mai multe condi•ii, de elseif declara•ie este de ajutor. În următorul script, Atunci când avem de a combina mai multe condi•ii, de elseif declara•ie este de ajutor. În următorul script, Atunci când avem de a combina mai multe condi•ii, de elseif declara•ie este de ajutor. În următorul script,
combinam mai multe elseif declara•ii, în scopul de a gestiona diferite valori ale întreg i. combinam mai multe elseif declara•ii, în scopul de a gestiona diferite valori ale întreg i. combinam mai multe elseif declara•ii, în scopul de a gestiona diferite valori ale întreg i. combinam mai multe elseif declara•ii, în scopul de a gestiona diferite valori ale întreg i.
i = 2
if (i == 1), atunci
disp ( "Bună ziua!") elseif (i == 2),
atunci
disp ( "La revedere!") elseif (i == 3),
atunci
disp ( "Tchao!") altceva
disp ( "La revedere!") final
Putem folosi cât mai multe elseif declara•ii care avem nevoie, iar acest lucru permite crearea de sucursale Putem folosi cât mai multe elseif declara•ii care avem nevoie, iar acest lucru permite crearea de sucursale Putem folosi cât mai multe elseif declara•ii care avem nevoie, iar acest lucru permite crearea de sucursale
complicate după cum este necesar. Dar dacă există multe elseif declara•iile necesare, cele mai multe ori, care implică complicate după cum este necesar. Dar dacă există multe elseif declara•iile necesare, cele mai multe ori, care implică complicate după cum este necesar. Dar dacă există multe elseif declara•iile necesare, cele mai multe ori, care implică
faptul că o Selecta•i declara•ie ar trebui să fie utilizat în locul. faptul că o Selecta•i declara•ie ar trebui să fie utilizat în locul. faptul că o Selecta•i declara•ie ar trebui să fie utilizat în locul.
5.2 Selecta•i afirma•ie 5.2 Selecta•i afirma•ie 5.2 Selecta•i afirma•ie
Selecta•i declara•ie permite combinarea mai multor sucursale într-un mod clar •i simplu. În func•ie de Selecta•i declara•ie permite combinarea mai multor sucursale într-un mod clar •i simplu. În func•ie de Selecta•i declara•ie permite combinarea mai multor sucursale într-un mod clar •i simplu. În func•ie de
valoarea unei variabile, ea permite să efectueze declara•ia
50

care corespunde caz cuvinte cheie. Pot exista mai multe ramuri după cum este necesar. care corespunde caz cuvinte cheie. Pot exista mai multe ramuri după cum este necesar. care corespunde caz cuvinte cheie. Pot exista mai multe ramuri după cum este necesar.
În următorul script, vrem să afi•eze un •ir de caractere care corespunde întreg dat i. În următorul script, vrem să afi•eze un •ir de caractere care corespunde întreg dat i.
i = 2 selecta i
caz 1
disp ( "One") caz 2
disp ( "Two") caz 3
disp ( "Trei") altceva
disp ( "Altele") end
Script-ul anterior imprimă „Doi“, cum era de a•teptat. altfel ramură este utilizat în cazul în care toate anterior caz Script-ul anterior imprimă „Doi“, cum era de a•teptat. altfel ramură este utilizat în cazul în care toate anterior caz Script-ul anterior imprimă „Doi“, cum era de a•teptat. altfel ramură este utilizat în cazul în care toate anterior caz Script-ul anterior imprimă „Doi“, cum era de a•teptat. altfel ramură este utilizat în cazul în care toate anterior caz
condi•ii sunt false. altfel declara•ie este op•ională, dar este considerată o bună practică de programare. condi•ii sunt false. altfel declara•ie este op•ională, dar este considerată o bună practică de programare. condi•ii sunt false. altfel declara•ie este op•ională, dar este considerată o bună practică de programare.
Într-adevăr, chiar dacă programatorul crede că acest caz asociat nu se poate întâmpla, nu pot exista în
continuare o eroare în logica, astfel încât toate condi•iile sunt false în timp ce ei nu ar trebui. În acest caz, în cazul
în care altfel declara•ie nu întrerupe executarea, declara•iile rămase în script-ul va fi executat. Acest lucru poate în care altfel declara•ie nu întrerupe executarea, declara•iile rămase în script-ul va fi executat. Acest lucru poate în care altfel declara•ie nu întrerupe executarea, declara•iile rămase în script-ul va fi executat. Acest lucru poate
duce la rezultate nea•teptate. În cel mai rău scenariu, scenariul încă mai func•ionează dar cu rezultate duce la rezultate nea•teptate. În cel mai rău scenariu, scenariul încă mai func•ionează dar cu rezultate duce la rezultate nea•teptate. În cel mai rău scenariu, scenariul încă mai func•ionează dar cu rezultate
inconsistente. Debugging astfel de scripturi este extrem de di ffi cult •i poate conduce la o pierdere masivă de
timp.
De aceea altfel declara•ie ar trebui să fie inclusă în majoritatea Selecta•i secven•e. Pentru a gestiona aceste De aceea altfel declara•ie ar trebui să fie inclusă în majoritatea Selecta•i secven•e. Pentru a gestiona aceste De aceea altfel declara•ie ar trebui să fie inclusă în majoritatea Selecta•i secven•e. Pentru a gestiona aceste De aceea altfel declara•ie ar trebui să fie inclusă în majoritatea Selecta•i secven•e. Pentru a gestiona aceste De aceea altfel declara•ie ar trebui să fie inclusă în majoritatea Selecta•i secven•e. Pentru a gestiona aceste
evenimente nea•teptate, vom combina de multe ori un Selecta•i declara•ie cu eroare funcție. evenimente nea•teptate, vom combina de multe ori un Selecta•i declara•ie cu eroare funcție. evenimente nea•teptate, vom combina de multe ori un Selecta•i declara•ie cu eroare funcție. evenimente nea•teptate, vom combina de multe ori un Selecta•i declara•ie cu eroare funcție. evenimente nea•teptate, vom combina de multe ori un Selecta•i declara•ie cu eroare funcție.
eroare Func•ia generează o eroare asociată cu mesajul dat. Atunci când este generată o eroare, eroare Func•ia generează o eroare asociată cu mesajul dat. Atunci când este generată o eroare, eroare Func•ia generează o eroare asociată cu mesajul dat. Atunci când este generată o eroare,
executarea este întreruptă •i interpretul închide toate func•iile. Prin urmare, stiva de apel este •tearsă •i
script-ul se opre•te.
În următorul script, vom afi•a un mesaj în func•ie de valoarea variabilei pozitive i. În cazul în care variabila În următorul script, vom afi•a un mesaj în func•ie de valoarea variabilei pozitive i. În cazul în care variabila În următorul script, vom afi•a un mesaj în func•ie de valoarea variabilei pozitive i. În cazul în care variabila
este negativ, vom genera o eroare.
i = -5; selecta•i
I caz 1
disp ( "One") caz 2
disp ( "Two") caz 3
disp ( "Trei") altceva
eroare ( „Valoare nea•teptată a parametrului i“) de capăt
Script-ul anterior produce următoarea ie•ire.
–>i = -5;
–>selecta•i I
–>cazul 1
–> disp ( "One")
–>cazul 2
–> disp ( "Two")
51

–>cazul 3
–> disp ( "Trei")
–> altceva
–> eroare ( „Valoare nea•teptată a i parametrul“) Valoare nea•teptată a parametrului i
În practică, atunci când vom vedea un Selecta•i declara•ie fără corespunzător altceva, În practică, atunci când vom vedea un Selecta•i declara•ie fără corespunzător altceva, În practică, atunci când vom vedea un Selecta•i declara•ie fără corespunzător altceva, În practică, atunci când vom vedea un Selecta•i declara•ie fără corespunzător altceva,
ne putem întreba dacă dezvoltatorul a scris acest lucru inten•ionat sau bazat pe presupunerea că niciodată nu se va ne putem întreba dacă dezvoltatorul a scris acest lucru inten•ionat sau bazat pe presupunerea că niciodată nu se va
întâmpla. De cele mai multe ori, această ipoteză poate fi discutată. întâmpla. De cele mai multe ori, această ipoteză poate fi discutată.
5.3 pentru afirma•ie 5.3 pentru afirma•ie 5.3 pentru afirma•ie
pentru Declara•ie permite de a efectua bucle, •i anume permite să efectueze o anumită ac•iune de mai multe pentru Declara•ie permite de a efectua bucle, •i anume permite să efectueze o anumită ac•iune de mai multe pentru Declara•ie permite de a efectua bucle, •i anume permite să efectueze o anumită ac•iune de mai multe
ori. De cele mai multe ori, o buclă se realizează peste valori întregi, care merg de la o pornire la o valoare a
indicelui de sfâr•it. Vom vedea, la sfâr•itul acestei sec•iuni, că pentru afirma•ie este, de fapt, mult mai general, indicelui de sfâr•it. Vom vedea, la sfâr•itul acestei sec•iuni, că pentru afirma•ie este, de fapt, mult mai general, indicelui de sfâr•it. Vom vedea, la sfâr•itul acestei sec•iuni, că pentru afirma•ie este, de fapt, mult mai general,
deoarece permite bucla prin valorile unei matrice.
În următorul script Scilab, vom afi•a valoarea I, la 1 la 5. În următorul script Scilab, vom afi•a valoarea I, la 1 la 5. În următorul script Scilab, vom afi•a valoarea I, la 1 la 5.
pentru i = 1: 5
disp (i)
sfâr•itul
Script-ul anterior produce următoarea ie•ire.
1.
2.
3.
4.
5.
In exemplul anterior, bucla este realizată printr-o matrice de numere în virgulă fl care con•in valori întregi
flotante. Intr-adevar, am folosit două puncte „:“ operatorul pentru a produce vectorul valorilor indicelui de [ 1 2 flotante. Intr-adevar, am folosit două puncte „:“ operatorul pentru a produce vectorul valorilor indicelui de [ 1 2
3 4 5]. Următoarea sesiune arată că declara•ia 1: 5 produce toate valorile întregi necesare într-un vector rând. 3 4 5]. Următoarea sesiune arată că declara•ia 1: 5 produce toate valorile întregi necesare într-un vector rând. 3 4 5]. Următoarea sesiune arată că declara•ia 1: 5 produce toate valorile întregi necesare într-un vector rând. 3 4 5]. Următoarea sesiune arată că declara•ia 1: 5 produce toate valorile întregi necesare într-un vector rând.
–>i = 1: 5 =
1. 2. 3. 4. 5.
Subliniem că, în bucla anterioară, matricea 1: 5 este o matrice de camere duble. Prin urmare, variabila eu este, de Subliniem că, în bucla anterioară, matricea 1: 5 este o matrice de camere duble. Prin urmare, variabila eu este, de Subliniem că, în bucla anterioară, matricea 1: 5 este o matrice de camere duble. Prin urmare, variabila eu este, de Subliniem că, în bucla anterioară, matricea 1: 5 este o matrice de camere duble. Prin urmare, variabila eu este, de Subliniem că, în bucla anterioară, matricea 1: 5 este o matrice de camere duble. Prin urmare, variabila eu este, de
asemenea, un dublu. Acest punct va fi analizat mai târziu în această sec•iune, atunci când vom lua în considerare forma
generală a pentru bucle. generală a pentru bucle. generală a pentru bucle.
Putem folosi o formă mai completă a operatorului de colon, în scopul de a afi•a numerele intregi impare de la
1 la 5. Pentru a face acest lucru, am stabilit etapa a operatorului de colon la 2. Aceasta se realizează prin
următorul script Scilab.
pentru i = 1: 2: 5
disp (i)
sfâr•itul
Script-ul anterior produce următoarea ie•ire.
1.
3.
5.
52

Operatorul de colon poate fi utilizat pentru a efectua înapoi bucle. În următorul script, vom afi•a numerele Operatorul de colon poate fi utilizat pentru a efectua înapoi bucle. În următorul script, vom afi•a numerele Operatorul de colon poate fi utilizat pentru a efectua înapoi bucle. În următorul script, vom afi•a numerele
5 – 1.
pentru i = 5: – 1: 1
disp (i)
sfâr•itul
Script-ul anterior produce următoarea ie•ire.
5.
4.
3.
2.
1.
Într-adevăr, declara•ia 5: -1: 1 produce toate numerele întregi necesare. Într-adevăr, declara•ia 5: -1: 1 produce toate numerele întregi necesare. Într-adevăr, declara•ia 5: -1: 1 produce toate numerele întregi necesare.
–>i = 5: -1: 1 =
5. 4. 3. 2. 1.
pentru declara•ie este mult mai general decât ceea ce am folosit anterior în această sec•iune. Într-adevăr, pentru declara•ie este mult mai general decât ceea ce am folosit anterior în această sec•iune. Într-adevăr, pentru declara•ie este mult mai general decât ceea ce am folosit anterior în această sec•iune. Într-adevăr,
aceasta permite pentru a naviga prin valorile multor tipuri de date, inclusiv matrici rând •i liste. Când vom
efectua o pentru buclă peste elementele unei matrice, această matrice poate fi o matrice de duble, siruri, efectua o pentru buclă peste elementele unei matrice, această matrice poate fi o matrice de duble, siruri, efectua o pentru buclă peste elementele unei matrice, această matrice poate fi o matrice de duble, siruri,
numere întregi sau polinoame.
În exemplul următor, vom efectua o pentru bucla peste valorile duble ale unei matrice care con•ine rând În exemplul următor, vom efectua o pentru bucla peste valorile duble ale unei matrice care con•ine rând În exemplul următor, vom efectua o pentru bucla peste valorile duble ale unei matrice care con•ine rând
(1,5, e, n).(1,5, e, n).
v = [1,5 exp (1)% pi]; pentru x = v
disp (x) capăt
Script-ul anterior produce următoarea ie•ire.
1.5
2.7182818
3.1415927
Subliniem acum un punct important despre pentru afirma•ie. Ori de câte ori folosim un pentru bucla, Subliniem acum un punct important despre pentru afirma•ie. Ori de câte ori folosim un pentru bucla, Subliniem acum un punct important despre pentru afirma•ie. Ori de câte ori folosim un pentru bucla, Subliniem acum un punct important despre pentru afirma•ie. Ori de câte ori folosim un pentru bucla, Subliniem acum un punct important despre pentru afirma•ie. Ori de câte ori folosim un pentru bucla,
trebuie să ne întrebăm dacă o declara•ie vectorizat ar putea efectua acela•i calcul. Nu poate fi un factor de
10-100 de performan•ă între declara•iile vectorized •i pentru buclă. Vectorizare permite de a efectua calcule 10-100 de performan•ă între declara•iile vectorized •i pentru buclă. Vectorizare permite de a efectua calcule 10-100 de performan•ă între declara•iile vectorized •i pentru buclă. Vectorizare permite de a efectua calcule
rapide, chiar •i într-un mediu interpretat ca Scilab. Acesta este motivul pentru care pentru bucla ar trebui să fie rapide, chiar •i într-un mediu interpretat ca Scilab. Acesta este motivul pentru care pentru bucla ar trebui să fie rapide, chiar •i într-un mediu interpretat ca Scilab. Acesta este motivul pentru care pentru bucla ar trebui să fie
utilizat numai atunci când nu există nici o altă cale de a efectua acela•i calcul cu func•ii vectorized.
5.4 in timp ce afirma•ie 5.4 in timp ce afirma•ie 5.4 in timp ce afirma•ie
in timp ce declara•ie permite să efectueze o buclă în timp ce o expresie boolean este adevărată. La începutul in timp ce declara•ie permite să efectueze o buclă în timp ce o expresie boolean este adevărată. La începutul in timp ce declara•ie permite să efectueze o buclă în timp ce o expresie boolean este adevărată. La începutul
buclei, în cazul în care expresia este adevărată, declara•iile din corpul buclei sunt executate. Atunci când expresia
devine falsă (un eveniment care trebuie să aibă loc la un anumit moment), bucla este terminată.
În următorul script, vom calcula suma numerelor eu la 1 la 10 cu un in timp ce afirma•ie. În următorul script, vom calcula suma numerelor eu la 1 la 10 cu un in timp ce afirma•ie. În următorul script, vom calcula suma numerelor eu la 1 la 10 cu un in timp ce afirma•ie. În următorul script, vom calcula suma numerelor eu la 1 la 10 cu un in timp ce afirma•ie. În următorul script, vom calcula suma numerelor eu la 1 la 10 cu un in timp ce afirma•ie.
53

s = 0 i = 1
în timp ce (i <= 10)
s = s + ii = i + 1
final
La sfâr•itul algoritmului, valorile variabilelor eu •i s sunt: La sfâr•itul algoritmului, valorile variabilelor eu •i s sunt: La sfâr•itul algoritmului, valorile variabilelor eu •i s sunt: La sfâr•itul algoritmului, valorile variabilelor eu •i s sunt: La sfâr•itul algoritmului, valorile variabilelor eu •i s sunt:
s =
55.
i =
11.
Ar trebui să fie clar că exemplul anterior este doar un exemplu pentru in timp ce Ar trebui să fie clar că exemplul anterior este doar un exemplu pentru in timp ce
afirma•ie. Dacă ne-am dorit cu adevărat să calculeze suma numerelor 1 la 10, ar trebui să folosim mai degrabă sumă afirma•ie. Dacă ne-am dorit cu adevărat să calculeze suma numerelor 1 la 10, ar trebui să folosim mai degrabă sumă
func•ie, la fel ca în următoarea sesiune.
–>sum (1:10) ans =
55.
in timp ce declara•ie are aceea•i problemă de performan•ă ca •i pentru afirma•ie. Acesta este motivul pentru care declara•iile in timp ce declara•ie are aceea•i problemă de performan•ă ca •i pentru afirma•ie. Acesta este motivul pentru care declara•iile in timp ce declara•ie are aceea•i problemă de performan•ă ca •i pentru afirma•ie. Acesta este motivul pentru care declara•iile in timp ce declara•ie are aceea•i problemă de performan•ă ca •i pentru afirma•ie. Acesta este motivul pentru care declara•iile in timp ce declara•ie are aceea•i problemă de performan•ă ca •i pentru afirma•ie. Acesta este motivul pentru care declara•iile
vectorized ar trebui să fie luate în considerare fi prima, înainte de a încerca să proiecteze un algoritm bazat pe un in timp ce buclă. vectorized ar trebui să fie luate în considerare fi prima, înainte de a încerca să proiecteze un algoritm bazat pe un in timp ce buclă. vectorized ar trebui să fie luate în considerare fi prima, înainte de a încerca să proiecteze un algoritm bazat pe un in timp ce buclă.
5.5 pauză •i continua declarații 5.5 pauză •i continua declarații 5.5 pauză •i continua declarații 5.5 pauză •i continua declarații 5.5 pauză •i continua declarații
pauză declara•ie permite să-•i întrerupă o buclă. De obicei, vom folosi această declara•ie în bucle în cazul în care, odată ce o pauză declara•ie permite să-•i întrerupă o buclă. De obicei, vom folosi această declara•ie în bucle în cazul în care, odată ce o pauză declara•ie permite să-•i întrerupă o buclă. De obicei, vom folosi această declara•ie în bucle în cazul în care, odată ce o
anumită condi•ie este satisfăcută fi cată, buclele nu ar trebui să fie continuată.
În exemplul următor, vom folosi pauză declara•ie, în scopul de a calcula suma numere întregi de la 1 la În exemplul următor, vom folosi pauză declara•ie, în scopul de a calcula suma numere întregi de la 1 la În exemplul următor, vom folosi pauză declara•ie, în scopul de a calcula suma numere întregi de la 1 la
10. Când variabila eu este mai mare de 10, bucla este întreruptă. 10. Când variabila eu este mai mare de 10, bucla este întreruptă. 10. Când variabila eu este mai mare de 10, bucla este întreruptă.
s = 0 i = 1
în timp ce (% t)
dacă (i> 10) atunci
pauză de
capăt
s = s + ii = i + 1
final
La sfâr•itul algoritmului, valorile variabilelor eu •i s sunt: La sfâr•itul algoritmului, valorile variabilelor eu •i s sunt: La sfâr•itul algoritmului, valorile variabilelor eu •i s sunt: La sfâr•itul algoritmului, valorile variabilelor eu •i s sunt: La sfâr•itul algoritmului, valorile variabilelor eu •i s sunt:
s =
55.
i =
11.
continua declara•ie permite să meargă la bucla următoare, astfel încât situa•iile în corpul buclei nu sunt continua declara•ie permite să meargă la bucla următoare, astfel încât situa•iile în corpul buclei nu sunt continua declara•ie permite să meargă la bucla următoare, astfel încât situa•iile în corpul buclei nu sunt
executate de data asta. Cand continua declara•ie este executată, Scilab sare peste celelalte declara•ii •i executate de data asta. Cand continua declara•ie este executată, Scilab sare peste celelalte declara•ii •i executate de data asta. Cand continua declara•ie este executată, Scilab sare peste celelalte declara•ii •i
merge direct la in timp ce sau pentru merge direct la in timp ce sau pentru merge direct la in timp ce sau pentru merge direct la in timp ce sau pentru
declara•ie •i evaluează bucla următoare.
54

În exemplul următor, vom calcula suma s = 1 + 3 + 5 + 7 + 9 = 25. În exemplul următor, vom calcula suma s = 1 + 3 + 5 + 7 + 9 = 25. În exemplul următor, vom calcula suma s = 1 + 3 + 5 + 7 + 9 = 25.
Formularul (i, 2) Func•ia returnează 0 dacă numărul eu este chiar. În această situa•ie, script-ul merge mai departe la bucla Formularul (i, 2) Func•ia returnează 0 dacă numărul eu este chiar. În această situa•ie, script-ul merge mai departe la bucla Formularul (i, 2) Func•ia returnează 0 dacă numărul eu este chiar. În această situa•ie, script-ul merge mai departe la bucla Formularul (i, 2) Func•ia returnează 0 dacă numărul eu este chiar. În această situa•ie, script-ul merge mai departe la bucla
următoare.
s = 0 i = 0
în timp ce (i <10)
i = i + 1
if (modulo (i, 2) == 0), atunci
continua final
s = s + i capăt
În cazul în care script-ul precedent este executat, valorile fi nal ale variabilelor eu •i s sunt: În cazul în care script-ul precedent este executat, valorile fi nal ale variabilelor eu •i s sunt: În cazul în care script-ul precedent este executat, valorile fi nal ale variabilelor eu •i s sunt: În cazul în care script-ul precedent este executat, valorile fi nal ale variabilelor eu •i s sunt: În cazul în care script-ul precedent este executat, valorile fi nal ale variabilelor eu •i s sunt:
–> Ss
=
25.
–> Ii =
10.
Ca un exemplu de calcul vectorizat, algoritmul anterior poate fi realizată într-un singur apel de func•ie.
Într-adevăr, următorul script utilizează sumă func•ie, combinate cu operatorul de colon „:“ •i produce acela•i Într-adevăr, următorul script utilizează sumă func•ie, combinate cu operatorul de colon „:“ •i produce acela•i Într-adevăr, următorul script utilizează sumă func•ie, combinate cu operatorul de colon „:“ •i produce acela•i
rezultat.
s = suma (1: 2: 10);
Script-ul anterior are două avantaje principale în din in timp ce- algoritm bazat. Script-ul anterior are două avantaje principale în din in timp ce- algoritm bazat. Script-ul anterior are două avantaje principale în din in timp ce- algoritm bazat.
1. Calculul folose•te un limbaj de nivel superior, care este mai u•or de în•eles pentru fiin•ele umane.
2. Cu matrici mari, sumă- pe bază de calcul va fi mult mai rapid decât 2. Cu matrici mari, sumă- pe bază de calcul va fi mult mai rapid decât 2. Cu matrici mari, sumă- pe bază de calcul va fi mult mai rapid decât
in timp ce- algoritm bazat. in timp ce- algoritm bazat.
Acesta este motivul pentru care o analiză atentă trebuie făcută înainte de a dezvolta un algoritm bazat pe un in timp ce buclă. Acesta este motivul pentru care o analiză atentă trebuie făcută înainte de a dezvolta un algoritm bazat pe un in timp ce buclă. Acesta este motivul pentru care o analiză atentă trebuie făcută înainte de a dezvolta un algoritm bazat pe un in timp ce buclă.
6 Func•ii
În această sec•iune, vom prezenta func•ii Scilab. Vom analiza modul de a definim o nouă func•ie •i metoda pentru ao
încărca în Scilab. Prezentăm cum să crea•i •i să încărca•i un bibliotecă, care este o colec•ie de func•ii. De asemenea, încărca în Scilab. Prezentăm cum să crea•i •i să încărca•i un bibliotecă, care este o colec•ie de func•ii. De asemenea, încărca în Scilab. Prezentăm cum să crea•i •i să încărca•i un bibliotecă, care este o colec•ie de func•ii. De asemenea,
vom prezenta modul de a gestiona de intrare •i ie•ire argumente. În cele din urmă, vom prezenta modul în care să
depana o func•ie folosind pauză depana o func•ie folosind pauză
afirma•ie.
6.1 Prezentare generală
Colectarea diverse etape într-o func•ie reutilizabil este una dintre cele mai comune sarcini ale unui dezvoltator Scilab.
Cea mai simpla secventa de asteptare a unei functii este urmatoarea:
outvar = myFunction (invar)
55

în cazul în care lista de mai jos prezintă diferitele variabile utilizate în sintaxa:
•myFunction este numele func•iei, myFunction este numele func•iei,
•invar este numele argumentelor de intrare, invar este numele argumentelor de intrare,
•outvar este numele argumentelor de ie•ire. outvar este numele argumentelor de ie•ire.
Valorile argumentelor de intrare nu sunt modi fi cată prin func•ia, în timp ce valorile argumentelor de ie•ire
sunt de fapt Modi fi cată de func•ia.
Avem, de fapt, sa întâlnit deja mai multe func•ii în acest document. fără func•ie, în y = sin (x) declara•ie, Avem, de fapt, sa întâlnit deja mai multe func•ii în acest document. fără func•ie, în y = sin (x) declara•ie, Avem, de fapt, sa întâlnit deja mai multe func•ii în acest document. fără func•ie, în y = sin (x) declara•ie, Avem, de fapt, sa întâlnit deja mai multe func•ii în acest document. fără func•ie, în y = sin (x) declara•ie, Avem, de fapt, sa întâlnit deja mai multe func•ii în acest document. fără func•ie, în y = sin (x) declara•ie,
ia argumentul de intrare X •i returnează rezultatul în argumentul de ie•ire •i. În vocabularul Scilab, argumentele ia argumentul de intrare X •i returnează rezultatul în argumentul de ie•ire •i. În vocabularul Scilab, argumentele ia argumentul de intrare X •i returnează rezultatul în argumentul de ie•ire •i. În vocabularul Scilab, argumentele ia argumentul de intrare X •i returnează rezultatul în argumentul de ie•ire •i. În vocabularul Scilab, argumentele ia argumentul de intrare X •i returnează rezultatul în argumentul de ie•ire •i. În vocabularul Scilab, argumentele
de intrare sunt numite partea dreaptă iar argumentele de ie•ire sunt numite partea stanga. de intrare sunt numite partea dreaptă iar argumentele de ie•ire sunt numite partea stanga. de intrare sunt numite partea dreaptă iar argumentele de ie•ire sunt numite partea stanga. de intrare sunt numite partea dreaptă iar argumentele de ie•ire sunt numite partea stanga.
Func•iile pot avea un număr arbitrar de intrare •i de ie•ire argumente, astfel încât sintaxa completă pentru
o func•ie care are un număr fix de argumente este fi următoarele:
[o1, …, on] = myfunction ( i1 , …, in )
The input and output arguments are separated by commas ”,”. Notice that the input arguments are
surrounded by opening and closing parentheses, while the output arguments are surrounded by opening and
closing square brackets. closing square brackets. closing square brackets.
In the following Scilab session, we show how to compute the LU decomposition of the Hilbert matrix. The In the following Scilab session, we show how to compute the LU decomposition of the Hilbert matrix. The In the following Scilab session, we show how to compute the LU decomposition of the Hilbert matrix. The
following session shows how to create a matrix with the
testmatrix function, which takes two input arguments, and returns one matrix. Then, we use the lu function, testmatrix function, which takes two input arguments, and returns one matrix. Then, we use the lu function, testmatrix function, which takes two input arguments, and returns one matrix. Then, we use the lu function, testmatrix function, which takes two input arguments, and returns one matrix. Then, we use the lu function,
which takes one input argument and returns two or three arguments depending on the provided output
variables. If the third argument
P is provided, the permutation matrix is returned.P is provided, the permutation matrix is returned.
–>A = testmatrix("hilb" ,2) A =
4. – 6.
-6. 12.
–>[L,U] = lu(A) U =
-6. 12.
0. 2.
L =
-0.6666667 1.
1. 0.
–>[L,U,P] = lu(A) P =
0. 1.
1. 0.
U =
-6. 12.
0. 2.
L =
1. 0.
-0.6666667 1.
Notice that the behavior of the lu function actually changes when three output arguments are provided: Notice that the behavior of the lu function actually changes when three output arguments are provided: Notice that the behavior of the lu function actually changes when three output arguments are provided:
the two rows of the matrix L have been swapped. More the two rows of the matrix L have been swapped. More the two rows of the matrix L have been swapped. More
56

function opens a function definition
endfunction closes a function definition
argn number of input/output arguments in a function call
varargin variable numbers of arguments in an input argument list
varargout variable numbers of arguments in an output argument list
fun2string generates ASCII definition of a scilab function
get_function_path get source file path of a library function get_function_path get source file path of a library function
getd getting all functions defined in a directory
head_comments display Scilab function header comments
listfunctions properties of all functions in the workspace
macrovar variables of function
Figure 29: Scilab functions to manage functions.
specifically, when two output arguments are provided, the decomposition A = LU is provided (the statement A-L*U specifically, when two output arguments are provided, the decomposition A = LU is provided (the statement A-L*U specifically, when two output arguments are provided, the decomposition A = LU is provided (the statement A-L*U specifically, when two output arguments are provided, the decomposition A = LU is provided (the statement A-L*U
allows to check this). When three output arguments are provided, permutations are performed so that the
decomposition PA = LU is provided (the statement P*A-L*U can be used to check this). In fact, when two decomposition PA = LU is provided (the statement P*A-L*U can be used to check this). In fact, when two decomposition PA = LU is provided (the statement P*A-L*U can be used to check this). In fact, when two decomposition PA = LU is provided (the statement P*A-L*U can be used to check this). In fact, when two decomposition PA = LU is provided (the statement P*A-L*U can be used to check this). In fact, when two
output arguments are provided, the permutations are applied on the L matrix. This means that the lu function output arguments are provided, the permutations are applied on the L matrix. This means that the lu function output arguments are provided, the permutations are applied on the L matrix. This means that the lu function output arguments are provided, the permutations are applied on the L matrix. This means that the lu function output arguments are provided, the permutations are applied on the L matrix. This means that the lu function
knows how many input and output arguments are provided to it, and changes its algorithm accordingly. We
will not present in this document how to provide this feature, i.e. a variable number of input or output
arguments. But we must keep in mind that this is possible in the Scilab language.
The commands provided by Scilab to manage functions are presented in figure 29 . The commands provided by Scilab to manage functions are presented in figure 29 . The commands provided by Scilab to manage functions are presented in figure 29 .
In the next sections, we will present some of the most commonly used commands.
6.2 Defining a function
To define a new function, we use the function and endfunction Scilab keywords. In the following example, we To define a new function, we use the function and endfunction Scilab keywords. In the following example, we To define a new function, we use the function and endfunction Scilab keywords. In the following example, we To define a new function, we use the function and endfunction Scilab keywords. In the following example, we To define a new function, we use the function and endfunction Scilab keywords. In the following example, we
define the function myfunction, which takes the input argument x, mutiplies it by 2, and returns the value in the define the function myfunction, which takes the input argument x, mutiplies it by 2, and returns the value in the define the function myfunction, which takes the input argument x, mutiplies it by 2, and returns the value in the define the function myfunction, which takes the input argument x, mutiplies it by 2, and returns the value in the define the function myfunction, which takes the input argument x, mutiplies it by 2, and returns the value in the
output argument y. output argument y.
function y = myfunction ( x )
y = 2 * x
endfunction
The statement function y = myfunction ( x ) is the header of the function while the body of the function is The statement function y = myfunction ( x ) is the header of the function while the body of the function is The statement function y = myfunction ( x ) is the header of the function while the body of the function is The statement function y = myfunction ( x ) is the header of the function while the body of the function is The statement function y = myfunction ( x ) is the header of the function while the body of the function is The statement function y = myfunction ( x ) is the header of the function while the body of the function is The statement function y = myfunction ( x ) is the header of the function while the body of the function is
made of the statement y = 2 * x. The body of a function may contain one, two or more statements. made of the statement y = 2 * x. The body of a function may contain one, two or more statements. made of the statement y = 2 * x. The body of a function may contain one, two or more statements.
There are at least three possibilities to define the previous function in Scilab.
•The first solution is to type the script directly into the console in an interactive mode. Notice that, once
the ” function y = myfunction ( x ) ” statement has been written and the enter key is typed in, Scilab the ” function y = myfunction ( x ) ” statement has been written and the enter key is typed in, Scilab the ” function y = myfunction ( x ) ” statement has been written and the enter key is typed in, Scilab
creates a new line in the console, waiting for the body of the function. When the ” endfunction ” creates a new line in the console, waiting for the body of the function. When the ” endfunction ” creates a new line in the console, waiting for the body of the function. When the ” endfunction ”
statement is typed in the console, Scilab returns back to its normal edition mode.
57

•Another solution is available when the source code of the function is provided in a file. This is the most
common case, since functions are generally quite long and complicated. We can simply copy and
paste the function definition into the console. When the function definition is short (typically, a dozen
lines of source code), this way is very convenient. With the editor, this is very easy, thanks to the Load lines of source code), this way is very convenient. With the editor, this is very easy, thanks to the Load
into Scilab feature. into Scilab feature.
•We can also use the exec function. Let us consider a Windows system where the previous function is written in We can also use the exec function. Let us consider a Windows system where the previous function is written in We can also use the exec function. Let us consider a Windows system where the previous function is written in
the file ” C:\myscripts\examples-functions.sce ”. The following session gives an example of the use of exec to the file ” C:\myscripts\examples-functions.sce ”. The following session gives an example of the use of exec to the file ” C:\myscripts\examples-functions.sce ”. The following session gives an example of the use of exec to the file ” C:\myscripts\examples-functions.sce ”. The following session gives an example of the use of exec to the file ” C:\myscripts\examples-functions.sce ”. The following session gives an example of the use of exec to
load the previous function.
–>exec("C:\ myscripts\examples -functions.sce")
–>function y = myfunction ( x )
–> y = 2 * x
–>endfunction
The exec function executes the content of the file as if it were written interactively in the console and The exec function executes the content of the file as if it were written interactively in the console and The exec function executes the content of the file as if it were written interactively in the console and
displays the various Scilab statements, line after line. The file may contain a lot of source code so that
the output may be very long and useless. In these situations, we add the semicolon caracter ”;” at the
end of the line. This is what is performed by the Execute file into Scilab feature of the editor. end of the line. This is what is performed by the Execute file into Scilab feature of the editor. end of the line. This is what is performed by the Execute file into Scilab feature of the editor.
–>exec("C:\ myscripts\examples -functions.sce" );
Once a function is defined, it can be used as if it was any other Scilab function.
–>exec("C:\ myscripts\examples -functions.sce");
–>y = myfunction ( 3 ) y =
6.
Notice that the previous function sets the value of the output argument y, with the statement y=2*x. This is Notice that the previous function sets the value of the output argument y, with the statement y=2*x. This is Notice that the previous function sets the value of the output argument y, with the statement y=2*x. This is Notice that the previous function sets the value of the output argument y, with the statement y=2*x. This is Notice that the previous function sets the value of the output argument y, with the statement y=2*x. This is
mandatory. In order to see it, we define in the following script a function which sets the variable z, but not the mandatory. In order to see it, we define in the following script a function which sets the variable z, but not the mandatory. In order to see it, we define in the following script a function which sets the variable z, but not the
output argument y. output argument y.
function y = myfunction ( x )
z = 2 * x
endfunction
In the following session, we try to use our function with the input argument x=1. In the following session, we try to use our function with the input argument x=1.
–>myfunction ( 1 ) !–error 4
Undefined variable: y at line
4 of function myfunction called by :
myfunction ( 1 )
Indeed, the interpreter tells us that the output variable y has not been defined. Indeed, the interpreter tells us that the output variable y has not been defined. Indeed, the interpreter tells us that the output variable y has not been defined.
When we make a computation, we often need more than one function in order to perform all the steps of
the algorithm. For example, consider the situation where we need to optimize a system. In this case, we might
use an algorithm provided by Scilab, say optim for example. First, we define the cost function which is to be use an algorithm provided by Scilab, say optim for example. First, we define the cost function which is to be use an algorithm provided by Scilab, say optim for example. First, we define the cost function which is to be
optimized, according to the format expected by optim. Second, we define a driver, optimized, according to the format expected by optim. Second, we define a driver, optimized, according to the format expected by optim. Second, we define a driver,
58

which calls the optim function with the required arguments. At least two functions are used in this simple which calls the optim function with the required arguments. At least two functions are used in this simple which calls the optim function with the required arguments. At least two functions are used in this simple
scheme. In practice, a complete computation often requires a dozen of functions, or more. In this case, we
may collect our functions in a library and this is the topic of the next section.
6.3 Function libraries
A function library is a collection of functions defined in the Scilab language and stored in a set of files.
When a set of functions is simple and does not contain any help or any source code in a compiled
language like C/C++ or Fortran, a library is a very efficient way to proceed. Instead, when we design a Scilab
component with unit tests, help pages and demonstration scripts, we develop a module. Developing a module component with unit tests, help pages and demonstration scripts, we develop a module. Developing a module component with unit tests, help pages and demonstration scripts, we develop a module. Developing a module
is both easy and efficient, but requires a more advanced knowledge of Scilab. Moreover, modules are based
on function libraries, so that understanding the former allows to master the latter. Modules will not be
described in this document. Still, in many practical situations, function libraries allow to efficiently manage
simple collections of functions and this is why we describe this system here.
In this section, we describe a very simple library and show how to load it automatically at Scilab startup.
Let us make a short outline of the process of creating and using a library. We assume that we are given a
set of . sci files containing functions. set of . sci files containing functions. set of . sci files containing functions.
1. We create a binary version of the scripts containing the functions. The genlib 1. We create a binary version of the scripts containing the functions. The genlib
function generates binary versions of the scripts, as well as additional indexing files.
2. We load the library into Scilab. The lib function allows to load a library 2. We load the library into Scilab. The lib function allows to load a library 2. We load the library into Scilab. The lib function allows to load a library
stored in a particular directory.
Before analyzing an example, let us consider some general rules which must be followed when we
design a function library. These rules will then be reviewed in the next example.
The file names containing function definitions should end with the . sci extension. This is not mandatory, The file names containing function definitions should end with the . sci extension. This is not mandatory, The file names containing function definitions should end with the . sci extension. This is not mandatory,
but helps in identifying the Scilab scripts on a hard drive.
Several functions may be stored in each . sci file, but only the first one will be available from outside the Several functions may be stored in each . sci file, but only the first one will be available from outside the Several functions may be stored in each . sci file, but only the first one will be available from outside the
file. Indeed, the first function of the file is considered to be the only public function, while the other functions
are (implicitly) private functions.
The name of the . sci file must be the same as the name of the first function in the file. For example, if the The name of the . sci file must be the same as the name of the first function in the file. For example, if the The name of the . sci file must be the same as the name of the first function in the file. For example, if the
function is to be named myfun, then the file containing this function must be myfun.sci. This is mandatory in function is to be named myfun, then the file containing this function must be myfun.sci. This is mandatory in function is to be named myfun, then the file containing this function must be myfun.sci. This is mandatory in function is to be named myfun, then the file containing this function must be myfun.sci. This is mandatory in function is to be named myfun, then the file containing this function must be myfun.sci. This is mandatory in
order to make the genlib order to make the genlib
function work properly.
The functions which allow to manage libraries are presented in figure 30 . We shall now give a small The functions which allow to manage libraries are presented in figure 30 . We shall now give a small The functions which allow to manage libraries are presented in figure 30 . We shall now give a small
example of a particular library and give some details about how to actually proceed.
Assume that we use a Windows system and that the samplelib directory contains two files: Assume that we use a Windows system and that the samplelib directory contains two files: Assume that we use a Windows system and that the samplelib directory contains two files:
59

genlib build library from functions in a given directory genlib build library from functions in a given directory
lib library definition
Figure 30: Scilab commands to manage functions.
•C:/samplelib/function1.sci:
function y = function1 ( x )
y = 1 * function1_support ( x ) endfunction
function y = function1_support ( x )
y = 3 * x
endfunction
•C:/samplelib/function2.sci:
function y = function2 ( x )
y = 2 * x
endfunction
In the following session, we generate the binary files with the genlib function, which takes as its first argument In the following session, we generate the binary files with the genlib function, which takes as its first argument In the following session, we generate the binary files with the genlib function, which takes as its first argument
a string associated with the library name, and takes as its second argument the name of the directory
containing the files. Notice that only the functions function1 and function2 are publicly available: the function1_support containing the files. Notice that only the functions function1 and function2 are publicly available: the function1_support containing the files. Notice that only the functions function1 and function2 are publicly available: the function1_support containing the files. Notice that only the functions function1 and function2 are publicly available: the function1_support containing the files. Notice that only the functions function1 and function2 are publicly available: the function1_support containing the files. Notice that only the functions function1 and function2 are publicly available: the function1_support
function can be used inside the library, but cannot be used outside.
–>genlib("mylibrary","C:/ samplelib")
–>mylibrary mylibrary
=
Functions files location : C:\ samplelib \. function1
function2
The genlib function generates the following files in the directory ”C:/samplelib”: The genlib function generates the following files in the directory ”C:/samplelib”: The genlib function generates the following files in the directory ”C:/samplelib”: The genlib function generates the following files in the directory ”C:/samplelib”:
•function1.bin: the binary version of the function1.sci script, function1.bin: the binary version of the function1.sci script, function1.bin: the binary version of the function1.sci script, function1.bin: the binary version of the function1.sci script,
•function2.bin: the binary version of the function2.sci script, function2.bin: the binary version of the function2.sci script, function2.bin: the binary version of the function2.sci script, function2.bin: the binary version of the function2.sci script,
•lib: a binary version of the library,lib: a binary version of the library,
•names: a text file containing the list of functions in the library. names: a text file containing the list of functions in the library.
The binary files *. bin and the lib file are cross-platform in the sense that they work equally well under The binary files *. bin and the lib file are cross-platform in the sense that they work equally well under The binary files *. bin and the lib file are cross-platform in the sense that they work equally well under The binary files *. bin and the lib file are cross-platform in the sense that they work equally well under The binary files *. bin and the lib file are cross-platform in the sense that they work equally well under
Windows, Linux or Mac.
Once the genlib function has been executed, the two functions are immediately available, as detailed in Once the genlib function has been executed, the two functions are immediately available, as detailed in Once the genlib function has been executed, the two functions are immediately available, as detailed in
the following example.
–>function1 (3) ans =
9.
–>function2 (3) ans =
6.
60

In practical situations, though, we would not generate the library everytime it is needed. Once the library
is ready, we would like to load the library directly. This is done with the lib function, which takes as its first is ready, we would like to load the library directly. This is done with the lib function, which takes as its first is ready, we would like to load the library directly. This is done with the lib function, which takes as its first
argument the name of the directory containing the library and returns the library, as in the following session.
–>mylibrary = lib("C:\ samplelib \") ans =
Functions files location : C:\ samplelib \. function1
function2
If there are many libraries, it might be inconvenient to load manually all libraries at startup. In practice, the
lib statement can be written once for all, in Scilab startup file, so that the library is immediately available at lib statement can be written once for all, in Scilab startup file, so that the library is immediately available at
startup. The startup directory associated with a particular Scilab installation is stored in the variable
SCIHOME, as presented in the following session, for example on Windows. SCIHOME, as presented in the following session, for example on Windows.
–>SCIHOME
SCIHOME =
C:\Users\username\AppData\Roaming\Scilab\scilab -5.2.0
In the directory associated with the SCIHOME variable, the startup file is . scilab. In the directory associated with the SCIHOME variable, the startup file is . scilab. In the directory associated with the SCIHOME variable, the startup file is . scilab. In the directory associated with the SCIHOME variable, the startup file is . scilab.
The startup file is automatically read by Scilab at startup. It must be a regular Scilab script (it can contain valid
comments). To make our library available at startup, we simply write the following lines in our . scilab file. comments). To make our library available at startup, we simply write the following lines in our . scilab file. comments). To make our library available at startup, we simply write the following lines in our . scilab file.
// Load my favorite library. mylibrary = lib("C:/ samplelib/")
With this startup file, the functions defined in the library are available directly at Scilab startup.
6.4 Managing output arguments
In this section, we present the various ways to manage output arguments. A function may have zero or more
input and/or output arguments. In the most simple case, the number of input and output arguments is
pre-defined and using such a function is easy. But, as we are going to see, even such a simple function can
be called in various ways.
Assume that the function simplef is defined with 2 input arguments and 2 output arguments, as following. Assume that the function simplef is defined with 2 input arguments and 2 output arguments, as following. Assume that the function simplef is defined with 2 input arguments and 2 output arguments, as following.
function [y1 , y2] = simplef ( x1, x2 )
y1 = 2 * x1 y2 = 3 *
x2 endfunction
In fact, the number of output arguments of such a function can be 0, 1 or 2. When there is no output
argument, the value of the first output argument in stored in the ans variable. We may also set the variable y1 only. argument, the value of the first output argument in stored in the ans variable. We may also set the variable y1 only. argument, the value of the first output argument in stored in the ans variable. We may also set the variable y1 only. argument, the value of the first output argument in stored in the ans variable. We may also set the variable y1 only. argument, the value of the first output argument in stored in the ans variable. We may also set the variable y1 only.
Finally, we may use all the output arguments, as expected. The following session presents all these calling
sequences.
–>simplef ( 1 , 2 ) ans =
2.
61

whereami display current instruction calling tree whereami display current instruction calling tree
where get current instruction calling tree
Figure 31: Scilab commands associated with the call stack.
–>y1 = simplef ( 1 , 2 ) y1 =
2.
–>[y1,y2] = simplef ( 1 , 2 ) y2 =
6.
y1 =
2.
We have seen that the most basic way of defining functions already allows to manage a variable number
of output arguments. There is an even more flexible way of managing a variable number of input and output
arguments, based on the argn, varargin and varargout variables. This more advanced topic will not be arguments, based on the argn, varargin and varargout variables. This more advanced topic will not be arguments, based on the argn, varargin and varargout variables. This more advanced topic will not be arguments, based on the argn, varargin and varargout variables. This more advanced topic will not be arguments, based on the argn, varargin and varargout variables. This more advanced topic will not be
detailed in this document.
6.5 Levels in the call stack
Obviously, function calls can be nested, i.e. a function f can call a function g, which in turn calls a function h and Obviously, function calls can be nested, i.e. a function f can call a function g, which in turn calls a function h and Obviously, function calls can be nested, i.e. a function f can call a function g, which in turn calls a function h and Obviously, function calls can be nested, i.e. a function f can call a function g, which in turn calls a function h and Obviously, function calls can be nested, i.e. a function f can call a function g, which in turn calls a function h and Obviously, function calls can be nested, i.e. a function f can call a function g, which in turn calls a function h and Obviously, function calls can be nested, i.e. a function f can call a function g, which in turn calls a function h and
so forth. When Scilab starts, the variables which are defined are at the global scope. When we are in a so forth. When Scilab starts, the variables which are defined are at the global scope. When we are in a so forth. When Scilab starts, the variables which are defined are at the global scope. When we are in a
function which is called from the global scope, we are one level down in the call stack. When nested function
calls occur, the current level in the call stack is equal to the number of previously nested calls. The functions
presented in figure 31 allows to inquire about the state of the call stack. presented in figure 31 allows to inquire about the state of the call stack. presented in figure 31 allows to inquire about the state of the call stack.
In the following session, we define 3 functions which are calling one another and we use the function whereami In the following session, we define 3 functions which are calling one another and we use the function whereami
to display the current instruction calling tree.
function y = fmain ( x )
y = 2 * flevel1 ( x ) endfunction
function y = flevel1 ( x )
y = 2 * flevel2 ( x ) endfunction
function y = flevel2 ( x )
y = 2 * x whereami
() endfunction
When we call the function fmain, the following output is produced. As we can see, the 3 levels in the call When we call the function fmain, the following output is produced. As we can see, the 3 levels in the call When we call the function fmain, the following output is produced. As we can see, the 3 levels in the call
stack are displayed, associated with the corresponding function.
–>fmain (1)
whereami called at line 3 of macro flevel2 flevel2 called at line 2 of macro flevel1
flevel1 called at line 2 of macro fmain ans =
62

8.
In the previous example, the various calling levels are the following:
•level 0 : the global level,
•level -1 : the body of the fmain function, level -1 : the body of the fmain function, level -1 : the body of the fmain function,
•level -2 : the body of the flevel1 function, level -2 : the body of the flevel1 function, level -2 : the body of the flevel1 function,
•level -3 : the body of the flevel2 function. level -3 : the body of the flevel2 function. level -3 : the body of the flevel2 function.
These calling levels are displayed in the prompt of the console when we interactively debug a function with
the pause statement or with breakpoints. the pause statement or with breakpoints. the pause statement or with breakpoints.
6.6 The return statement 6.6 The return statement 6.6 The return statement
Inside the body of a function, the return statement allows to immediately return, Inside the body of a function, the return statement allows to immediately return, Inside the body of a function, the return statement allows to immediately return,
i.e. it immediately quits the current function. This statement can be used in cases where the remaining of the
algorithm is not necessary.
The following function computes the sum of integers from istart to iend. In regular situations, it uses the sum The following function computes the sum of integers from istart to iend. In regular situations, it uses the sum The following function computes the sum of integers from istart to iend. In regular situations, it uses the sum The following function computes the sum of integers from istart to iend. In regular situations, it uses the sum The following function computes the sum of integers from istart to iend. In regular situations, it uses the sum The following function computes the sum of integers from istart to iend. In regular situations, it uses the sum
function to perform its job. But if the istart function to perform its job. But if the istart
variable is negative or if the istart<=iend condition is not satisfied, the output variable y is set to 0 and the variable is negative or if the istart<=iend condition is not satisfied, the output variable y is set to 0 and the variable is negative or if the istart<=iend condition is not satisfied, the output variable y is set to 0 and the variable is negative or if the istart<=iend condition is not satisfied, the output variable y is set to 0 and the variable is negative or if the istart<=iend condition is not satisfied, the output variable y is set to 0 and the
function immediately returns.
function y = mysum ( istart , iend )
if ( istart < 0 ) then
y = 0 return
end
if ( iend < istart ) then
y = 0 return
end
y = sum ( istart : iend ) endfunction
The following session allows to check that the return statement is correctly used by the mysum function. The following session allows to check that the return statement is correctly used by the mysum function. The following session allows to check that the return statement is correctly used by the mysum function. The following session allows to check that the return statement is correctly used by the mysum function. The following session allows to check that the return statement is correctly used by the mysum function.
–>mysum ( 1 , 5 ) ans =
15.
–>mysum ( -1 , 5 ) ans =
0.
–>mysum ( 2 , 1 ) ans =
0.
Some developers state that using several return statements in a function is generally a bad practice. Some developers state that using several return statements in a function is generally a bad practice. Some developers state that using several return statements in a function is generally a bad practice.
Indeed, we must take into account the increased difficulty of debugging such a function, because the
algorithm may suddenly quit the body of the function. The user may get confused about what exactly caused
the function to return.
63

pause wait for interactive user input pause wait for interactive user input
resume resume execution and copy some local variables resume resume execution and copy some local variables
abort interrupt evaluation
Figure 32: Scilab functions to debug manually a function.
This is why, in practice, the return statement should be used with care, and certainly not in every This is why, in practice, the return statement should be used with care, and certainly not in every This is why, in practice, the return statement should be used with care, and certainly not in every
function. The rule to follow is that the function should return only at its very last line. Still, in particular
situations, using return can actually greatly simplify the algorithm, while avoiding return would require writing a situations, using return can actually greatly simplify the algorithm, while avoiding return would require writing a situations, using return can actually greatly simplify the algorithm, while avoiding return would require writing a situations, using return can actually greatly simplify the algorithm, while avoiding return would require writing a situations, using return can actually greatly simplify the algorithm, while avoiding return would require writing a
lot of unnecessary source code.
6.7 Debugging functions with pause 6.7 Debugging functions with pause
In this section, we present simple debugging methods which allow to fix most simple bugs in a convenient and
efficient way. More specifically, we present the pause, resume and abort statements, which are presented in efficient way. More specifically, we present the pause, resume and abort statements, which are presented in efficient way. More specifically, we present the pause, resume and abort statements, which are presented in efficient way. More specifically, we present the pause, resume and abort statements, which are presented in efficient way. More specifically, we present the pause, resume and abort statements, which are presented in
figure 32 . A Scilab session usually consists in the definition of new algorithms by the creation of new figure 32 . A Scilab session usually consists in the definition of new algorithms by the creation of new figure 32 . A Scilab session usually consists in the definition of new algorithms by the creation of new
functions. It often happens that a syntax error or an error in the algorithm produces a wrong result.
Consider the problem computation of the sum of then integers from istart to Consider the problem computation of the sum of then integers from istart to Consider the problem computation of the sum of then integers from istart to
iend. Again, this simple example is chosen for demonstration purposes, since the iend. Again, this simple example is chosen for demonstration purposes, since the
sum function performs it directly. sum function performs it directly.
The following function mysum contains a bug: the second argument ” foo ” passed to the sum function has The following function mysum contains a bug: the second argument ” foo ” passed to the sum function has The following function mysum contains a bug: the second argument ” foo ” passed to the sum function has The following function mysum contains a bug: the second argument ” foo ” passed to the sum function has The following function mysum contains a bug: the second argument ” foo ” passed to the sum function has The following function mysum contains a bug: the second argument ” foo ” passed to the sum function has The following function mysum contains a bug: the second argument ” foo ” passed to the sum function has
no meaning in this context.
function y = mysum ( istart , iend )
y = sum ( iend : istart , "foo" ) endfunction
The following session shows what happens when we use the mysum function. The following session shows what happens when we use the mysum function. The following session shows what happens when we use the mysum function.
–>mysum ( 1 , 10 ) !–error 44
Wrong argument 2. at line
2 of function mysum called by :
mysum ( 1 , 10 )
In order to interactively find the problem, we place a pause statement inside the body of the function. In order to interactively find the problem, we place a pause statement inside the body of the function. In order to interactively find the problem, we place a pause statement inside the body of the function.
function y = mysum ( istart , iend )
pause
y = sum ( iend : istart , "foo" ) endfunction
We now call the function mysum again with the same input arguments. We now call the function mysum again with the same input arguments. We now call the function mysum again with the same input arguments.
–>mysum ( 1 , 10 )
Type ’resume ’ or ’abort ’ to return to standard level prompt.
– 1->
64

We are now interactively located in the body of the mysum function. The prompt ”- 1-> ” indicates that the We are now interactively located in the body of the mysum function. The prompt ”- 1-> ” indicates that the We are now interactively located in the body of the mysum function. The prompt ”- 1-> ” indicates that the We are now interactively located in the body of the mysum function. The prompt ”- 1-> ” indicates that the We are now interactively located in the body of the mysum function. The prompt ”- 1-> ” indicates that the We are now interactively located in the body of the mysum function. The prompt ”- 1-> ” indicates that the We are now interactively located in the body of the mysum function. The prompt ”- 1-> ” indicates that the
current call stack is at level -1. We can check the value of the variables istart and iend by simply typing their current call stack is at level -1. We can check the value of the variables istart and iend by simply typing their current call stack is at level -1. We can check the value of the variables istart and iend by simply typing their current call stack is at level -1. We can check the value of the variables istart and iend by simply typing their current call stack is at level -1. We can check the value of the variables istart and iend by simply typing their
names in the console.
-1->istart istart =
1.
-1->iend iend
=
10.
In order to progress in our function, we can copy and paste the statements and see what happens
interactively, as in the following session.
-1->y = sum ( iend : istart , "foo" ) y = sum ( iend : istart , "foo" )
!–error 44
Wrong argument 2.
We can see that the call to the sum function does not behave how we might expect. The ” foo ” input argument We can see that the call to the sum function does not behave how we might expect. The ” foo ” input argument We can see that the call to the sum function does not behave how we might expect. The ” foo ” input argument We can see that the call to the sum function does not behave how we might expect. The ” foo ” input argument We can see that the call to the sum function does not behave how we might expect. The ” foo ” input argument
is definitely a bug: we remove it.
-1->y = sum ( iend : istart ) y =
0.
After the first revision, the call to the sum function is now syntactically correct. But the result is still wrong, After the first revision, the call to the sum function is now syntactically correct. But the result is still wrong, After the first revision, the call to the sum function is now syntactically correct. But the result is still wrong,
since the expected result in this case is 55. We see that the istart and iend variables have been swapped. We since the expected result in this case is 55. We see that the istart and iend variables have been swapped. We since the expected result in this case is 55. We see that the istart and iend variables have been swapped. We since the expected result in this case is 55. We see that the istart and iend variables have been swapped. We since the expected result in this case is 55. We see that the istart and iend variables have been swapped. We since the expected result in this case is 55. We see that the istart and iend variables have been swapped. We since the expected result in this case is 55. We see that the istart and iend variables have been swapped. We
correct the function call and check that the fixed version behaves as expected
-1->y = sum ( istart : iend ) y =
55.
The result is now correct. In order to get back to the zero level, we now use the
abort statement, which interrupts the sequence and immediately returns to the global level. abort statement, which interrupts the sequence and immediately returns to the global level.
-1->abort
–>
The ”–>” prompt confirms that we are now back at the zero level in the call stack.
We fix the function definition, which becomes:
function y = mysum ( istart , iend )
pause
y = sum ( istart : iend ) endfunction
In order to check our bugfix, we call the function again.
–>mysum ( 1 , 10 )
Type ’resume ’ or ’abort ’ to return to standard level prompt.
– 1->
We are now confident about our code, so that we use the resume statement, which lets Scilab execute the We are now confident about our code, so that we use the resume statement, which lets Scilab execute the We are now confident about our code, so that we use the resume statement, which lets Scilab execute the
code as usual.
65

–>mysum ( 1 , 10 )
-1->resume ans =
55.
The result is correct. All we have to do is to remove the pause statement from the function definition. The result is correct. All we have to do is to remove the pause statement from the function definition. The result is correct. All we have to do is to remove the pause statement from the function definition.
function y = mysum ( istart , iend )
y = sum ( istart : iend ) endfunction
In this section, we have seen that, used in combination, the pause, resume and In this section, we have seen that, used in combination, the pause, resume and In this section, we have seen that, used in combination, the pause, resume and
abort statements are a very effective way to interactively debug a function. In fact, our example is very simple abort statements are a very effective way to interactively debug a function. In fact, our example is very simple
and the method we presented may appear to be too simple to be convenient. This is not the case. In practice,
the pause statement has proven to be a very fast way to find and fix bugs, even in very complex situations. the pause statement has proven to be a very fast way to find and fix bugs, even in very complex situations. the pause statement has proven to be a very fast way to find and fix bugs, even in very complex situations.
7 Plotting
Producing plots and graphics is a very common task for analysing data and creating reports. Scilab offers
many ways to create and customize various types of plots and charts. In this section, we present how to
create 2D plots and contour plots. Then we customize the title and the legend of our graphics. We finally
export the plots so that we can use it in a report.
7.1 Overview
Scilab can produce many types of 2D and 3D plots. It can create x-y plots with the plot function, contour plots Scilab can produce many types of 2D and 3D plots. It can create x-y plots with the plot function, contour plots Scilab can produce many types of 2D and 3D plots. It can create x-y plots with the plot function, contour plots
with the contour function, 3D plots with the surf with the contour function, 3D plots with the surf with the contour function, 3D plots with the surf with the contour function, 3D plots with the surf
function, histograms with the histplot function and many other types of plots. The most commonly used plot function, histograms with the histplot function and many other types of plots. The most commonly used plot function, histograms with the histplot function and many other types of plots. The most commonly used plot
functions are presented in figure 33 . In order to get an example of a 3D plot, we can simply type the functions are presented in figure 33 . In order to get an example of a 3D plot, we can simply type the functions are presented in figure 33 . In order to get an example of a 3D plot, we can simply type the
statement surf() statement surf()
in the Scilab console.
–>surf()
During the creation of a plot, we use several functions in order to create the data or to configure the plot.
The functions which are presented in figure 34 will be used in the examples of this section. The functions which are presented in figure 34 will be used in the examples of this section. The functions which are presented in figure 34 will be used in the examples of this section.
7.2 2D plot
In this section, we present how to produce a simple x-y plot. We emphasize the use of vectorized functions,
which allow to produce matrices of data in one function call.
We begin by defining the function which is to be plotted. The function myquadratic We begin by defining the function which is to be plotted. The function myquadratic
squares the input argument x with the ”ˆ” operator. squares the input argument x with the ”ˆ” operator. squares the input argument x with the ”ˆ” operator.
function f = myquadratic ( x )
f = x^2
endfunction
66

plot 2D plot
surf 3D plot
contour contour plot
pie pie chart
histplot histogram histplot histogram
bar bar chart
barh horizontal bar chart
hist3d 3D histogram
polarplot plot polar coordinates polarplot plot polar coordinates
Matplot 2D plot of a matrix using colors
Sgrayplot smooth 2D plot of a surface using colors Sgrayplot smooth 2D plot of a surface using colors
grayplot 2D plot of a surface using colors
Figure 33: Scilab plot functions
linspace linearly spaced vector linspace linearly spaced vector
feval evaluates a function on a grid
legend configure the legend of the current plot
title configure the title of the current plot
xtitle configure the title and the legends of the current plot
Figure 34: Scilab functions used when creating a plot.
We can use the linspace function in order to produce 50 values in the interval [1, 10]. We can use the linspace function in order to produce 50 values in the interval [1, 10]. We can use the linspace function in order to produce 50 values in the interval [1, 10].
xdata = linspace ( 1 , 10 , 50 );
The xdata variable now contains a row vector with 50 entries, where the first value is equal to 1 and the last The xdata variable now contains a row vector with 50 entries, where the first value is equal to 1 and the last The xdata variable now contains a row vector with 50 entries, where the first value is equal to 1 and the last
value is equal to 10. We can pass it to the myquadratic value is equal to 10. We can pass it to the myquadratic
function and get the function value at the given points.
ydata = myquadratic ( xdata );
This produces the row vector ydata, which contains 50 entries. We finally use the This produces the row vector ydata, which contains 50 entries. We finally use the This produces the row vector ydata, which contains 50 entries. We finally use the
plot function so that the data is displayed as a x-y plot.plot function so that the data is displayed as a x-y plot.
plot ( xdata , ydata )
Figure 35 presents the associated x-y plot. Figure 35 presents the associated x-y plot. Figure 35 presents the associated x-y plot.
Notice that we could have produced the same plot without generating the intermediate array ydata. Indeed, Notice that we could have produced the same plot without generating the intermediate array ydata. Indeed, Notice that we could have produced the same plot without generating the intermediate array ydata. Indeed,
the second input argument of the plot function can be a function, as in the following session. the second input argument of the plot function can be a function, as in the following session. the second input argument of the plot function can be a function, as in the following session.
plot ( xdata , myquadratic )
When the number of points to manage is large, using directly the function allow to save significant amount of
memory space, since it avoids to generate the intermediate vector ydata. memory space, since it avoids to generate the intermediate vector ydata.
67

9 1 2 3 5 8 4 7 10100
90
80
70
60
50
40
30
20
10
0
6
Figure 35: A simple x-y plot.
7.3 Contour plots
In this section, we present the contour plots of a multivariate function and make use of the contour function. In this section, we present the contour plots of a multivariate function and make use of the contour function. In this section, we present the contour plots of a multivariate function and make use of the contour function.
This type of graphics is often used in the context of numerical optimization as they allow to draw functions of
two variables in a way that makes apparent the location of the optimum.
Assume that we are given function f with n variables f( x) = f(x 1, . . . , x n) and Assume that we are given function f with n variables f( x) = f(x 1, . . . , x n) and Assume that we are given function f with n variables f( x) = f(x 1, . . . , x n) and Assume that we are given function f with n variables f( x) = f(x 1, . . . , x n) and Assume that we are given function f with n variables f( x) = f(x 1, . . . , x n) and Assume that we are given function f with n variables f( x) = f(x 1, . . . , x n) and Assume that we are given function f with n variables f( x) = f(x 1, . . . , x n) and Assume that we are given function f with n variables f( x) = f(x 1, . . . , x n) and Assume that we are given function f with n variables f( x) = f(x 1, . . . , x n) and Assume that we are given function f with n variables f( x) = f(x 1, . . . , x n) and Assume that we are given function f with n variables f( x) = f(x 1, . . . , x n) and Assume that we are given function f with n variables f( x) = f(x 1, . . . , x n) and Assume that we are given function f with n variables f( x) = f(x 1, . . . , x n) and Assume that we are given function f with n variables f( x) = f(x 1, . . . , x n) and Assume that we are given function f with n variables f( x) = f(x 1, . . . , x n) and Assume that we are given function f with n variables f( x) = f(x 1, . . . , x n) and
x ∈ R n. For a given α ∈ R, the equation x ∈ R n. For a given α ∈ R, the equation x ∈ R n. For a given α ∈ R, the equation x ∈ R n. For a given α ∈ R, the equation x ∈ R n. For a given α ∈ R, the equation x ∈ R n. For a given α ∈ R, the equation x ∈ R n. For a given α ∈ R, the equation x ∈ R n. For a given α ∈ R, the equation x ∈ R n. For a given α ∈ R, the equation
f( x) = α, f( x) = α, f( x) = α, (2)
defines a surface in the ( n + 1)-dimensional space R n+ 1. defines a surface in the ( n + 1)-dimensional space R n+ 1. defines a surface in the ( n + 1)-dimensional space R n+ 1. defines a surface in the ( n + 1)-dimensional space R n+ 1. defines a surface in the ( n + 1)-dimensional space R n+ 1. defines a surface in the ( n + 1)-dimensional space R n+ 1.
When n = 2, the points z = f(x 1, x 2) represent a surface in the three-dimensional space ( x 1, x 2, z) ∈ R 3. This When n = 2, the points z = f(x 1, x 2) represent a surface in the three-dimensional space ( x 1, x 2, z) ∈ R 3. This When n = 2, the points z = f(x 1, x 2) represent a surface in the three-dimensional space ( x 1, x 2, z) ∈ R 3. This When n = 2, the points z = f(x 1, x 2) represent a surface in the three-dimensional space ( x 1, x 2, z) ∈ R 3. This When n = 2, the points z = f(x 1, x 2) represent a surface in the three-dimensional space ( x 1, x 2, z) ∈ R 3. This When n = 2, the points z = f(x 1, x 2) represent a surface in the three-dimensional space ( x 1, x 2, z) ∈ R 3. This When n = 2, the points z = f(x 1, x 2) represent a surface in the three-dimensional space ( x 1, x 2, z) ∈ R 3. This When n = 2, the points z = f(x 1, x 2) represent a surface in the three-dimensional space ( x 1, x 2, z) ∈ R 3. This When n = 2, the points z = f(x 1, x 2) represent a surface in the three-dimensional space ( x 1, x 2, z) ∈ R 3. This When n = 2, the points z = f(x 1, x 2) represent a surface in the three-dimensional space ( x 1, x 2, z) ∈ R 3. This When n = 2, the points z = f(x 1, x 2) represent a surface in the three-dimensional space ( x 1, x 2, z) ∈ R 3. This When n = 2, the points z = f(x 1, x 2) represent a surface in the three-dimensional space ( x 1, x 2, z) ∈ R 3. This When n = 2, the points z = f(x 1, x 2) represent a surface in the three-dimensional space ( x 1, x 2, z) ∈ R 3. This When n = 2, the points z = f(x 1, x 2) represent a surface in the three-dimensional space ( x 1, x 2, z) ∈ R 3. This When n = 2, the points z = f(x 1, x 2) represent a surface in the three-dimensional space ( x 1, x 2, z) ∈ R 3. This When n = 2, the points z = f(x 1, x 2) represent a surface in the three-dimensional space ( x 1, x 2, z) ∈ R 3. This When n = 2, the points z = f(x 1, x 2) represent a surface in the three-dimensional space ( x 1, x 2, z) ∈ R 3. This
allows to draw contour plots of the cost function, as we are going to see. For n > 3, though, these plots are allows to draw contour plots of the cost function, as we are going to see. For n > 3, though, these plots are allows to draw contour plots of the cost function, as we are going to see. For n > 3, though, these plots are allows to draw contour plots of the cost function, as we are going to see. For n > 3, though, these plots are allows to draw contour plots of the cost function, as we are going to see. For n > 3, though, these plots are
not available. One possible solution in this case is to select two significant parameters and to draw a contour
plot with these parameters varying (only).
The Scilab function contour allows to plot contours of a function f. The contour The Scilab function contour allows to plot contours of a function f. The contour The Scilab function contour allows to plot contours of a function f. The contour The Scilab function contour allows to plot contours of a function f. The contour The Scilab function contour allows to plot contours of a function f. The contour The Scilab function contour allows to plot contours of a function f. The contour
function has the following syntax
contour(x,y,z,nz)
where
•x ( resp. y) is a row vector of x ( resp. y) values with size n1 ( resp. n2), x ( resp. y) is a row vector of x ( resp. y) values with size n1 ( resp. n2), x ( resp. y) is a row vector of x ( resp. y) values with size n1 ( resp. n2), x ( resp. y) is a row vector of x ( resp. y) values with size n1 ( resp. n2), x ( resp. y) is a row vector of x ( resp. y) values with size n1 ( resp. n2), x ( resp. y) is a row vector of x ( resp. y) values with size n1 ( resp. n2), x ( resp. y) is a row vector of x ( resp. y) values with size n1 ( resp. n2), x ( resp. y) is a row vector of x ( resp. y) values with size n1 ( resp. n2), x ( resp. y) is a row vector of x ( resp. y) values with size n1 ( resp. n2), x ( resp. y) is a row vector of x ( resp. y) values with size n1 ( resp. n2), x ( resp. y) is a row vector of x ( resp. y) values with size n1 ( resp. n2),
•z is a real matrix of size ( n1,n2), containing the values of the function or a Scilab function which defines z is a real matrix of size ( n1,n2), containing the values of the function or a Scilab function which defines z is a real matrix of size ( n1,n2), containing the values of the function or a Scilab function which defines z is a real matrix of size ( n1,n2), containing the values of the function or a Scilab function which defines
the surface z=f(x,y), the surface z=f(x,y),
•nz the level values or the number of levels.nz the level values or the number of levels.
68

0.8 0.6 0.4 0.2 0.0 -0.2 -0.4 -0.6 -0.8 -1.01.0
0.8
0.6
0.4
0.2
0.0
-0.2
-0.4
-0.6
-0.8
-1.0
1.01.821.64
1.451.45 1.45
1.451.271.27 1.27
1.271.091.09 1.09
1.090.7270.545
0.3640.182
1.64
Figure 36: Contour plot of the function f(x 1, x 2) = x 21 + x 22. Figure 36: Contour plot of the function f(x 1, x 2) = x 21 + x 22. Figure 36: Contour plot of the function f(x 1, x 2) = x 21 + x 22. Figure 36: Contour plot of the function f(x 1, x 2) = x 21 + x 22. Figure 36: Contour plot of the function f(x 1, x 2) = x 21 + x 22. Figure 36: Contour plot of the function f(x 1, x 2) = x 21 + x 22. Figure 36: Contour plot of the function f(x 1, x 2) = x 21 + x 22. Figure 36: Contour plot of the function f(x 1, x 2) = x 21 + x 22. Figure 36: Contour plot of the function f(x 1, x 2) = x 21 + x 22.
In the following Scilab session, we use a simple form of the contour function, where the function myquadratic In the following Scilab session, we use a simple form of the contour function, where the function myquadratic In the following Scilab session, we use a simple form of the contour function, where the function myquadratic In the following Scilab session, we use a simple form of the contour function, where the function myquadratic
is passed as an input argument. The myquadratic is passed as an input argument. The myquadratic
function takes two input arguments x 1 and x 2 and returns f(x 1, x 2) = x 21 + x 22. function takes two input arguments x 1 and x 2 and returns f(x 1, x 2) = x 21 + x 22. function takes two input arguments x 1 and x 2 and returns f(x 1, x 2) = x 21 + x 22. function takes two input arguments x 1 and x 2 and returns f(x 1, x 2) = x 21 + x 22. function takes two input arguments x 1 and x 2 and returns f(x 1, x 2) = x 21 + x 22. function takes two input arguments x 1 and x 2 and returns f(x 1, x 2) = x 21 + x 22. function takes two input arguments x 1 and x 2 and returns f(x 1, x 2) = x 21 + x 22. function takes two input arguments x 1 and x 2 and returns f(x 1, x 2) = x 21 + x 22. function takes two input arguments x 1 and x 2 and returns f(x 1, x 2) = x 21 + x 22. function takes two input arguments x 1 and x 2 and returns f(x 1, x 2) = x 21 + x 22. function takes two input arguments x 1 and x 2 and returns f(x 1, x 2) = x 21 + x 22. function takes two input arguments x 1 and x 2 and returns f(x 1, x 2) = x 21 + x 22. function takes two input arguments x 1 and x 2 and returns f(x 1, x 2) = x 21 + x 22. function takes two input arguments x 1 and x 2 and returns f(x 1, x 2) = x 21 + x 22. function takes two input arguments x 1 and x 2 and returns f(x 1, x 2) = x 21 + x 22.
The linspace function is used to generate vectors of data so that the function is analyzed in the range [ − 1, 1] 2. The linspace function is used to generate vectors of data so that the function is analyzed in the range [ − 1, 1] 2. The linspace function is used to generate vectors of data so that the function is analyzed in the range [ − 1, 1] 2. The linspace function is used to generate vectors of data so that the function is analyzed in the range [ − 1, 1] 2. The linspace function is used to generate vectors of data so that the function is analyzed in the range [ − 1, 1] 2. The linspace function is used to generate vectors of data so that the function is analyzed in the range [ − 1, 1] 2.
function f = myquadratic2arg ( x1 , x2 )
f = x1**2 + x2**2; endfunction
xdata = linspace ( -1 , 1 , 100 ); ydata = linspace ( -1 , 1 , 100 ); contour ( xdata , ydata ,
myquadratic2arg , 10)
This produces the contour plot presented in figure 36 . In practice, it may happen that our function has the This produces the contour plot presented in figure 36 . In practice, it may happen that our function has the This produces the contour plot presented in figure 36 . In practice, it may happen that our function has the
header z = myfunction ( x ), where the input variable x is a row vector. The problem is that there is only one header z = myfunction ( x ), where the input variable x is a row vector. The problem is that there is only one header z = myfunction ( x ), where the input variable x is a row vector. The problem is that there is only one header z = myfunction ( x ), where the input variable x is a row vector. The problem is that there is only one header z = myfunction ( x ), where the input variable x is a row vector. The problem is that there is only one
single input argument, instead of the two arguments required by the contour single input argument, instead of the two arguments required by the contour
function. There are two possibilities to solve this little problem:
•provide the data to the contour function by making two nested loops, provide the data to the contour function by making two nested loops, provide the data to the contour function by making two nested loops,
•provide the data to the contour function by using feval, provide the data to the contour function by using feval, provide the data to the contour function by using feval, provide the data to the contour function by using feval,
•define a new function which calls the first one.
These three solutions are presented in this section. The first goal is to let the reader choose the method which
best fits the situation. The second goal is to show that performances issues can be avoided if a consistent use
of the functions provided by Scilab is done.
In the following Scilab naive session, we define the quadratic function myquadratic1arg, In the following Scilab naive session, we define the quadratic function myquadratic1arg,
which takes one vector as its single input argument. Then we perform two nested
69

0.8 0.6 0.4 0.2 0.0 -0.2 -0.4 -0.6 -0.8 -1.01.0
0.8
0.6
0.4
0.2
0.0
-0.2
-0.4
-0.6
-0.8
-1.0
1.00.7
0.3 0.1 0.5
Figure 37: Contour plot of the function f(x 1, x 2) = x 21+ x 22 – The levels are explicitly configured. Figure 37: Contour plot of the function f(x 1, x 2) = x 21+ x 22 – The levels are explicitly configured. Figure 37: Contour plot of the function f(x 1, x 2) = x 21+ x 22 – The levels are explicitly configured. Figure 37: Contour plot of the function f(x 1, x 2) = x 21+ x 22 – The levels are explicitly configured. Figure 37: Contour plot of the function f(x 1, x 2) = x 21+ x 22 – The levels are explicitly configured. Figure 37: Contour plot of the function f(x 1, x 2) = x 21+ x 22 – The levels are explicitly configured. Figure 37: Contour plot of the function f(x 1, x 2) = x 21+ x 22 – The levels are explicitly configured. Figure 37: Contour plot of the function f(x 1, x 2) = x 21+ x 22 – The levels are explicitly configured. Figure 37: Contour plot of the function f(x 1, x 2) = x 21+ x 22 – The levels are explicitly configured. Figure 37: Contour plot of the function f(x 1, x 2) = x 21+ x 22 – The levels are explicitly configured.
loops to compute the zdata matrix, which contains the z values. The z values are computed for all the loops to compute the zdata matrix, which contains the z values. The z values are computed for all the loops to compute the zdata matrix, which contains the z values. The z values are computed for all the loops to compute the zdata matrix, which contains the z values. The z values are computed for all the loops to compute the zdata matrix, which contains the z values. The z values are computed for all the loops to compute the zdata matrix, which contains the z values. The z values are computed for all the loops to compute the zdata matrix, which contains the z values. The z values are computed for all the
combinations of points ( x(i), y(j)) ∈ R 2, for i = 1, 2, . . . , n x combinations of points ( x(i), y(j)) ∈ R 2, for i = 1, 2, . . . , n x combinations of points ( x(i), y(j)) ∈ R 2, for i = 1, 2, . . . , n x combinations of points ( x(i), y(j)) ∈ R 2, for i = 1, 2, . . . , n x combinations of points ( x(i), y(j)) ∈ R 2, for i = 1, 2, . . . , n x combinations of points ( x(i), y(j)) ∈ R 2, for i = 1, 2, . . . , n x combinations of points ( x(i), y(j)) ∈ R 2, for i = 1, 2, . . . , n x combinations of points ( x(i), y(j)) ∈ R 2, for i = 1, 2, . . . , n x combinations of points ( x(i), y(j)) ∈ R 2, for i = 1, 2, . . . , n x combinations of points ( x(i), y(j)) ∈ R 2, for i = 1, 2, . . . , n x combinations of points ( x(i), y(j)) ∈ R 2, for i = 1, 2, . . . , n x combinations of points ( x(i), y(j)) ∈ R 2, for i = 1, 2, . . . , n x combinations of points ( x(i), y(j)) ∈ R 2, for i = 1, 2, . . . , n x combinations of points ( x(i), y(j)) ∈ R 2, for i = 1, 2, . . . , n x combinations of points ( x(i), y(j)) ∈ R 2, for i = 1, 2, . . . , n x
and j = 1, 2, . . . , n y, where n x and n y are the number of points in the x and y coordinates. In the end, we call the contour and j = 1, 2, . . . , n y, where n x and n y are the number of points in the x and y coordinates. In the end, we call the contour and j = 1, 2, . . . , n y, where n x and n y are the number of points in the x and y coordinates. In the end, we call the contour and j = 1, 2, . . . , n y, where n x and n y are the number of points in the x and y coordinates. In the end, we call the contour and j = 1, 2, . . . , n y, where n x and n y are the number of points in the x and y coordinates. In the end, we call the contour and j = 1, 2, . . . , n y, where n x and n y are the number of points in the x and y coordinates. In the end, we call the contour and j = 1, 2, . . . , n y, where n x and n y are the number of points in the x and y coordinates. In the end, we call the contour and j = 1, 2, . . . , n y, where n x and n y are the number of points in the x and y coordinates. In the end, we call the contour and j = 1, 2, . . . , n y, where n x and n y are the number of points in the x and y coordinates. In the end, we call the contour and j = 1, 2, . . . , n y, where n x and n y are the number of points in the x and y coordinates. In the end, we call the contour and j = 1, 2, . . . , n y, where n x and n y are the number of points in the x and y coordinates. In the end, we call the contour and j = 1, 2, . . . , n y, where n x and n y are the number of points in the x and y coordinates. In the end, we call the contour and j = 1, 2, . . . , n y, where n x and n y are the number of points in the x and y coordinates. In the end, we call the contour and j = 1, 2, . . . , n y, where n x and n y are the number of points in the x and y coordinates. In the end, we call the contour and j = 1, 2, . . . , n y, where n x and n y are the number of points in the x and y coordinates. In the end, we call the contour and j = 1, 2, . . . , n y, where n x and n y are the number of points in the x and y coordinates. In the end, we call the contour and j = 1, 2, . . . , n y, where n x and n y are the number of points in the x and y coordinates. In the end, we call the contour and j = 1, 2, . . . , n y, where n x and n y are the number of points in the x and y coordinates. In the end, we call the contour and j = 1, 2, . . . , n y, where n x and n y are the number of points in the x and y coordinates. In the end, we call the contour and j = 1, 2, . . . , n y, where n x and n y are the number of points in the x and y coordinates. In the end, we call the contour and j = 1, 2, . . . , n y, where n x and n y are the number of points in the x and y coordinates. In the end, we call the contour and j = 1, 2, . . . , n y, where n x and n y are the number of points in the x and y coordinates. In the end, we call the contour
function, with the list of required levels (instead of the previous number of levels). This allows to get exactly
the levels we want, instead of letting Scilab compute the levels automatically.
function f = myquadratic1arg ( x )
f = x(1)**2 + x(2)**2; endfunction
xdata = linspace ( -1 , 1 , 100 ); ydata = linspace ( -1 , 1 , 100 ); // Caution ! Two
nested loop , this is bad. for i = 1: length(xdata)
for j = 1: length(ydata)
x = [xdata(i) ydata(j)].’;
zdata ( i , j ) = myquadratic1arg ( x ); end end
contour ( xdata , ydata , zdata , [0.1 0.3 0.5 0.7])
The contour plot is presented in figure 37 . The contour plot is presented in figure 37 . The contour plot is presented in figure 37 .
The previous script perfectly works. Still, it is not efficient because it uses two nested loops and this is to
avoid in Scilab for performance reasons. Another issue is that we had to store the zdata matrix, which might avoid in Scilab for performance reasons. Another issue is that we had to store the zdata matrix, which might avoid in Scilab for performance reasons. Another issue is that we had to store the zdata matrix, which might
consume a lot of memory space when the number of points is large. This is why this method is to avoid, since
it is a bad use of the features provided by Scilab.
In the following script, we use the feval function, which evaluates a function on a grid of values and In the following script, we use the feval function, which evaluates a function on a grid of values and In the following script, we use the feval function, which evaluates a function on a grid of values and
returns the computed data. The generated grid is made of all the combinations of points ( x(i), y(j)) ∈ R 2. We returns the computed data. The generated grid is made of all the combinations of points ( x(i), y(j)) ∈ R 2. We returns the computed data. The generated grid is made of all the combinations of points ( x(i), y(j)) ∈ R 2. We returns the computed data. The generated grid is made of all the combinations of points ( x(i), y(j)) ∈ R 2. We returns the computed data. The generated grid is made of all the combinations of points ( x(i), y(j)) ∈ R 2. We returns the computed data. The generated grid is made of all the combinations of points ( x(i), y(j)) ∈ R 2. We
assume here that there
70

is no possibility to modify the function myquadratic1arg, which takes one input argument. Therefore, we create is no possibility to modify the function myquadratic1arg, which takes one input argument. Therefore, we create is no possibility to modify the function myquadratic1arg, which takes one input argument. Therefore, we create
an intermediate function myquadratic3, which takes 2 input arguments. Once done, we pass the myquadratic3 an intermediate function myquadratic3, which takes 2 input arguments. Once done, we pass the myquadratic3 an intermediate function myquadratic3, which takes 2 input arguments. Once done, we pass the myquadratic3 an intermediate function myquadratic3, which takes 2 input arguments. Once done, we pass the myquadratic3
argument to the feval argument to the feval
function and generate the zdata matrix. function and generate the zdata matrix. function and generate the zdata matrix.
function f = myquadratic1arg ( x )
f = x(1)**2 + x(2)**2; endfunction
function f = myquadratic3 ( x1 , x2 )
f = myquadratic1arg ( [x1 x2] ) endfunction
xdata = linspace ( -1 , 1 , 100 ); ydata = linspace ( -1 , 1 , 100 ); zdata = feval ( xdata , ydata ,
myquadratic3 ); contour ( xdata , ydata , zdata , [0.1 0.3 0.5 0.7])
The previous script produces, of course, exactly the same plot as previously. This method is also to avoid
when possible, since it requires to store the zdata matrix, which has size 100 × 100. when possible, since it requires to store the zdata matrix, which has size 100 × 100. when possible, since it requires to store the zdata matrix, which has size 100 × 100. when possible, since it requires to store the zdata matrix, which has size 100 × 100. when possible, since it requires to store the zdata matrix, which has size 100 × 100.
Finally, there is a third way of creating the plot. In the following Scilab session, we use the same
intermediate function myquadratic3 as previously, but we pass it directly to the contour function. intermediate function myquadratic3 as previously, but we pass it directly to the contour function. intermediate function myquadratic3 as previously, but we pass it directly to the contour function. intermediate function myquadratic3 as previously, but we pass it directly to the contour function. intermediate function myquadratic3 as previously, but we pass it directly to the contour function.
function f = myquadratic1arg ( x )
f = x(1)**2 + x(2)**2; endfunction
function f = myquadratic3 ( x1 , x2 )
f = myquadratic1arg ( [x1 x2] ) endfunction
xdata = linspace ( -1 , 1 , 100 ); ydata = linspace ( -1 , 1 , 100 );
contour ( xdata , ydata , myquadratic3 , [0.1 0.3 0.5 0.7])
The previous script produces, of course, exactly the same plot as previously. The major advantage is that
we did not produce the zdata matrix. we did not produce the zdata matrix. we did not produce the zdata matrix.
We have briefly outlined how to produce simple 2D plots. We are now interested in the configuration of
the plot, so that the titles, axis and legends corresponds to our data.
7.4 Titles, axes and legends
In this section, we present the Scilab graphics features which allow to configure the title, axes and legends of
an x-y plot.
In the following example, we define a quadratic function and plot it with the
plot function.plot function.
function f = myquadratic ( x )
f = x.^2
endfunction
xdata = linspace ( 1 , 10 , 50 ); ydata = myquadratic ( xdata );
plot ( xdata , ydata )
We have now the plot which is presented in figure 35 . We have now the plot which is presented in figure 35 . We have now the plot which is presented in figure 35 .
71

9 6 1020
X axis 810
7 5 4 3 2 1 30 40 50 60 70
0 80 90 100My title
Figure 38: The x-y plot of a quadratic function – This is the same plot as in figure 35 , with title and x-y axes Figure 38: The x-y plot of a quadratic function – This is the same plot as in figure 35 , with title and x-y axes Figure 38: The x-y plot of a quadratic function – This is the same plot as in figure 35 , with title and x-y axes
configured.
Scilab graphics system is based on graphics handles. The graphics handles provide an object-oriented Scilab graphics system is based on graphics handles. The graphics handles provide an object-oriented Scilab graphics system is based on graphics handles. The graphics handles provide an object-oriented
access to the fields of a graphics entity. The graphics layout is decomposed into sub-objects such as the line
associated with the curve, the x and y axes, the title, the legends, and so forth. Each object can be in turn
decomposed into other objects if required. Each graphics object is associated with a collection of properties,
such as the width or color of the line of the curve, for example. These properties can be queried and
configured simply by getting or setting their values, like any other Scilab variables. Managing handles is easy
and very efficient.
But most basic plot configurations can be done by simple function calls and, in this section, we will focus
in these basic features.
In the following script, we use the title function in order to configure the title of our plot. In the following script, we use the title function in order to configure the title of our plot. In the following script, we use the title function in order to configure the title of our plot.
title ( "My title" );
We may want to configure the axes of our plot as well. For this purpose, we use the xtitle function in the We may want to configure the axes of our plot as well. For this purpose, we use the xtitle function in the We may want to configure the axes of our plot as well. For this purpose, we use the xtitle function in the
following script.
xtitle ( "My title" , "X axis" , "Y axis" );
Figure 38 presents the produced plot. Figure 38 presents the produced plot. Figure 38 presents the produced plot.
It may happen that we want to compare two sets of data in the same 2D plot, that is, one set of x data
and two sets of y data. In the following script, we define the two functions f(x) = x 2 and f(x) = 2 x 2 and plot the and two sets of y data. In the following script, we define the two functions f(x) = x 2 and f(x) = 2 x 2 and plot the and two sets of y data. In the following script, we define the two functions f(x) = x 2 and f(x) = 2 x 2 and plot the and two sets of y data. In the following script, we define the two functions f(x) = x 2 and f(x) = 2 x 2 and plot the and two sets of y data. In the following script, we define the two functions f(x) = x 2 and f(x) = 2 x 2 and plot the and two sets of y data. In the following script, we define the two functions f(x) = x 2 and f(x) = 2 x 2 and plot the and two sets of y data. In the following script, we define the two functions f(x) = x 2 and f(x) = 2 x 2 and plot the and two sets of y data. In the following script, we define the two functions f(x) = x 2 and f(x) = 2 x 2 and plot the and two sets of y data. In the following script, we define the two functions f(x) = x 2 and f(x) = 2 x 2 and plot the
data on the same x-y plot. We additionally use the ”+-” and ” o- ” options of the plot function, so that we can data on the same x-y plot. We additionally use the ”+-” and ” o- ” options of the plot function, so that we can data on the same x-y plot. We additionally use the ”+-” and ” o- ” options of the plot function, so that we can data on the same x-y plot. We additionally use the ”+-” and ” o- ” options of the plot function, so that we can data on the same x-y plot. We additionally use the ”+-” and ” o- ” options of the plot function, so that we can
distinguish the two curves f(x) = x 2 and f(x) = 2 x 2. distinguish the two curves f(x) = x 2 and f(x) = 2 x 2. distinguish the two curves f(x) = x 2 and f(x) = 2 x 2. distinguish the two curves f(x) = x 2 and f(x) = 2 x 2. distinguish the two curves f(x) = x 2 and f(x) = 2 x 2. distinguish the two curves f(x) = x 2 and f(x) = 2 x 2. distinguish the two curves f(x) = x 2 and f(x) = 2 x 2. distinguish the two curves f(x) = x 2 and f(x) = 2 x 2.
function f = myquadratic ( x )
f = x^2
endfunction
function f = myquadratic2 ( x )
72Y axis

9 6 1040
X axis 820
7 5 4 3 2 1 60 80 100 120 140
0 160 180 200My title
x^2
2x^2
Figure 39: The x-y plot of two quadratic functions – We have configured the legend so that we can distinguish
the two functions f(x) = x 2 and f(x) = 2 x 2. the two functions f(x) = x 2 and f(x) = 2 x 2. the two functions f(x) = x 2 and f(x) = 2 x 2. the two functions f(x) = x 2 and f(x) = 2 x 2. the two functions f(x) = x 2 and f(x) = 2 x 2. the two functions f(x) = x 2 and f(x) = 2 x 2. the two functions f(x) = x 2 and f(x) = 2 x 2. the two functions f(x) = x 2 and f(x) = 2 x 2.
f = 2 * x^2
endfunction
xdata = linspace ( 1 , 10 , 50 ); ydata = myquadratic ( xdata );
plot ( xdata , ydata , "+-" ) ydata2 = myquadratic2 ( xdata ); plot (
xdata , ydata2 , "o-" )
xtitle ( "My title" , "X axis" , "Y axis" );
Moreover, we must configure a legend so that we can know what curve is associated with f(x) = x 2 and Moreover, we must configure a legend so that we can know what curve is associated with f(x) = x 2 and Moreover, we must configure a legend so that we can know what curve is associated with f(x) = x 2 and Moreover, we must configure a legend so that we can know what curve is associated with f(x) = x 2 and
what curve is associated with f(x) = 2 x 2. For this purpose, we use the legend function in order to print the what curve is associated with f(x) = 2 x 2. For this purpose, we use the legend function in order to print the what curve is associated with f(x) = 2 x 2. For this purpose, we use the legend function in order to print the what curve is associated with f(x) = 2 x 2. For this purpose, we use the legend function in order to print the what curve is associated with f(x) = 2 x 2. For this purpose, we use the legend function in order to print the what curve is associated with f(x) = 2 x 2. For this purpose, we use the legend function in order to print the what curve is associated with f(x) = 2 x 2. For this purpose, we use the legend function in order to print the what curve is associated with f(x) = 2 x 2. For this purpose, we use the legend function in order to print the
legend associated with each curve.
legend ( "x^2" , "2x^2" );
Figure 39 presents the produced x-y plot. Figure 39 presents the produced x-y plot. Figure 39 presents the produced x-y plot.
We now know how to create a graphics plot and how to configure it. If the plot is sufficiently interesting, it
may be worth to put it into a report. To do so, we can export the plot into a file, which is the subject of the next
section.
7.5 Export
In this section, we present ways of exporting plots into files, either interactively or automatically with Scilab
functions.
Scilab can export any graphics into the vectorial and bitmap formats presented in figure 40 . Once a plot Scilab can export any graphics into the vectorial and bitmap formats presented in figure 40 . Once a plot Scilab can export any graphics into the vectorial and bitmap formats presented in figure 40 . Once a plot
is produced, we can export its content into a file, by using interactively the File > Export to… menu of the is produced, we can export its content into a file, by using interactively the File > Export to… menu of the is produced, we can export its content into a file, by using interactively the File > Export to… menu of the is produced, we can export its content into a file, by using interactively the File > Export to… menu of the
graphics window. We can then set the name of the file and its type.
73Y axis

Vectorial
xs2png export into PNG
xs2pdf export into PDF
xs2svg export into SVG
xs2eps export into Encapsulated Postscript
xs2ps export into Postscript
xs2emf export into EMF (only for Windows)
Bitmap
xs2fig export into FIG
xs2gif export into GIF
xs2jpg export into JPG
xs2bmp export into BMP
xs2ppm export into PPM
Figure 40: Export functions.
We can alternatively use the xs2* functions, presented in figure 40 . All these We can alternatively use the xs2* functions, presented in figure 40 . All these We can alternatively use the xs2* functions, presented in figure 40 . All these We can alternatively use the xs2* functions, presented in figure 40 . All these We can alternatively use the xs2* functions, presented in figure 40 . All these
functions are based on the same calling sequence:
xs2png ( window_number , filename )
where window_number is the number of the graphics window and filename is the name of the file to export. where window_number is the number of the graphics window and filename is the name of the file to export. where window_number is the number of the graphics window and filename is the name of the file to export. where window_number is the number of the graphics window and filename is the name of the file to export. where window_number is the number of the graphics window and filename is the name of the file to export.
For example, the following session exports the plot which is in the graphics window number 0, which is the
default graphics window, into the file foo.png. default graphics window, into the file foo.png.
xs2png ( 0 , "foo.png" )
If we want to produce higher quality documents, the vectorial formats are to be prefered. For example, L A TEX If we want to produce higher quality documents, the vectorial formats are to be prefered. For example, L A TEX If we want to produce higher quality documents, the vectorial formats are to be prefered. For example, L A TEX
documents may use Scilab plots exported into PDF files to improve their readability, whatever the size of the
document.
8 Notes and references
There are a number of topics which have not been presented in this document. We hope that the current
document is a good starting point for using Scilab so that learning about these specific topics should not be a
problem. We have already mentioned a number of other sources of documentation for this purpose at the
begining of this document.
French readers may be interested by [ 5 ], where a good introduction is given about how to create and French readers may be interested by [ 5 ], where a good introduction is given about how to create and French readers may be interested by [ 5 ], where a good introduction is given about how to create and
interface to an existing library, how to use Scilab to compute the solution of an Ordinary Differential Equation,
how to use Scicos and many other subjects. The same content is presented in English in [ 3 ]. English readers how to use Scicos and many other subjects. The same content is presented in English in [ 3 ]. English readers how to use Scicos and many other subjects. The same content is presented in English in [ 3 ]. English readers
should be interested by [ 4 ], which gives a deeper overview of Scicos. These books are of great interest, but should be interested by [ 4 ], which gives a deeper overview of Scicos. These books are of great interest, but should be interested by [ 4 ], which gives a deeper overview of Scicos. These books are of great interest, but
are rather obsolete since they were written mainly for older version of Scilab.
Further reading may be obtained from the Scilab web cite [ 6 ], in the documentation section. Further reading may be obtained from the Scilab web cite [ 6 ], in the documentation section. Further reading may be obtained from the Scilab web cite [ 6 ], in the documentation section.
74

9 Acknowledgments
I would like to thank Claude Gomez, Vincent Couvert, Allan Cornet and Serge Steer who let me share their
comments about this document. I am also grateful to Julie Paul and Sylvestre Ledru who helped me during
the writing of this document. Thanks are also expressed to Artem Glebov for proofreading this document.
75

10 Answers to exercises
10.1 Answers for section 1.7 10.1 Answers for section 1.7
Answer to Exercise 1.1 ( Installing Scilab) Let us install the current version of Scilab on your system: at the time where this document is Answer to Exercise 1.1 ( Installing Scilab) Let us install the current version of Scilab on your system: at the time where this document is Answer to Exercise 1.1 ( Installing Scilab) Let us install the current version of Scilab on your system: at the time where this document is Answer to Exercise 1.1 ( Installing Scilab) Let us install the current version of Scilab on your system: at the time where this document is Answer to Exercise 1.1 ( Installing Scilab) Let us install the current version of Scilab on your system: at the time where this document is
written, this is Scilab v5.2. Installing Scilab is very easy, since binaries are provided. Figure 41 present the early steps required to written, this is Scilab v5.2. Installing Scilab is very easy, since binaries are provided. Figure 41 present the early steps required to written, this is Scilab v5.2. Installing Scilab is very easy, since binaries are provided. Figure 41 present the early steps required to
install Scilab v5.1.1 under Windows.
Answer to Exercise 1.2 ( Inline help: derivative ) The derivative function allows to compute the numerical derivative of a function. The Answer to Exercise 1.2 ( Inline help: derivative ) The derivative function allows to compute the numerical derivative of a function. The Answer to Exercise 1.2 ( Inline help: derivative ) The derivative function allows to compute the numerical derivative of a function. The Answer to Exercise 1.2 ( Inline help: derivative ) The derivative function allows to compute the numerical derivative of a function. The Answer to Exercise 1.2 ( Inline help: derivative ) The derivative function allows to compute the numerical derivative of a function. The Answer to Exercise 1.2 ( Inline help: derivative ) The derivative function allows to compute the numerical derivative of a function. The Answer to Exercise 1.2 ( Inline help: derivative ) The derivative function allows to compute the numerical derivative of a function. The Answer to Exercise 1.2 ( Inline help: derivative ) The derivative function allows to compute the numerical derivative of a function. The
purpose of this exercise is to find the corresponding help page, by various means. We open the help browser from the console, in the
? > Help Browser? > Help Browser? > Help Browser
menu. We now select the search pane on the left, and type derivative, then press the <Enter> key. All the pages containing the word derivative menu. We now select the search pane on the left, and type derivative, then press the <Enter> key. All the pages containing the word derivative menu. We now select the search pane on the left, and type derivative, then press the <Enter> key. All the pages containing the word derivative menu. We now select the search pane on the left, and type derivative, then press the <Enter> key. All the pages containing the word derivative
are displayed. The first one is the help page we are searching for. We can also use the help provided on Scilab web site
http://www.scilab.org/product/man
We use the find tool of our favorite web browser and search for the word derivative. We successively find the functions: diff, bsplin3val, We use the find tool of our favorite web browser and search for the word derivative. We successively find the functions: diff, bsplin3val, We use the find tool of our favorite web browser and search for the word derivative. We successively find the functions: diff, bsplin3val, We use the find tool of our favorite web browser and search for the word derivative. We successively find the functions: diff, bsplin3val, We use the find tool of our favorite web browser and search for the word derivative. We successively find the functions: diff, bsplin3val,
derivative, derivat and dlgamma. The searched page is the following: derivative, derivat and dlgamma. The searched page is the following: derivative, derivat and dlgamma. The searched page is the following: derivative, derivat and dlgamma. The searched page is the following:
http://www.scilab.org/product/man/derivative.html
We finally use the console to find the help.
help derivative
Figure 42 presents the help page for the derivative. Figure 42 presents the help page for the derivative. Figure 42 presents the help page for the derivative. Figure 42 presents the help page for the derivative.
10.2 Answers for section 2.6 10.2 Answers for section 2.6
Answer to Exercise 2.1 ( The console) Type the following statement in the console. Answer to Exercise 2.1 ( The console) Type the following statement in the console. Answer to Exercise 2.1 ( The console) Type the following statement in the console. Answer to Exercise 2.1 ( The console) Type the following statement in the console. Answer to Exercise 2.1 ( The console) Type the following statement in the console.
atoms
Now type on the <Tab> key. What happens? We see that all functions which name begins with the letters ”atoms” are displayed, as Now type on the <Tab> key. What happens? We see that all functions which name begins with the letters ”atoms” are displayed, as
presented in figure 43 . Now type the ”I” letter, and type again on <Tab>. What happens ? We see that all functions which name begins presented in figure 43 . Now type the ”I” letter, and type again on <Tab>. What happens ? We see that all functions which name begins presented in figure 43 . Now type the ”I” letter, and type again on <Tab>. What happens ? We see that all functions which name begins
with the letters ”atomsI” are displayed, as presented in figure 44 . with the letters ”atomsI” are displayed, as presented in figure 44 . with the letters ”atomsI” are displayed, as presented in figure 44 .
Answer to Exercise 2.2 ( Using exec) The SCI variable contains the name of the directory of the current Scilab installation. The Answer to Exercise 2.2 ( Using exec) The SCI variable contains the name of the directory of the current Scilab installation. The Answer to Exercise 2.2 ( Using exec) The SCI variable contains the name of the directory of the current Scilab installation. The Answer to Exercise 2.2 ( Using exec) The SCI variable contains the name of the directory of the current Scilab installation. The Answer to Exercise 2.2 ( Using exec) The SCI variable contains the name of the directory of the current Scilab installation. The Answer to Exercise 2.2 ( Using exec) The SCI variable contains the name of the directory of the current Scilab installation. The Answer to Exercise 2.2 ( Using exec) The SCI variable contains the name of the directory of the current Scilab installation. The
statement SCI+"/modules" creates a string which is the concatenation of the Scilab directory name and the ”/modules” string, as statement SCI+"/modules" creates a string which is the concatenation of the Scilab directory name and the ”/modules” string, as statement SCI+"/modules" creates a string which is the concatenation of the Scilab directory name and the ”/modules” string, as
shown in the following session.
–>SCI+"/modules" ans =
C:/ PROGRA ~1/ SCILAB ~1.0-B/modules
Therefore, when we perform the ls(SCI+"/modules") statement, Scilab displays the list of files in the modules subdirectory of Scilab. Therefore, when we perform the ls(SCI+"/modules") statement, Scilab displays the list of files in the modules subdirectory of Scilab. Therefore, when we perform the ls(SCI+"/modules") statement, Scilab displays the list of files in the modules subdirectory of Scilab. Therefore, when we perform the ls(SCI+"/modules") statement, Scilab displays the list of files in the modules subdirectory of Scilab. Therefore, when we perform the ls(SCI+"/modules") statement, Scilab displays the list of files in the modules subdirectory of Scilab.
–>ls(SCI+"/modules") ans =
!xpad !
! !
!xcos !
! !
!windows_tools !
! !
[…]
76

Figure 41: First steps during the installation of Scilab v5.1.1 under Windows.
77

Figure 42: Help page for the derivative function. Figure 42: Help page for the derivative function. Figure 42: Help page for the derivative function.
Figure 43: Using the completion to browse the ATOMS functions.
Figure 44: Using the completion to browse the ATOMS functions.
78

Figure 45: The demo contourf.dem.sce. Figure 45: The demo contourf.dem.sce.
Executing the demonstration script contourf.dem.sce produces the graphic presented in figure 45 . The difference between the two Executing the demonstration script contourf.dem.sce produces the graphic presented in figure 45 . The difference between the two Executing the demonstration script contourf.dem.sce produces the graphic presented in figure 45 . The difference between the two Executing the demonstration script contourf.dem.sce produces the graphic presented in figure 45 . The difference between the two Executing the demonstration script contourf.dem.sce produces the graphic presented in figure 45 . The difference between the two
statements
exec(SCI+"/modules/graphics/demos/2 d_3d_plots/contourf.dem.sce") exec(SCI+"/modules/graphics/demos/2
d_3d_plots/contourf.dem.sce");
is that the second ends with a semicolon ”;”. We use this operator so that Scilab does not display the content of the file when the script
is executed, which is convenient when the script contains many lines.
10.3 Answers for section 3.13 10.3 Answers for section 3.13
Answer to Exercise 3.1 ( Precedence of operators) The order of the operations when they are applied to a mathematical expression is Answer to Exercise 3.1 ( Precedence of operators) The order of the operations when they are applied to a mathematical expression is Answer to Exercise 3.1 ( Precedence of operators) The order of the operations when they are applied to a mathematical expression is Answer to Exercise 3.1 ( Precedence of operators) The order of the operations when they are applied to a mathematical expression is Answer to Exercise 3.1 ( Precedence of operators) The order of the operations when they are applied to a mathematical expression is
called the precedence. For example, when the expression 2 × 3 + 4, it is equivalent to the expression (2 × 3) + 4. The following called the precedence. For example, when the expression 2 × 3 + 4, it is equivalent to the expression (2 × 3) + 4. The following called the precedence. For example, when the expression 2 × 3 + 4, it is equivalent to the expression (2 × 3) + 4. The following called the precedence. For example, when the expression 2 × 3 + 4, it is equivalent to the expression (2 × 3) + 4. The following called the precedence. For example, when the expression 2 × 3 + 4, it is equivalent to the expression (2 × 3) + 4. The following called the precedence. For example, when the expression 2 × 3 + 4, it is equivalent to the expression (2 × 3) + 4. The following called the precedence. For example, when the expression 2 × 3 + 4, it is equivalent to the expression (2 × 3) + 4. The following
session shows that the precedence of Scilab operators is the same as the usual mathematical operators.
–>2 * 3 + 4 ans =
10.
–>2 + 3 * 4 ans =
14.
–>2 / 3 + 4 ans =
4.6666667
–>2 + 3 / 4 ans =
2.75
Answer to Exercise 3.2 ( Parentheses) When the precedence of the operators does not allow to compute the result we want, Answer to Exercise 3.2 ( Parentheses) When the precedence of the operators does not allow to compute the result we want, Answer to Exercise 3.2 ( Parentheses) When the precedence of the operators does not allow to compute the result we want, Answer to Exercise 3.2 ( Parentheses) When the precedence of the operators does not allow to compute the result we want, Answer to Exercise 3.2 ( Parentheses) When the precedence of the operators does not allow to compute the result we want,
parentheses can be used to force the order of the operations. In Scilab, we can use the usual round brackets ”(” and ”)”.
79

–>2 * (3 + 4) ans =
14.
–>(2 + 3) * 4 ans =
20.
–>(2 + 3) / 4 ans =
1.25
–>3 / (2 + 4) ans =
0.5
Answer to Exercise 3.3 ( Exponents) When we want to define constants with exponents, as the constant 1.23456789 × 10 10, we use the Answer to Exercise 3.3 ( Exponents) When we want to define constants with exponents, as the constant 1.23456789 × 10 10, we use the Answer to Exercise 3.3 ( Exponents) When we want to define constants with exponents, as the constant 1.23456789 × 10 10, we use the Answer to Exercise 3.3 ( Exponents) When we want to define constants with exponents, as the constant 1.23456789 × 10 10, we use the Answer to Exercise 3.3 ( Exponents) When we want to define constants with exponents, as the constant 1.23456789 × 10 10, we use the Answer to Exercise 3.3 ( Exponents) When we want to define constants with exponents, as the constant 1.23456789 × 10 10, we use the Answer to Exercise 3.3 ( Exponents) When we want to define constants with exponents, as the constant 1.23456789 × 10 10, we use the Answer to Exercise 3.3 ( Exponents) When we want to define constants with exponents, as the constant 1.23456789 × 10 10, we use the Answer to Exercise 3.3 ( Exponents) When we want to define constants with exponents, as the constant 1.23456789 × 10 10, we use the
” d ” letter to define the exponent, as in the following session.” d ” letter to define the exponent, as in the following session.” d ” letter to define the exponent, as in the following session.
–>1.23456789 d10
ans =
1.235D+10
We can alternatively use the ” e ” letter, as in the following session which computes the constants We can alternatively use the ” e ” letter, as in the following session which computes the constants We can alternatively use the ” e ” letter, as in the following session which computes the constants
1.23456789 × 10 10 and 1.23456789 × 10 − 5. 1.23456789 × 10 10 and 1.23456789 × 10 − 5. 1.23456789 × 10 10 and 1.23456789 × 10 − 5. 1.23456789 × 10 10 and 1.23456789 × 10 − 5. 1.23456789 × 10 10 and 1.23456789 × 10 − 5. 1.23456789 × 10 10 and 1.23456789 × 10 − 5. 1.23456789 × 10 10 and 1.23456789 × 10 − 5. 1.23456789 × 10 10 and 1.23456789 × 10 − 5. 1.23456789 × 10 10 and 1.23456789 × 10 − 5.
–>1.23456789 e10
ans =
1.235D+10
–>1.23456789e-5
ans =
0.0000123
Answer to Exercise 3.4 ( Functions) The sqrt behaves exactly as mathematically expected for positive arguments. Answer to Exercise 3.4 ( Functions) The sqrt behaves exactly as mathematically expected for positive arguments. Answer to Exercise 3.4 ( Functions) The sqrt behaves exactly as mathematically expected for positive arguments. Answer to Exercise 3.4 ( Functions) The sqrt behaves exactly as mathematically expected for positive arguments. Answer to Exercise 3.4 ( Functions) The sqrt behaves exactly as mathematically expected for positive arguments. Answer to Exercise 3.4 ( Functions) The sqrt behaves exactly as mathematically expected for positive arguments. Answer to Exercise 3.4 ( Functions) The sqrt behaves exactly as mathematically expected for positive arguments.
–>sqrt (4) ans =
2.
–>sqrt (9) ans =
3.
For negative arguments x, Scilab returns y as the complex solution of the equation x 2 = y. For negative arguments x, Scilab returns y as the complex solution of the equation x 2 = y. For negative arguments x, Scilab returns y as the complex solution of the equation x 2 = y. For negative arguments x, Scilab returns y as the complex solution of the equation x 2 = y. For negative arguments x, Scilab returns y as the complex solution of the equation x 2 = y. For negative arguments x, Scilab returns y as the complex solution of the equation x 2 = y. For negative arguments x, Scilab returns y as the complex solution of the equation x 2 = y. For negative arguments x, Scilab returns y as the complex solution of the equation x 2 = y.
–>sqrt(-1) ans =
i
–>sqrt(-2) ans =
1.4142136i
The exp function is the exponential function, where the base e is Euler’s constant. The log is the natural logarithm, which is the The exp function is the exponential function, where the base e is Euler’s constant. The log is the natural logarithm, which is the The exp function is the exponential function, where the base e is Euler’s constant. The log is the natural logarithm, which is the The exp function is the exponential function, where the base e is Euler’s constant. The log is the natural logarithm, which is the The exp function is the exponential function, where the base e is Euler’s constant. The log is the natural logarithm, which is the The exp function is the exponential function, where the base e is Euler’s constant. The log is the natural logarithm, which is the The exp function is the exponential function, where the base e is Euler’s constant. The log is the natural logarithm, which is the
inverse function of the exponential function.
–>exp(1) ans
=
2.7182818
–>log(exp (2)) ans =
80

2.
–>exp(log (2)) ans =
2.
The log10 function is the base-10 logarithm. Notice that if x is an integer, then log 10( x) is the number of decimal digits of x. The log10 function is the base-10 logarithm. Notice that if x is an integer, then log 10( x) is the number of decimal digits of x. The log10 function is the base-10 logarithm. Notice that if x is an integer, then log 10( x) is the number of decimal digits of x. The log10 function is the base-10 logarithm. Notice that if x is an integer, then log 10( x) is the number of decimal digits of x. The log10 function is the base-10 logarithm. Notice that if x is an integer, then log 10( x) is the number of decimal digits of x. The log10 function is the base-10 logarithm. Notice that if x is an integer, then log 10( x) is the number of decimal digits of x. The log10 function is the base-10 logarithm. Notice that if x is an integer, then log 10( x) is the number of decimal digits of x. The log10 function is the base-10 logarithm. Notice that if x is an integer, then log 10( x) is the number of decimal digits of x. The log10 function is the base-10 logarithm. Notice that if x is an integer, then log 10( x) is the number of decimal digits of x.
–> 10^2
ans =
100.
–>log10 (10^2) ans =
2.
–>10^log10 (2) ans =
2.
The sign function returns the sign of its argument, and returns zero when x is zero. The sign function returns the sign of its argument, and returns zero when x is zero. The sign function returns the sign of its argument, and returns zero when x is zero. The sign function returns the sign of its argument, and returns zero when x is zero. The sign function returns the sign of its argument, and returns zero when x is zero.
–>sign (2) ans =
1.
–>sign(-2) ans =
-1.
–>sign (0) ans =
0.
Answer to Exercise 3.5 ( Trigonometry) The following session is a sample use of the cos and Answer to Exercise 3.5 ( Trigonometry) The following session is a sample use of the cos and Answer to Exercise 3.5 ( Trigonometry) The following session is a sample use of the cos and Answer to Exercise 3.5 ( Trigonometry) The following session is a sample use of the cos and Answer to Exercise 3.5 ( Trigonometry) The following session is a sample use of the cos and Answer to Exercise 3.5 ( Trigonometry) The following session is a sample use of the cos and Answer to Exercise 3.5 ( Trigonometry) The following session is a sample use of the cos and
sin functions.sin functions.
–>cos(0) ans
=
1.
–>sin(0) ans =
0.
Because of the limited precision of floating point numbers, the result of a trigonometry function (as any other function) is subject to
rounding. In the following session, the mathematical identity sin( π) = 0 is approximated at best, given the machine precision rounding. In the following session, the mathematical identity sin( π) = 0 is approximated at best, given the machine precision rounding. In the following session, the mathematical identity sin( π) = 0 is approximated at best, given the machine precision
associated with double variables.
–>cos(%pi) ans =
-1.
–>sin(%pi) ans =
1.225D-16
–>cos(%pi/4) – sin(%pi/4) ans =
1.110D-16
81

10.4 Answers for section 4.18 10.4 Answers for section 4.18
Answer to Exercise 4.1 ( Plus one) Let us create the vector ( x 1 + 1, x 2 + 1, x 3 + 1, x 4 + 1) with the following x. The following session performs Answer to Exercise 4.1 ( Plus one) Let us create the vector ( x 1 + 1, x 2 + 1, x 3 + 1, x 4 + 1) with the following x. The following session performs Answer to Exercise 4.1 ( Plus one) Let us create the vector ( x 1 + 1, x 2 + 1, x 3 + 1, x 4 + 1) with the following x. The following session performs Answer to Exercise 4.1 ( Plus one) Let us create the vector ( x 1 + 1, x 2 + 1, x 3 + 1, x 4 + 1) with the following x. The following session performs Answer to Exercise 4.1 ( Plus one) Let us create the vector ( x 1 + 1, x 2 + 1, x 3 + 1, x 4 + 1) with the following x. The following session performs Answer to Exercise 4.1 ( Plus one) Let us create the vector ( x 1 + 1, x 2 + 1, x 3 + 1, x 4 + 1) with the following x. The following session performs Answer to Exercise 4.1 ( Plus one) Let us create the vector ( x 1 + 1, x 2 + 1, x 3 + 1, x 4 + 1) with the following x. The following session performs Answer to Exercise 4.1 ( Plus one) Let us create the vector ( x 1 + 1, x 2 + 1, x 3 + 1, x 4 + 1) with the following x. The following session performs Answer to Exercise 4.1 ( Plus one) Let us create the vector ( x 1 + 1, x 2 + 1, x 3 + 1, x 4 + 1) with the following x. The following session performs Answer to Exercise 4.1 ( Plus one) Let us create the vector ( x 1 + 1, x 2 + 1, x 3 + 1, x 4 + 1) with the following x. The following session performs Answer to Exercise 4.1 ( Plus one) Let us create the vector ( x 1 + 1, x 2 + 1, x 3 + 1, x 4 + 1) with the following x. The following session performs Answer to Exercise 4.1 ( Plus one) Let us create the vector ( x 1 + 1, x 2 + 1, x 3 + 1, x 4 + 1) with the following x. The following session performs Answer to Exercise 4.1 ( Plus one) Let us create the vector ( x 1 + 1, x 2 + 1, x 3 + 1, x 4 + 1) with the following x. The following session performs Answer to Exercise 4.1 ( Plus one) Let us create the vector ( x 1 + 1, x 2 + 1, x 3 + 1, x 4 + 1) with the following x. The following session performs Answer to Exercise 4.1 ( Plus one) Let us create the vector ( x 1 + 1, x 2 + 1, x 3 + 1, x 4 + 1) with the following x. The following session performs Answer to Exercise 4.1 ( Plus one) Let us create the vector ( x 1 + 1, x 2 + 1, x 3 + 1, x 4 + 1) with the following x. The following session performs Answer to Exercise 4.1 ( Plus one) Let us create the vector ( x 1 + 1, x 2 + 1, x 3 + 1, x 4 + 1) with the following x. The following session performs Answer to Exercise 4.1 ( Plus one) Let us create the vector ( x 1 + 1, x 2 + 1, x 3 + 1, x 4 + 1) with the following x. The following session performs Answer to Exercise 4.1 ( Plus one) Let us create the vector ( x 1 + 1, x 2 + 1, x 3 + 1, x 4 + 1) with the following x. The following session performs
the computation and uses the usual addition operator ”+”. In this case, the scalar 1 is added to each element of the vector x. the computation and uses the usual addition operator ”+”. In this case, the scalar 1 is added to each element of the vector x.
–>x = 1:4;
–>y = x + 1 y =
2. 3. 4. 5.
Answer to Exercise 4.2 ( Vectorized multiplication) Let us create the vector ( x 1 y 1, x 2 y 2, x 3 y 3, x 4 y 4) Answer to Exercise 4.2 ( Vectorized multiplication) Let us create the vector ( x 1 y 1, x 2 y 2, x 3 y 3, x 4 y 4) Answer to Exercise 4.2 ( Vectorized multiplication) Let us create the vector ( x 1 y 1, x 2 y 2, x 3 y 3, x 4 y 4) Answer to Exercise 4.2 ( Vectorized multiplication) Let us create the vector ( x 1 y 1, x 2 y 2, x 3 y 3, x 4 y 4) Answer to Exercise 4.2 ( Vectorized multiplication) Let us create the vector ( x 1 y 1, x 2 y 2, x 3 y 3, x 4 y 4) Answer to Exercise 4.2 ( Vectorized multiplication) Let us create the vector ( x 1 y 1, x 2 y 2, x 3 y 3, x 4 y 4) Answer to Exercise 4.2 ( Vectorized multiplication) Let us create the vector ( x 1 y 1, x 2 y 2, x 3 y 3, x 4 y 4) Answer to Exercise 4.2 ( Vectorized multiplication) Let us create the vector ( x 1 y 1, x 2 y 2, x 3 y 3, x 4 y 4) Answer to Exercise 4.2 ( Vectorized multiplication) Let us create the vector ( x 1 y 1, x 2 y 2, x 3 y 3, x 4 y 4) Answer to Exercise 4.2 ( Vectorized multiplication) Let us create the vector ( x 1 y 1, x 2 y 2, x 3 y 3, x 4 y 4) Answer to Exercise 4.2 ( Vectorized multiplication) Let us create the vector ( x 1 y 1, x 2 y 2, x 3 y 3, x 4 y 4) Answer to Exercise 4.2 ( Vectorized multiplication) Let us create the vector ( x 1 y 1, x 2 y 2, x 3 y 3, x 4 y 4) Answer to Exercise 4.2 ( Vectorized multiplication) Let us create the vector ( x 1 y 1, x 2 y 2, x 3 y 3, x 4 y 4) Answer to Exercise 4.2 ( Vectorized multiplication) Let us create the vector ( x 1 y 1, x 2 y 2, x 3 y 3, x 4 y 4) Answer to Exercise 4.2 ( Vectorized multiplication) Let us create the vector ( x 1 y 1, x 2 y 2, x 3 y 3, x 4 y 4) Answer to Exercise 4.2 ( Vectorized multiplication) Let us create the vector ( x 1 y 1, x 2 y 2, x 3 y 3, x 4 y 4) Answer to Exercise 4.2 ( Vectorized multiplication) Let us create the vector ( x 1 y 1, x 2 y 2, x 3 y 3, x 4 y 4) Answer to Exercise 4.2 ( Vectorized multiplication) Let us create the vector ( x 1 y 1, x 2 y 2, x 3 y 3, x 4 y 4) Answer to Exercise 4.2 ( Vectorized multiplication) Let us create the vector ( x 1 y 1, x 2 y 2, x 3 y 3, x 4 y 4) Answer to Exercise 4.2 ( Vectorized multiplication) Let us create the vector ( x 1 y 1, x 2 y 2, x 3 y 3, x 4 y 4) Answer to Exercise 4.2 ( Vectorized multiplication) Let us create the vector ( x 1 y 1, x 2 y 2, x 3 y 3, x 4 y 4)
with the following x and y. The following session performs the computation and uses the elemen- twise multiplication operation ”.*”. with the following x and y. The following session performs the computation and uses the elemen- twise multiplication operation ”.*”. with the following x and y. The following session performs the computation and uses the elemen- twise multiplication operation ”.*”. with the following x and y. The following session performs the computation and uses the elemen- twise multiplication operation ”.*”. with the following x and y. The following session performs the computation and uses the elemen- twise multiplication operation ”.*”.
–>x = 1:4;
–>y = 5:8;
–>z = x .* y z =
5. 12. 21. 32.
Answer to Exercise 4.3 ( Vectorized invert) Let us create the vector ( Answer to Exercise 4.3 ( Vectorized invert) Let us create the vector ( Answer to Exercise 4.3 ( Vectorized invert) Let us create the vector ( Answer to Exercise 4.3 ( Vectorized invert) Let us create the vector ( Answer to Exercise 4.3 ( Vectorized invert) Let us create the vector (1
x 1 , 1x 1 , 1x 1 , 1x 2 , 1x 2 , 1x 2 , 1x 3 , 1x 3 , 1x 3 , 1x 4x 4)
. The
following session performs the computation and uses the elementwise division operation ”./”.
–>x = 1:4;
–>y = 1 ./ x y =
1. 0.5 0.3333333 0.25
The following session does not compute what we want, but, instead, compute the solution y of the equation xy = 1. The following session does not compute what we want, but, instead, compute the solution y of the equation xy = 1. The following session does not compute what we want, but, instead, compute the solution y of the equation xy = 1. The following session does not compute what we want, but, instead, compute the solution y of the equation xy = 1. The following session does not compute what we want, but, instead, compute the solution y of the equation xy = 1.
–>y = 1 / x // This is not what we want here ! y =
0.0333333
0.0666667
0.1
0.1333333
Answer to Exercise 4.4 ( Vectorized division) Let us create the vector ( Answer to Exercise 4.4 ( Vectorized division) Let us create the vector ( Answer to Exercise 4.4 ( Vectorized division) Let us create the vector ( Answer to Exercise 4.4 ( Vectorized division) Let us create the vector ( Answer to Exercise 4.4 ( Vectorized division) Let us create the vector (x 1x 1
y 1 , x 2 y 1 , x 2 y 1 , x 2 y 1 , x 2y 2 , x 3 y 2 , x 3 y 2 , x 3 y 2 , x 3y 3 , x 4 y 3 , x 4 y 3 , x 4 y 3 , x 4y 4y 4)
. The
following session performs the computation and uses the elementwise division operation ”./”.
–>x = 12*(6:9);
–>y = 1:4;
–>z = x ./ y z =
72. 42. 32. 27.
Answer to Exercise 4.5 ( Vectorized squaring) Let us create the vector ( x 21, x 22, x 23, x 24 Answer to Exercise 4.5 ( Vectorized squaring) Let us create the vector ( x 21, x 22, x 23, x 24 Answer to Exercise 4.5 ( Vectorized squaring) Let us create the vector ( x 21, x 22, x 23, x 24 Answer to Exercise 4.5 ( Vectorized squaring) Let us create the vector ( x 21, x 22, x 23, x 24 Answer to Exercise 4.5 ( Vectorized squaring) Let us create the vector ( x 21, x 22, x 23, x 24 Answer to Exercise 4.5 ( Vectorized squaring) Let us create the vector ( x 21, x 22, x 23, x 24 Answer to Exercise 4.5 ( Vectorized squaring) Let us create the vector ( x 21, x 22, x 23, x 24 Answer to Exercise 4.5 ( Vectorized squaring) Let us create the vector ( x 21, x 22, x 23, x 24 Answer to Exercise 4.5 ( Vectorized squaring) Let us create the vector ( x 21, x 22, x 23, x 24 Answer to Exercise 4.5 ( Vectorized squaring) Let us create the vector ( x 21, x 22, x 23, x 24 Answer to Exercise 4.5 ( Vectorized squaring) Let us create the vector ( x 21, x 22, x 23, x 24 Answer to Exercise 4.5 ( Vectorized squaring) Let us create the vector ( x 21, x 22, x 23, x 24 Answer to Exercise 4.5 ( Vectorized squaring) Let us create the vector ( x 21, x 22, x 23, x 24)
with
x = 1, 2, 3, 4. The following session performs the computation and uses the elementwise squaring operation ”.ˆ”. x = 1, 2, 3, 4. The following session performs the computation and uses the elementwise squaring operation ”.ˆ”. x = 1, 2, 3, 4. The following session performs the computation and uses the elementwise squaring operation ”.ˆ”. x = 1, 2, 3, 4. The following session performs the computation and uses the elementwise squaring operation ”.ˆ”. x = 1, 2, 3, 4. The following session performs the computation and uses the elementwise squaring operation ”.ˆ”.
–>x = 1:4;
–>y = x.^2 y =
1. 4. 9. 16.
82

Answer to Exercise 4.6 ( Vectorized sinus) Let us create the vector ( sin(x 1), sin(x 2), . . . , sin(x 10)) Answer to Exercise 4.6 ( Vectorized sinus) Let us create the vector ( sin(x 1), sin(x 2), . . . , sin(x 10)) Answer to Exercise 4.6 ( Vectorized sinus) Let us create the vector ( sin(x 1), sin(x 2), . . . , sin(x 10)) Answer to Exercise 4.6 ( Vectorized sinus) Let us create the vector ( sin(x 1), sin(x 2), . . . , sin(x 10)) Answer to Exercise 4.6 ( Vectorized sinus) Let us create the vector ( sin(x 1), sin(x 2), . . . , sin(x 10)) Answer to Exercise 4.6 ( Vectorized sinus) Let us create the vector ( sin(x 1), sin(x 2), . . . , sin(x 10)) Answer to Exercise 4.6 ( Vectorized sinus) Let us create the vector ( sin(x 1), sin(x 2), . . . , sin(x 10)) Answer to Exercise 4.6 ( Vectorized sinus) Let us create the vector ( sin(x 1), sin(x 2), . . . , sin(x 10)) Answer to Exercise 4.6 ( Vectorized sinus) Let us create the vector ( sin(x 1), sin(x 2), . . . , sin(x 10)) Answer to Exercise 4.6 ( Vectorized sinus) Let us create the vector ( sin(x 1), sin(x 2), . . . , sin(x 10)) Answer to Exercise 4.6 ( Vectorized sinus) Let us create the vector ( sin(x 1), sin(x 2), . . . , sin(x 10)) Answer to Exercise 4.6 ( Vectorized sinus) Let us create the vector ( sin(x 1), sin(x 2), . . . , sin(x 10)) Answer to Exercise 4.6 ( Vectorized sinus) Let us create the vector ( sin(x 1), sin(x 2), . . . , sin(x 10)) Answer to Exercise 4.6 ( Vectorized sinus) Let us create the vector ( sin(x 1), sin(x 2), . . . , sin(x 10)) Answer to Exercise 4.6 ( Vectorized sinus) Let us create the vector ( sin(x 1), sin(x 2), . . . , sin(x 10))
with x ∈ [ 0, π]. The following session performs the computation and uses the linspace function. with x ∈ [ 0, π]. The following session performs the computation and uses the linspace function. with x ∈ [ 0, π]. The following session performs the computation and uses the linspace function. with x ∈ [ 0, π]. The following session performs the computation and uses the linspace function. with x ∈ [ 0, π]. The following session performs the computation and uses the linspace function. with x ∈ [ 0, π]. The following session performs the computation and uses the linspace function. with x ∈ [ 0, π]. The following session performs the computation and uses the linspace function. with x ∈ [ 0, π]. The following session performs the computation and uses the linspace function.
–>x = linspace(0,%pi ,10);
–>y = sin(x) y =
column 1 to 6
0. 0.3420201 0.6427876 0.8660254 0.9848078 0.9848078
column 7 to 10
0.8660254 0.6427876 0.3420201 1.225D-16
Answer to Exercise 4.7 ( Vectorized function) Let us compute the y = f(x) values of the function f defined by the equation Answer to Exercise 4.7 ( Vectorized function) Let us compute the y = f(x) values of the function f defined by the equation Answer to Exercise 4.7 ( Vectorized function) Let us compute the y = f(x) values of the function f defined by the equation Answer to Exercise 4.7 ( Vectorized function) Let us compute the y = f(x) values of the function f defined by the equation Answer to Exercise 4.7 ( Vectorized function) Let us compute the y = f(x) values of the function f defined by the equation Answer to Exercise 4.7 ( Vectorized function) Let us compute the y = f(x) values of the function f defined by the equation Answer to Exercise 4.7 ( Vectorized function) Let us compute the y = f(x) values of the function f defined by the equation Answer to Exercise 4.7 ( Vectorized function) Let us compute the y = f(x) values of the function f defined by the equation Answer to Exercise 4.7 ( Vectorized function) Let us compute the y = f(x) values of the function f defined by the equation
f(x) = log 10 ( r/ 10 x + 10 x) f(x) = log 10 ( r/ 10 x + 10 x) f(x) = log 10 ( r/ 10 x + 10 x) f(x) = log 10 ( r/ 10 x + 10 x) f(x) = log 10 ( r/ 10 x + 10 x) f(x) = log 10 ( r/ 10 x + 10 x) f(x) = log 10 ( r/ 10 x + 10 x) f(x) = log 10 ( r/ 10 x + 10 x) (3)
with r = 2.220.10 − 16 for x ∈ [− 16, 0]. The following session performs the computation and uses the elementwise division ”./” operator. with r = 2.220.10 − 16 for x ∈ [− 16, 0]. The following session performs the computation and uses the elementwise division ”./” operator. with r = 2.220.10 − 16 for x ∈ [− 16, 0]. The following session performs the computation and uses the elementwise division ”./” operator. with r = 2.220.10 − 16 for x ∈ [− 16, 0]. The following session performs the computation and uses the elementwise division ”./” operator. with r = 2.220.10 − 16 for x ∈ [− 16, 0]. The following session performs the computation and uses the elementwise division ”./” operator. with r = 2.220.10 − 16 for x ∈ [− 16, 0]. The following session performs the computation and uses the elementwise division ”./” operator. with r = 2.220.10 − 16 for x ∈ [− 16, 0]. The following session performs the computation and uses the elementwise division ”./” operator. with r = 2.220.10 − 16 for x ∈ [− 16, 0]. The following session performs the computation and uses the elementwise division ”./” operator. with r = 2.220.10 − 16 for x ∈ [− 16, 0]. The following session performs the computation and uses the elementwise division ”./” operator. with r = 2.220.10 − 16 for x ∈ [− 16, 0]. The following session performs the computation and uses the elementwise division ”./” operator.
r = 2.220D-16;
x = linspace (-16,0,10); y = log10(r./10.^x + 10.^x);
This function appears in the computation of the optimal step to be used in a numerical deriva- tive. It shows that the optimal step to
use with a forward order one finite difference is equal to
h=sqrt(%eps).
References
[1] Atlas – automatically tuned linear algebra software. http://math-atlas. [1] Atlas – automatically tuned linear algebra software. http://math-atlas.
sourceforge.net . sourceforge.net .
[2] Cecill and free software. http://www.cecill.info . [2] Cecill and free software. http://www.cecill.info . [2] Cecill and free software. http://www.cecill.info .
[3] C Bunks, J.-P. Chancelier, F. Delebecque, C. Gomez, M. Goursat,
R. Nikoukhah, and S. Steer. Engineering and Scientific Computing With Scilab. R. Nikoukhah, and S. Steer. Engineering and Scientific Computing With Scilab.
Birkhauser Boston, 1999.
[4] Stephen L. Campbell, Jean-Philippe Chancelier, and Ramine Nikoukhah. Mod- [4] Stephen L. Campbell, Jean-Philippe Chancelier, and Ramine Nikoukhah. Mod-
eling and Simulation in Scilab/Scicos. Springer, 2006. eling and Simulation in Scilab/Scicos. Springer, 2006.
[5] J.-P. Chancelier, F. Delebecque, C. Gomez, M. Goursat, R. Nikoukhah, and
S. Steer. Introduction `a Scilab, Deuxi`eme ´ S. Steer. Introduction `a Scilab, Deuxi`eme ´ Edition. Springer, 2007. Edition. Springer, 2007.
[6] The Scilab Consortium. Scilab. http://www.scilab.org . [6] The Scilab Consortium. Scilab. http://www.scilab.org . [6] The Scilab Consortium. Scilab. http://www.scilab.org .
[7] Intel. Intel math kernel library. http://software.intel.com/en-us/
intel-mkl/ . intel-mkl/ .
[8] Sylvestre Ledru. Different execution modes of scilab. http://wiki.scilab. [8] Sylvestre Ledru. Different execution modes of scilab. http://wiki.scilab.
org/Different_execution_modes_of_Scilab . org/Different_execution_modes_of_Scilab .
83

[9] Cleve Moler. Numerical computing with matlab.
[10] Flexdock project. Flexdock project home. https://flexdock.dev.java.net/ . [10] Flexdock project. Flexdock project home. https://flexdock.dev.java.net/ . [10] Flexdock project. Flexdock project home. https://flexdock.dev.java.net/ .
84

Index
ˆ, 20ˆ, 20
’, 39’, 39
. ’, 39. ’, 39
..,21
//, 21//, 21
:, 33:, 33
;, 20;, 20
SCIHOME, 58 SCIHOME, 58
contour, 65 contour, 65
disp, 11 disp, 11
exec, 55 exec, 55
feval, 67 feval, 67
function, 52 , 54 function, 52 , 54 function, 52 , 54 function, 52 , 54
genlib, 56 genlib, 56
help, 7 help, 7
lib, 56lib, 56
linspace, 64 linspace, 64
plot, 63 , 64 plot, 63 , 64 plot, 63 , 64 plot, 63 , 64
size, 30size, 30
testmatrix, 33 testmatrix, 33
title, 69title, 69
xtitle, 69 xtitle, 69
SCIHOME, 18 SCIHOME, 18
%i, 23%i, 23
%pi, 22%pi, 22
ans, 26ans, 26
batch, 18 batch, 18
boolean, 23 boolean, 23
colon (:) operator, 33 colon (:) operator, 33
comment, 18 , 21 comment, 18 , 21 comment, 18 , 21 comment, 18 , 21
complex number, 23 complex number, 23
conjugate, 39 conjugate, 39
console, 11 console, 11
continuation line, 21 continuation line, 21
docking, 14 docking, 14
dot, 21dot, 21
elementary functions, 21 elementary functions, 21
elementwise, 39 elementwise, 39
Flexdock, 14 Flexdock, 14
flint, 25 flint, 25function
library, 56 library, 56
hat, 20hat, 20
integer, 24 integer, 24
Intel, 6 Intel, 6
left hand side, 53 left hand side, 53
library, 56 library, 56
Linux, 7 Linux, 7
Mac OS, 7 Mac OS, 7
matrix, 28 matrix, 28
MKL, 6 MKL, 6
module, 56 module, 56
prompt, 11 prompt, 11
quote (’) operator, 39 quote (’) operator, 39
right hand side, 53 right hand side, 53
semicolon, 20 semicolon, 20
shape, 28 shape, 28
string, 26 string, 26
transpose, 39 transpose, 39
variable name, 20 variable name, 20
Windows, 6 Windows, 6
85

Similar Posts

  • Întotdeauna informa ția (religioas ă, militară, economic ă, etc.) a însemnat putere, prin urmare [608899]

    1CRIPTARE 1. INTRODUCERE Întotdeauna informa ția (religioas ă, militară, economic ă, etc.) a însemnat putere, prin urmare dorința de a o proteja, de a o face accesibil ă doar unor elite, unor ini țiați, s-a pus din cele mai vechi timpuri. Primele texte cifrate descoperite pân ă în prezent dateaz ă de circa 4000 de…

  • Negru DanielNolevschi [601228]

    Negru DanielNolevschi 1Negru Artiștiselectați: 1.IvanAlbright IvanLeLorraineAlbrightesteunartistamerican,născutînanul1897șidecedatla86 deani,1983.Esterecunoscutpentruauto-portrete,naturămoartășistudiuldecaracter, lucrarilesalesuntclasificatestiluluimagicrealist.Stilulartistuluiurmăreșteartiștica ElGrecoșiRembrandt,fiindvăzutcaunuldintreceimaioriginaliartiștiaisecolului 20.Aurmăritsăreprezintestraniulrealismalvieții,lucrărilefiinddescrisecao privireaartistuluiasupragândiriilumeștiprinintermediulunorlentilemisterioase. 2.GheorgheFikl GheorgheFiklesteunuldintreceimaiimpresionanțiartiștiRomânipost-Comuniști, bucurându-sedeinteresulcolecționarilorfațădelucrărilesaleșideoapreciatăcotăde piață.AexpuslaGaleriaSchortgendinLuxemburg,SoloShowSlagGallery,iarîn țarăestereprezentatdecătreGaleriaAnnArt,lucrărilesaleaflându-seîncolecții privatedinRomânia,MareaBritanie,Franța,SUA.Fiklcreeazăununiverssomptuos șineliniștit,incluzândseriidelucrăriicuunadâncmesajsimbolic,oviziune personalăaanxietățiișiamelancolieilegatădepierdereașirecâștigareaumanității, undeanimalecaboul,calul,câineleorioaiasuntocupanțistraniiaunorspații fantastice,furnizândcontextedereflecțieasupracondițieiumane. 3.NicolaSamora NicolaSamoriesteunartistdeorigineitaliană,născutlaForliîn1977.Aexpusîn numeroaseinstituteșimuzeeinternaționale,incluzândPavilionulItalianlaceadea54 -aedițieaBienaleidelaVeneția.Artistulexamineazătemaobsesieidinmaimulte punctedevedere:corpuluman,religia,științașiobsesiaartistuluifațădepropria lucrare.Lucrilesalesuntscobite,distorsionate,topiteșidistruse,contrastândcuzone deocalitatepicturalăcomparabilăcuceaaartiștilorrenașcentiști,fiindunmare admiratoralluiMichelangelor.Așacumdistrugereareprezintăuntipdefrumusețe, artistulseîntreabă,decesăabandonămtehnicilevechișiartacândpoțisăodistrugi șisăore-interpretezi? Artiștiiseaseamănăprintr-opaletăcromanicăfoartearpopiată,discursartisticcu punctedevedereasemănătoareșiînmultecazuricomuneșimanierederezolvarea compozițiilorcuungradridicatdetensiune,personajedeformate,stărideneliniște induseprivitoruluiCompleteazăîmpreunăoprivireînansamblucătreobsesia contemporanăacorpuluiuman,obsesiedusăpânăladistrugere. Negru DanielNolevschi 2Concept: Procesdestudiușichestonareacorpuluiumandreptsuprafațădeprobagarea spiritualității,aexaminăriivibrațiilordintrevalorilesocialacceptateșiinstincte personale,într-uncomplicatprocesdeconfigurareapersonalității,deinfirmarea standardelordelimbajșiformă. Alăturareacorpuluidefacturăcanonicăsiaceluinatural,palpabil,destăinuie confuziașiteoriaviețiimoderne,undecorpulnatural,princarnalitate,esteuncompus prezent,predispusdegradării,înschimbceînregistrareacanonicăestetrecutăși viitoare,impunându-secaarhetip. Caființeîncremeniteînafaratimpului,cuconflicteșisuprapunerialedisperăriiși singurătății,ajunșisăfiemartoriiunorevenimentedeosebiteșisemnificative, anticipândsinistruldecareseferesc. Descoperireastraniearealismuluiviețiiprincoincidereaamaimultortipuride rezolvareplasticăesteundemersrealizatîncăutareafrumusețiineoșnuite,otentativă deperceperealogiciiprincarecorpulumanestecompus. Titlulfacetrimitereladiferențeleperceputedeochiulumanlanevoiadease adapta”climatului”întunecat.„Negru”reprezintăculoareapredominantăînaceastă…

  • Comparison of four major industrial disasters [631712]

    Comparison of four major industrial disasters from the perspective of human error factor Doru Costin Darabont*, Daniel Onut Badea , and Alina Trifu National Research and Development Institute of Occupational Safety “Alexandru Darabont” – INCDPM, B-dul Ghencea 35A, Bucharest, Romania Abstract. This paper presents the preliminary findings of a project still in progress at INCDPM…

  • Fedolapok Fokozati Dolgozat (1) [614798]

    UNIVERSITATEA BABE Ș-BOLYAI, CLUJ –NAPOCA DEPARTAMENTUL PENTRU PREG ĂTIREA PERSONALUL UI DIDACTIC LUCRARE METODICO- ȘTIINȚIFICĂ PENTRU OB ȚINEREA GRADULUI DIDACTIC I. ÎN ÎNVĂȚĂ MÂNTUL PRE ȘCOLAR COORDONATOR ȘTIINȚIFIC: CANDIDAT: [anonimizat]. Univ. Dr. Makkai Gyöngyvér Kiss (Takács) Erika prof.preșcolar SERIA 2017-2019 UNIVERSITATEA BABE Ș-BOLYAI, CLUJ –NAPOCA DEPARTAMENTUL PENTRU PREG ĂTIREA PERSONALUL UI DIDACTIC DEZVOLTAREA CAPACIT ĂȚII…

  • ,,Carol Davila București [304949]

    Universitatea de Medicină și Farmacie ,,Carol Davila” București Facultatea de Medicină LUCRARE DE LICENȚĂ STUDIU ANATOMIC ASUPRA VASCULARIZAȚIEI INTESTINULUI SUBȚIRE Coordonator științific Prof. Dr. Filipoiu Florin Mihail Îndrumător științific Asist. Univ. Dr. [anonimizat]: [anonimizat] 2020 [anonimizat]-[anonimizat], atât de absorbție a [anonimizat]. Cel mai frecvent această structură este afectată de bolile inflamatorii intestinale și patologia legată…

  • Programul de masterat ,,Didactici ale disciplinelor filologice [628690]

    1 UNIVERSITATEA DIN BUCUREȘTI FACULTATEA DE LITERE Programul de masterat ,,Didactici ale disciplinelor filologice” Portofoliu Tutorial de redactare a lucrării de disertație Masterandă: Zamfir Simona -Ioana 2 Pagina de titlu a lucrării UNIVERSITATEA DIN BUCUREȘTI FACULTATEA DE LITERE Programul de masterat ,,Didactici ale disciplinelor filologice” Abordarea adverbului și a numeralului din perspectiva comunicativ -funcțională Aplicații…