You are on page 1of 129

Introduo ao Scilab

ca
Verso 3.0
a

Prof. Paulo Srgio da Motta Pires


e

Departamento de Engenharia de Computao e Automao


ca
ca
Universidade Federal do Rio Grande do Norte
Natal-RN, Julho de 2004

Resumo
Scilab um ambiente utilizado no desenvolvimento de programas para a resoluo de proe
ca
blemas numricos. Criado e mantido por pesquisadores pertencentes ao Institut de Recherche en
e

Informatique et en Automatique, INRIA, atravs do Projeto METALAU (Mthods, algorithmes


e
e

et logiciels pour lautomatique) e ` Ecole Nationale des Ponts et Chausses, ENPC, Scilab
a
e
e
gratuito (free software) e distribu com o cdigo fonte (open source software). A partir de
e
do
o
maio de 2003, Scilab passou a ser mantido por um consrcio de empresas e instituies francesas
o
co
denominado de Consrcio Scilab.
o
Embora seja apresentado como um software CASCD, Computer Aided Control System
Design - Projeto de Sistemas de Controle Auxiliado por Computador, Scilab pode ser usado
para desenvolvimento ou prototipao de software numrico de propsito geral.
ca
e
o
Este um documento sobre a utilizao e as principais caracter
e
ca
sticas deste ambiente de

programao numrica. E importante ressaltar que as referncias denitivas sobre Scilab so


ca
e
e
a
os manuais que acompanham o software. Por exemplo, podemos citar Introduction to Scilab Users Guide [1], documento no qual este texto se baseia.
O objetivo principal apresentar um texto introdutrio, em portugus, sobre Scilab. Nosso
e
o
e
interesse fazer deste documento um complemento aos textos utilizados em disciplinas como
e

Mtodos Computacionais, Clculo Numrico, Computao Numrica, Algebra Linear Computae


a
e
ca
e
cional e correlatas. Nos interessa, tambm, mostrar que o Scilab uma excelente ferramenta de
e
e
suporte para linhas de pesquisa onde o uso de computadores na resoluo numrica de problemas
ca
e
intensivo.
e
A verso mais recente deste trabalho est dispon
a
a
vel, no formato pdf, em http://www.dca.
ufrn.br/~pmotta. Comentrios ou sugestes podem ser enviados para pmotta@dca.ufrn.br.
a
o

Agradecimentos
A
Ao Klaus Steding-Jessen, pelo L TEX-demo. A maioria das informaes sobre como se faz
co
A
isso em L TEX ? podem ser encontradas no documento escrito pelo Klaus1 ;
Ao Dr. Jesus Olivan Palacios, pelas conversas sobre o Scilab. O Dr. Palacios sintetiza
com brilhantismo as vantagens de se utilizar software livre e de cdigo aberto;
o
Aos colegas, pelas contribuies e sugestes que melhoraram a apresentao deste trabalho.
co
o
ca

Distribuio
ca
Este trabalho pode ser copiado e distribu
do livremente, mantidos os crditos
e
ao seu autor.

A
A
Informaoes sobre o L TEX-demo em particular ou sobre o L TEXem geral podem ser obtidas em http:
c
//biquinho.furg.br/tex-br/

ii

Histrico deste Documento


o
Fevereiro de 1999 - Verso 0.1 - In
a
cio.
Julho de 2001 - Verso 0.2 - Correes e atualizaes.
a
co
co
Julho de 2001 - Verso 0.3 - Correes e atualizaes.
a
co
co
Julho/Novembro de 2001 - Verso 1.0 - Reorganizao do trabalho e correes. Dispoa
ca
co
nibilizao deste documento no site do Scilab - INRIA (http://scilabsoft.inria.fr/
ca
books.html)
Maio/Julho de 2004 - Verso 3.0 - Reorganizao do trabalho, correes e atualizaes. O
a
ca
co
co
Scilab passa a ser mantido pelo Consrcio Scilab a partir de maio de 2003. O nmero da
o
u
verso deste documento passa a ser igual ao nmero da verso do Scilab que ele descreve.
a
u
a

Este trabalho foi totalmente desenvolvido utilizando free ou open source software. O Scilab
verso 3.02 foi instalado, a partir do cdigo fonte, no Linux distribuio Slackware 9.13 , kernel
a
o
ca
ca A
verso 2.4.244 . A digitao L TEX foi feita usando o Xemacs5 . As guras, em jpg foram
a
capturadas usando o GIMP6 verso 1.2.5. O texto completo foi transformado em pdf atravs
a
e
do pdatex.
A mquina utilizada um Pentium MMX 200, 64 MB de RAM com um disco r
a
e
gido de 15
GB.

Pgina
a
Pgina
a
4
Pgina
a
5
Pgina
a
6
Pgina
a
3

do
do
do
do
do

Scilab : http://scilabsoft.inria.fr
Linux distribuio Slackware : http://www.slackware.com
ca
kernel Linux http://www.kernel.org
Xemacs http://www.xemacs.org
GIMP http://www.gimp.org

iii

Sumrio
a
Scilab - Verso 3.0 . . . . .
a
Resumo . . . . . . . . . . .
Agradecimentos . . . . . . .
Distribuio . . . . . . . . .
ca
Histrico deste Documento
o
Sumrio . . . . . . . . . . .
a
Lista de Figuras . . . . . .
Lista de Tabelas . . . . . .
Lista de Cdigos . . . . . .
o

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

. 1
.
i
. ii
. ii
. iii
. iv
. vi
. vii
. viii

1 Introduo
ca

2 O Ambiente Scilab
2.1 Introduo . . . . . . . . . . . . . . .
ca
2.2 O Ambiente Grco do Scilab . . . . .
a
2.3 Variveis Especiais . . . . . . . . . . .
a
2.4 Manipulao de Arquivos e Diretrios
ca
o
2.5 O help do Scilab . . . . . . . . . . . .
2.6 Arquivos com Comandos Scilab . . . .

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

4
4
5
10
11
14
17

3 Operaes Bsicas com Scilab


co
a
19
3.1 Introduo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
ca
3.2 Utilizando as Funes Internas do Scilab . . . . . . . . . . . . . . . . . . . . . . . 23
co
4 Polinmios, Vetores, Matrizes e Listas
o
4.1 Polinmios . . . . . . . . . . . . . . . . . . .
o
4.2 Vetores . . . . . . . . . . . . . . . . . . . . .
4.3 Matrizes . . . . . . . . . . . . . . . . . . . . .
4.4 Acesso a Elementos de Vetores e de Matrizes
4.5 Matrizes com Polinmios . . . . . . . . . . .
o
4.6 Matrizes Simblicas . . . . . . . . . . . . . .
o
4.7 Matrizes Booleanas . . . . . . . . . . . . . . .
4.8 Operaes com Vetores e Matrizes . . . . . .
co
4.9 Listas . . . . . . . . . . . . . . . . . . . . . .

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

25
25
27
31
35
41
43
45
46
53

5 Programao
ca
5.1 Comandos para Iteraes . . .
co
5.1.1 O Loop for . . . . . . .
5.1.2 O Loop while . . . . . .
5.2 Comandos Condicionais . . . .
5.2.1 Comando if-then-else
5.2.2 Comando select-case

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

56
56
56
58
59
60
61

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

iv

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

5.3
5.4

Denindo Scripts . . . . . . . . . . . . . . .
Denindo Funes . . . . . . . . . . . . . .
co
5.4.1 Variveis Globais e Variveis Locais
a
a
5.4.2 Arquivos com Funes . . . . . . . .
co
5.4.3 Comandos Especiais . . . . . . . . .

6 Grcos no Scilab
a
6.1 A Janela de Grcos do Scilab
a
6.2 Grcos Bi-dimensionais . . . .
a
6.2.1 Outros Comandos . . .
6.2.2 Grcos 2D Especiais .
a
6.3 Grcos Tri-dimensionais . . .
a
6.3.1 Grcos 3-D Especiais .
a

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

62
65
66
68
74

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

76
76
77
83
85
86
87

A Instalao do Scilab
ca
89
A.1 Instalao no Linux Slackware - Cdigo Fonte . . . . . . . . . . . . . . . . . . . . 89
ca
o
B Ligao do Scilab com Programas em C
ca
92
B.1 A Ligao Dinmica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
ca
a
C Instalao de Toolboxes
ca
96
C.1 Instalao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
ca
D Funes Pr-denidas - Scilab 3.0
co
e
D.1 Programming . . . . . . . . . . . . . . . . . . . . .
D.2 Graphics Library . . . . . . . . . . . . . . . . . . .
D.3 Elementary Functions . . . . . . . . . . . . . . . .
D.4 Input/Output Functions . . . . . . . . . . . . . . .
D.5 Handling of functions and libraries . . . . . . . . .
D.6 Character string manipulations . . . . . . . . . . .
D.7 GUI and Dialogs . . . . . . . . . . . . . . . . . . .
D.8 Utilities . . . . . . . . . . . . . . . . . . . . . . . .
D.9 Linear Algebra . . . . . . . . . . . . . . . . . . . .
D.10 Polynomial calculations . . . . . . . . . . . . . . .
D.11 General System and Control . . . . . . . . . . . . .
D.12 Robust control toolbox . . . . . . . . . . . . . . . .
D.13 Optimization and simulation . . . . . . . . . . . .
D.14 Signal Processing toolbox . . . . . . . . . . . . . .
D.15 Arma modelisation and simulation toolbox . . . .
D.16 Metanet: graph and network toolbox . . . . . . . .
D.17 Sound le handling . . . . . . . . . . . . . . . . . .
D.18 Language or data translations . . . . . . . . . . . .
D.19 PVM parallel toolbox . . . . . . . . . . . . . . . .
D.20 TdCs . . . . . . . . . . . . . . . . . . . . . . . . . .
D.21 TCL/Tk interface . . . . . . . . . . . . . . . . . .
D.22 Statistic basics . . . . . . . . . . . . . . . . . . . .
D.23 Cumulative Distribution Functions; Inverses, grand
D.24 Identication . . . . . . . . . . . . . . . . . . . . .
D.25 Matlab to Scilab conversion tips . . . . . . . . . .
Referncias Bibliogrcas
e
a

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

99
99
101
104
106
107
108
108
108
109
110
111
112
112
113
114
114
115
115
115
116
116
116
117
117
118
120

Lista de Figuras
2.1
2.2
2.3
2.4
2.5
2.6
2.7
2.8
2.9
2.10

Tela inicial do Scilab no ambiente grco do Linux. . . . . . . . . . . . . . .


a
Tela com as opes de operaes sobre arquivos, File Operations. . . . . .
co
co
Programas de demonstrao, opo Demos , do Scilab 3.0. . . . . . . . . . .
ca
ca
Tela da sub-opo Help browser com navegador padro do Scilab. . . . . . .
ca
a
Tela de congurao para a escolha do navegador do Help do Scilab. . . .
ca
Tela inicial do Scipad, editor incorporado ao Scilab. . . . . . . . . . . . . .
Tela de help para a funo det. . . . . . . . . . . . . . . . . . . . . . . . .
ca
Comando help para a funo det. . . . . . . . . . . . . . . . . . . . . . . .
ca
Texto do help para a funo besselk. . . . . . . . . . . . . . . . . . . . . .
ca
Comando diary para gravao de sesses desenvolvidas no ambiente Scilab.
ca
o

3.1
3.2

Rodando o exemplo de utilizao da funo fft apresentado no help do Scilab. . 23


ca
ca
A funo K de Bessel, besselk. O exemplo apresentado no help da funo
ca
ca
copiado para o editor SciPad, selecionado e executado atravs da sub-opo
e
e
ca
Evaluate Selection Ctrl+y da opo Execute . . . . . . . . . . . . . . . . . . . . 24
ca

5.1

Escrevendo uma funo usando o editor do Scilab. . . . . . . . . . . . . . . . . . 69


ca

6.1
6.2

Janela grca do Scilab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


a
Sa
das para a funo plot2d([x], y). Cada sub-grco refere-se a um dos itens
ca
a
da sesso do Scilab mostrada anteriormente. Observar que os grcos dos Itens
a
a
4 e 5 possuem valores de abcissas diferentes dos demais. . . . . . . . . . . . . . .
Sa
das para a funo plot2d([x], y, <opt_args>). . . . . . . . . . . . . . . . .
ca
Sa
das para a funo subplot(). . . . . . . . . . . . . . . . . . . . . . . . . . . .
ca
A
Exportando grcos para o L TEX. . . . . . . . . . . . . . . . . . . . . . . . . . .
a
Exemplo de sa grca 3-D. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
da a
Exemplos de grcos 3-D especiais. . . . . . . . . . . . . . . . . . . . . . . . . . .
a

6.3
6.4
6.5
6.6
6.7

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

5
6
7
8
8
10
15
15
16
17

76

80
83
85
85
87
88

C.1 Procedimentos para a utilizao do toolbox ANN e help com as funes dispon
ca
co
veis
no toolbox. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98

vi

Lista de Tabelas
2.1

Teclas de edio linhas de comando no prompt do Scilab. . . . . . . . . . . . . . 14


ca

4.1

Sintaxe de alguns operadores usados em operaes vetoriais ou matriciais. . . . . 46


co

5.1

Operadores condicionais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

6.1

Variaes do comando plot2d() . . . . . . . . . . . . . . . . . . . . . . . . . . . 83


co

vii

Lista de Cdigos
o
1
2
3
4
5
6
7

O script que implementa o mtodo de Newton-Raphson para obter


e
Programa principal, implementao do mtodo de Runge-Kutta. .
ca
e
A funo f(x,y). . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ca
A soluo exata da equao diferencial. . . . . . . . . . . . . . . .
ca
ca
Programa para resolver um sistema triangular. . . . . . . . . . . .
O script utilizado para gerar o grco da Figura 6.2. . . . . . . .
a
Funo Runge-Kutta escrita em C. . . . . . . . . . . . . . . . . . .
ca

viii

.
.
.
.
.
.

2.
. .
. .
. .
. .
. .
. .

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

63
70
70
70
74
81
93

Cap
tulo 1

Introduo
ca
Scilab1 um ambiente voltado para o desenvolvimento de software para resoluo de proe
ca
blemas numricos. Scilab foi criado em 1990 por um grupo de pesquisadores do INRIA2 -Institut
e

de Recherche en Informatique et en Automatique e do ENPC3 -Ecole Nationale des Ponts et


Chausses.
e
Desde 1994, quando passou a ser dispon na Internet, Scilab gratuito, free software, e
vel
e
distribu com o cdigo fonte, open source software. Alm da distribuio com o cdigo fonte,
do
o
e
ca
o
existem, tambm, distribuies pr-compiladas do Scilab para vrios sistemas operacionais. Na
e
co
e
a
verso 3.0, na data em que este documento foi escrito, Scilab est dispon para as seguintes
a
a
vel
plataformas:
Plataformas UNIX/Linux:
Scilab 3.0 - arquivo binrio para Linux (scilab-3.0.bin.linux-i686.tar.gz);
a
Scilab 3.0 - arquivo com o cdigo fonte do Scilab (scilab-3.0.src.tar.gz).
o
Plataformas Windows 9X/NT/2000/XP:
Scilab 3.0 - instalador da verso binria do Scilab (scilab3.0.exe);
a
a
Scilab 3.0 - cdigo fonte do Scilab (scilab-3.0.src.zip)
o
A partir de maio de 2003, Scilab passou a ser mantido por um consrcio de empresas e
o
instituies francesas denominado de Consrcio Scilab. Os principais objetivos deste consrcio
co
o
o
so:
a
Organizar a cooperao e o intercmbio entre os desenvolvedores do Scilab objetivando
ca
a
incorporar ao software os ultimos avanos cient

c
cos na rea da computao numrica;
a
ca
e
Organizar a cooperao e o intercmbio entre os usurios do Scilab objetivando fazer com
ca
a
a
que o software possa ser utilizado de maneira mais efetiva na indstria, na educao e na
u
ca
pesquisa, e
Angariar recursos para a manuteno da equipe de desenvolvedores e para garantir um
ca
suporte mais adequado `s necessidades dos usurios.
a
a
Embora seja apresentado pelos seus mantenedores como um software CASCD - Computer
Aided Control System Design - Projeto de Sistemas de Controle Auxiliado por Computador,
1

Pgina do Scilab: http://scilabsoft.inria.fr


a
Pgina do INRIA : http://www.inria.fr
a
3
Pgina do ENPC : http://www.enpc.fr
a
2

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

Scilab um ambiente para desenvolvimento ou prototipao de software numrico de propsito


e
ca
e
o
geral.
O objetivo principal deste trabalho divulgar o ambiente Scilab atravs de um texto escrito
e
e
em portugus. Com este objetivo em mente, a nfase maior dada na apresentao das carace
e
e
ca
ter
sticas do prprio ambiente. Assim, apesar do rigorismo, no h preocupaes excessivas em
o
a a
co
relao aos tipos de problemas tratados ou em relao aos exemplos apresentados. Partimos
ca
ca
do princ
pio que o leitor deste trabalho j possua conhecimentos prticos, mesmo rudimentares,
a
a
sobre programao.
ca
O objetivo secundrio, tambm relevante, mostrar que a utilizao de software livre e de
a
e
e
ca
cdigo aberto, free/open source software, do ponto de vista do usurio, traz grandes vantagens.
o
a
Algumas delas, apresentadas em [2], so:
a
A ultima verso do software est sempre dispon

a
a
vel, geralmente atravs da Internet;
e
O software pode ser legalmente utilizado, copiado, distribu
do, modicado;
Os resultados obtidos podem ser divulgados sem nenhuma restrio;
ca
Os programas desenvolvidos podem ser transferidos para outras pessoas sem imposies
co
ou constrangimentos de quaisquer natureza;
O acesso ao cdigo fonte, evitando surpresas desagradveis;
o
a
O acesso a informao de alta qualidade, e
ca
A certeza de estar participando de uma comunidade cujo principal valor a irrestrita
e
difuso do conhecimento.
a
Existem, ainda, algumas pretenses com a divulgao deste trabalho. Uma delas fao
ca
e
zer deste documento um complemento para os textos utilizados em disciplinas como Mtodos
e

Computacionais, Clculo Numrico, Computao Numrica, Algebra Linear Computacional e


a
e
ca
e
correlatas. Uma outra, mostrar que Scilab uma excelente ferramenta de suporte para lie
e
nhas de pesquisa onde o uso de computadores na resoluo numrica de problemas intensivo.
ca
e
e
A ultima verso deste trabalho encontra-se dispon em http://www.dca.ufrn.br/~pmotta.

a
vel
Comentrios ou sugestes sobre esse documento so sempre benvindas e podem ser enviados
a
o
a
para pmotta@dca.ufrn.br.

E importante ressaltar que as referncias denitivas sobre Scilab permanecem sendo os mae
nuais que acompanham o software. Na data em que este trabalho foi escrito, estavam dispon
veis
na homepage do Scilab os seguintes documentos, [1]:
Introduction to Scilab - manual de introduo ao Scilab, documento no qual este texto
ca
A
se baseia, nos formatos HTML, PDF, Postscript, com os arquivos fontes em L TEX;
Communication Toolbox Documentation - documentao sobre o toolbox de comunicaca
A
ca
o, nos formatos HTML, PDF, Postscript, com os arquivos fontes em L TEX;
Signal Processing - documentao sobre o toolbox de processamento de sinais, nos forca
A
matos PDF, Postscript, com os arquivos fontes em L TEX;
Lmitool: Linear Matrix Inequalities Optimization Toolbox - documentao soca
bre o toolbox de otimizao, nos formatos HTML , PDF, Postscript, com os arquivos fontes
ca
A
em L TEX;
Metanet Users Guide and Tutorial - tutorial sobre a utilizao do toolbox de grafos
ca
A
Metanet, nos formatos HTML, PDF, Postscript, com os arquivos fontes em L TEX;

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

Scicos, documentao sobre o ambiente de simulao do Scilab nos formatos HTML,


ca
ca
A X;
PDF, Postscript, com os arquivos fontes em L TE
Scilabs Internals Documentation - documentao sobre as caracter
ca
sticas internas
A
do Scilab, nos formatos HTML, PDF, Postscript, com os arquivos fontes em L TEX;
HOWTOs Scilab - vrias dicas sobre a utilizao do Scilab, no formato HTML;
a
ca
Scilabs demonstrations - programas de demonstrao de funcionalidades do Scilab,
ca
no formato HTML;
Intersci - documentao sobre a interconexo do Scilab com programas escritos nas
ca
a
linguagens C ou FORTRAN, nos formatos PDF, Postscript, com os arquivos fontes em
A
L TEX, e
Inline help pages - documentao contendo o help de funes do Scilab nos formatos
ca
co
A X.
HTML, PDF, Postscript, com os arquivos fonte em L TE
Este documento, desenvolvido para satisfazer os objetivos estabelecidos em pargrafos prea
cedentes, est dividido em seis Cap
a
tulos e quatro Apndices. Neste Cap
e
tulo, mostramos o
contexto no qual o ambiente Scilab e este trabalho esto inseridos.
a
No Cap
tulo 2, apresentamos uma viso geral das principais caracter
a
sticas do ambiente
Scilab. Descrevemos as suas diversas opes e apresentamos os comandos bsicos utilizados na
co
a
edio de comandos no ambiente Scilab.
ca
No Cap
tulo 3, apresentamos diversos exemplos de manipulaes numricas bsicas que
co
e
a
podem ser realizadas com o software. So enfatizadas operaes com nmeros (reais, complexos)
a
co
u
e dados alguns exemplos de utilizao de funes internas do Scilab.
ca
co
O Cap
tulo 4 dedicado aos vrios tipos de dados que podem ser manipulados pelo Scilab.
e
a
Apresentamos polinmios, vetores, matrizes e listas.
o
No Cap
tulo 5, so dados exemplos de desenvolvimento de programas no Scilab e, nalizando,
a
no Cap
tulo 6, utilizamos comandos do Scilab voltados para a gerao de grcos bi-dimensionais
ca
a
e tri-dimensionais.
No Apndice A, mostramos os procedimentos para a instalao do software, a partir do
e
ca
cdigo fonte, em mquinas com o sistema operacional Linux (a instalao foi realizada em
o
a
ca
uma mquina com distribuio Slackware 9.1, kernel verso 2.4.24). Os procedimentos para a
a
ca
a
instalao das distribuies binrias do Scilab, por serem espec
ca
co
a
cos de cada plataforma, no
a
so apresentados. O usurio aconselhado a buscar estas informaes na pgina do Scilab.
a
a
e
co
a
Descrevemos, ainda, os principais arquivos e diretrios que compem o ambiente Scilab.
o
o
No Apndice B, apresentamos um procedimento que permite executar cdigos escritos em
e
o
linguagem C dentro do ambiente Scilab.
No Apndice C, apresentamos os procedimentos padres para a instalao de toolboxes no
e
o
ca
Scilab.
No Apndice D, apresentamos uma listagem de todas as funes pr-denidas dispon
e
co
e
veis
no ambiente Scilab-3.0.
Por tratar-se de um texto introdutrio, deixamos de apresentar diversas caracter
o
sticas do
ambiente Scilab que, entretanto, podem ser consultadas nos documentos citados anteriormente.
Acreditamos que a maneira mais adequada de ler este documento em frente a um compue
tador com Scilab instalado e funcionando. Os exemplos apresentados e a prpria funcionalidade
o
do software podero, desta forma, ser explorados com maior ecincia.
a
e
Este trabalho pode ser copiado e distribu livremente, dados os devidos crditos ao seu
do
e
autor.

Cap
tulo 2

O Ambiente Scilab
Neste Cap
tulo, apresentamos algumas caracter
sticas do ambiente Scilab em plataforma
grca Linux. Em seguida, mostramos exemplos de manipulao de arquivos e de diretrios a
a
ca
o
partir desse ambiente. O objetivo a familiarizao com o software.
e
ca

2.1

Introduo
ca

Scilab um ambiente de programao numrica bastante ex


e
ca
e
vel. Suas principais caracter
sticas so:
a

1. E um software de distribuio gratuita, com cdigo fonte dispon


ca
o
vel. Sua linguagem
e
simples e de fcil aprendizado;
a
2. Possui um sistema de aux ao usurio, help;
lio
a

3. E um ambiente poderoso para gerao de grcos bi-dimensionais e tri-dimensionais, inca


a
clusive com animao;
ca
4. Implementa diversas funes para manipulao de matrizes. As operaes de concatenaco
ca
co
ca
o, acesso e extrao de elementos, transposio, adio e multiplicao de matrizes so
ca
ca
ca
ca
a
facilmente realizadas;
5. Permite trabalhar com polinmios, funes de transferncia, sistemas lineares e grafos;
o
co
e
6. Apresenta facilidades para a denio de funes;
ca
co
7. Permite o acesso a rotinas escritas nas linguagens FORTRAN ou C;
8. Pode ser acessado por programas de computao simblica como o Maple1 , que um
ca
o
e
software comercial, ou o MuPAD2 , que livre para uso em instituies de ensino/pesquisa;
e
co
9. Suporta o desenvolvimento de conjuntos de funes voltadas para aplicaes espec
co
co
cas,
os chamados toolboxes.
Alm dos toolboxes desenvolvidos pelo Grupo Scilab, outros esto dispon
e
a
veis tambm gratuie
tamente. Para exemplicar, destacamos o ANN (Articial Neural Network Toolbox ), para redes
neurais, o FISLAB (Fuzzy Logic Inference Toolbox ), para lgica difusa, e o FRACLAB (Fractal,
o
Multifractal and Wavelet Analysis Toolbox ), para anlise de sinais utilizando fractais e wavea
lets. No Apndice C, apresentamos os procedimentos necessrios para a instalao do toolbox
e
a
ca
de redes neurais, ANN, no ambiente Scilab.
1
2

Pgina do Maple: http://www.maplesoft.com


a
Pgina do MuPAD: http://www.mupad.de
a

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

Existem trabalhos desenvolvidos tendo Scilab como ferramenta principal como, por exemplo,
o apresentado em [2] e em alguns documentos introdutrios, [3, 4, 5, 6, 7]. Tambm, Scilab,
o
e
atravs de uma extenso chamada de Scilab Paralelo [8], Scilab//, pode ser executado em
e
a
mquinas paralelas ou em redes de estaes de trabalho, as NOWs - Network of Workstations,
a
co
usando as funes do toolbox PVM (Parallel Virtual Machine). Com o Scilab//, processos
co
podem ser ativados, programas podem ser executados em estaes remotas, com comunicao
co
ca
entre eles, e os resultados agregados.
Algumas das funes implementadas no Scilab baseiam-se em bibliotecas bem estabelecidas.
co
Por exemplo3 ,

Funes de Algebra Linear - baseadas nas bibliotecas LINPACK, EISPACK, LAPACK e BLAS
co
Funes para Resoluo de Equaes Diferenciais - baseadas nas bibliotecas ODEPACK,
co
ca
co
SLATEC;
Funes de Otimizao - baseadas na biblioteca MINPACK;
co
ca
entre outras. A adoo de bibliotecas bem estabelecidas contribui para a estabilidade e a
ca
qualidade dos resultados apresentados pelo Scilab.

2.2

O Ambiente Grco do Scilab


a

Aps a realizao dos procedimentos de instalao descritos no Apndice A, podemos comeo


ca
ca
e
c
ar a trabalhar com Scilab. Assumiremos que o software esteja instalado no sistema operacional
Linux. Em uma shell no ambiente grco do Linux4 , basta digitar scilab para comear a
a
c
utilizar o programa. A tela inicial do Scilab apresentada na Figura 2.1.
e

Figura 2.1: Tela inicial do Scilab no ambiente grco do Linux.


a
Na Figura 2.1, observamos que o prompt do Scilab representado por uma seta, --> e que
e
o cursor do Scilab representado pelo s
e
mbolo . Este prompt chamado de prompt inicial
e
3

O cdigo fonte dessas bibliotecas est dispon em http://www.netlib.org


o
a
vel
Scilab pode ser executado, tambm, no ambiente texto do Linux. Basta digitar scilab -nw. No ambiente
e
texto, os grcos que porventura forem gerados, sero apresentados no terminal grco, acess via Ctrl-Alt-F7,
a
a
a
vel
caso este esteja dispon
vel.
4

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

ou prompt de n
vel zero. Ainda na Figura 2.1, podemos observar a existncia de um menu
e
horizontal com seis opes: File , Control , Demos , Graphic Window 0 , Help e Editor .
co
Utilizando o mouse para escolher cada uma das opes, vericamos que:
co
A opo File possui trs sub-opes:
ca
e
co
co
u
File Operations, que permite carregar arquivos, funes e executar o contedo de
arquivos com comandos Scilab, entre outras aes. Na Figura 2.2, apresentamos o
co
Scilab e a tela correspondente ` essa opo.
a
ca
Kill, que permite interromper de maneira abrupta o processamento, saindo do ambiente Scilab.
Quit, que permite sair do ambiente Scilab de forma natural.

Figura 2.2: Tela com as opes de operaes sobre arquivos, File Operations.
co
co
A opo Control , que tambm possui trs sub-opes:
ca
e
e
co
ca
o
e
Resume - continua a execuo aps uma pause ter sido dada atravs de um comando
em uma funo ou atravs de Stop ou Ctrl-c.
ca
e
Abort - aborta a execuo aps uma ou vrias pause, retornando ao prompt inicial.
ca
o
a
ca
Stop - interrompe a execuo do Scilab e entra em modo pause. No prompt, equivale
a um Ctrl-c.
Essas operaes so mostradas na sesso Scilab:
co
a
a
-->

// Ctrl-c no prompt inicial

-1->

// leva ao prompt de primeiro nivel

-1->

// Ctrl-c no prompt de primeiro nivel

-2->

// leva ao prompt de segundo nivel

-2->resume

// retorna ao prompt de primeiro nivel

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

-1->resume

// retorna ao prompt inicial

-->

// Ctrl-c

-1->

// Ctrl-c

-2->

// Ctrl-c

-3->abort

// retorna ao promtp inicial

-->
No Scilab, os comentrios sempre comeam com os caracteres //, como foi mostrado no
a
c
exemplo anterior.
A opo Demos - permite executar os vrios programas de demonstrao que acompaca
a
ca
a
nham a distribuio Scilab. Na Figura 2.3, so apresentados os programas de demonstraca

ca
o dispon
veis no Scilab verso 3.0. E interessante, e muito importante, em um primeiro
a
contato com o programa, executar algumas dessas rotinas de demonstrao.
ca

Figura 2.3: Programas de demonstrao, opo Demos , do Scilab 3.0.


ca
ca
A opo Graphics Window N permite manipular janelas grcas. Aqui, N representa a
ca
a
janela grca que est sendo utilizada. Ao inicializar, Scilab utiliza N = 0, signicando
a
a
que Graphics Window 0 a primeira janela grca ou a janela grca default. Esta
e
a
a
opo possui cinco sub-opes:
ca
co
Set (Create) Window
Raise (Create) Window
Delete Graphics Window - permite apagar uma janela grca,
a
+ - passa para a prxima janela grca {N+1}.
o
a
- - retorna para a janela grca anterior {N-1}.
a
A opo Help permite obter informaes sobre as diversas funes e comandos do Scilab.
ca
co
co
Essa opo possui trs sub-opes:
ca
e
co
Help browser - ativa o navegador default do Scilab. Esse navegador carrega os
textos com o help das funes implementadas no Scilab, seus toolboxes e eventuais
co
toolboxes instalados pelo usurio (ver Apndice C). O navegador de help tambm
a
e
e

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

pode ser ativada diretamente no prompt do Scilab. Usando o mouse na sub-opo


ca
Help browser temos a tela de help mostrada na Figura 2.4 com o navegador padro
a
do Scilab.

Figura 2.4: Tela da sub-opo Help browser com navegador padro do Scilab.
ca
a
Apropos - ativa uma janela onde pode ser digitada uma palavra chave do assunto
sobre o qual se deseja algum tipo de aux
lio. Essa opo tambm pode ser ativada
ca
e
diretamente no prompt do Scilab.
ca
Configure - permite que seja escolhido um outro navegador em substituio ao navegador default do help do Scilab. A Figura 2.5 mostra as opes de navegadores
co
para a verso 3.0 do Scilab.
a

Figura 2.5: Tela de congurao para a escolha do navegador do Help do Scilab.


ca
Para Scilab verso 3.0, o help est dispon para os seguintes conjuntos de funes:
a
a
vel
co
Programming - conjunto de comandos que podem ser utilizados na programao com
ca
o Scilab;
Graphic Library - conjunto de comandos grcos;
a
Elementary Functions - conjunto de funes elementares;
co
Input/Output Functions - conjunto de funes para entrada e sa de dados;
co
da

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

Handling of functions and libraries - conjunto de funes para manipulao


co
ca
de funes e bibliotecas;
co
Character string manipulations - conjunto de funes para manipulao de strings;
co
ca
GUI and Dialogs - conjunto de funes que permitem a criao de dilogos (menus,
co
ca
a
por exemplo);
Utilities - conjunto de funes com utilidades diversas;
co
Linear Algebra - conjunto de funes usadas em lgebra linear;
co
a
Polynomial calculations - conjunto de funes usadas em clculos com polinco
a
o
mios;
co
a
General System and Control - conjunto de funes na rea de controle;
Robust control toolbox - conjunto de funes do toolbox de controle robusto;
co
Optimization and simulation - biblioteca de funes no-lineares para utilizao
co
a
ca
em otimizao e simulao;
ca
ca
Signal Processing toolbox - conjunto de funes do toolbox de processamento de
co
sinais;
Arma modelization and simulation toolbox - conjunto de funes do toolbox para
co
modelamento e simulao ARMA-Autoregressive Moving Average;
ca
Metanet: graph and network toolbox - conjunto de funes do toolbox Metanet
co
para anlise de grafos;
a
Scicos: Bloc diagram editor and simulator - conjunto de funes para modeco
lagem e simulao de sistemas dinmicos;
ca
a
Sound file handling - conjunto de funes para manipulao de arquivos de som;
co
ca
Language or data translations - conjunto de funes para converso de dados
co
a
entre o Scilab e alguns aplicativos;
PVM parallel toolbox - conjunto de funes que permitem o gerenciamento da
co
comunicao com outras aplicaes usando mquinas paralelas virtuais;
ca
co
a
TdCs - conjunto de funes com utilidades diversas;
co
TCL/Tk interface - conjunto de funes que permitem a interface com as linguagens
co
TCL/Tk;
Statistic basics - conjunto de funes para clculos estat
co
a
sticos;
Cumulative Distribution Functions; Inverse, grand - conjunto de funes de
co
distribuio cumulativa, inversa e geradora de nmeros randmicos;
ca
u
o
Identification - conjunto de funes para tratamento de sistemas discretos;
co
Matlab to Scilab conversion tips - conjunto de funes para a converso de
co
a
arquivos de programas Matlab em Scilab.
A opo Editor permite utilizar o editor incorporado ao Scilab, chamado SciPad, para
ca
escrever comandos e funes. Na Figura 2.6, apresentamos a tela inicial do editor SciPad.
co

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

10

Figura 2.6: Tela inicial do Scipad, editor incorporado ao Scilab.


Algumas funes do editor do Scilab sero exploradas em Cap
co
a
tulos subseqentes.
u

2.3

Variveis Especiais
a

Existem variveis que assumem valores pr-denidos no Scilab. Elas podem ser vistas atravs
a
e
e
do comando who. Essas variveis so protegidas e no podem ser apagadas. Algumas destas
a
a
a
variveis so pr-xadas com o caracter %. A sa do comando who, logo aps o Scilab 3.0 ter
a
a
e
da
o

sido inicializado, mostrada em seguida. E conveniente lembrar que, no prompt do Scilab, os


e
comandos so interpretados e executados aps o usurio pressionar a tecla Enter.
a
o
a
-->who
your variables are...
%scipad_fontsize
show_startupinfo
LCC
%toolboxes_dir
%toolboxes
scicos_pal
%scicos_menu
%scicos_short
%scicos_help
%scicos_display_mode
modelica_libs
scicos_pal_libs
with_gtk with_tk
demolist
%helps
LANGUAGE SCI
MSDOS
home
PWD
TMPDIR
xdesslib with_texmacs
percentlib
polylib
intlib
elemlib
utillib
statslib alglib
siglib
optlib
autolib
roblib
soundlib metalib
armalib
tkscilib tdcslib
s2flib
mtlblib
%F
%T
%z
%s
%nan
%inf
COMPILER %gtk
%pvm
%tk
$
%t
%f
%eps
%io
%i
%e
using
15025 elements out of
1000000.
and
60 variables out of
9231
your global variables are...
LANGUAGE %helps
demolist %browsehelp
%scipad_fontsize
using
1097 elements out of
11000.
and
8 variables out of

%toolboxes

%toolboxes_dir

LCC

767

-->

A varivel %i representa o resultado de


a

( 1), %pi a varivel que representa =


e
a

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

11

3, 1415926. . . , e %e a varivel que representa a constante de Euler e = 2.7182818. . . . Uma


e
a
outra varivel pr-denida %eps que representa a preciso da mquina na qual Scilab est
a
e
e
a
a
a
instalado (%eps o maior nmero para o qual 1+%eps = 1). So pr-denidas, ainda, as
e
u
a
e
variveis %inf que signica Innito e %nan que signica No um Nmero, NotANumber.
a
a e
u
A varivel %s denida pelo comando s = poly(0, s). No Scilab so denidas, tambm,
a
e
a
e
variveis com valores booleanos: %T signicando verdadeiro (true) e %F signicando falso
a
(false).
Scilab tambm carregado com algumas funes pr-denidas, chamadas de funes primie e
co
e
co
tivas ou funes intr
co
nsecas5 . No Cap
tulo 3, apresentamos alguns exemplos de utilizao dessas
ca
funes.
co
Ateno especial deve ser dada `s variveis SCI e PWD. Elas representam, respectivamente, o
ca
a
a
6 e o diretrio no qual o Scilab foi lanado e est rodando.
diretrio no qual o Scilab foi instalado
o
o
c
a
A varivel home possui valor idntico ao da varivel PWD.
a
e
a
-->SCI
SCI =

// Diretorio onde Scilab foi instalado

/usr/local/scilab-3.0
-->PWD
PWD =

// Diretorio onde Scilab foi lancado

/home/paulo
-->home
home =

// Mesmo valor da variavel PWD

/home/paulo
-->
As variveis pr-denidas e protegidas esto no arquivo de inicializao SCI/scilab.star.
a
e
a
ca
Se desejar, o usurio pode pr-denir as suas prprias variveis e, depois, coloc-las no arquivo
a
e
o
a
a
.scilab localizado na sua rea de trabalho.
a
Como mostrado nos exemplos anteriores, os comentrios sempre comeam com os caracteres
a
c
//. Tambm, importante salientar que os comentrios (e os nomes das variveis e funes
e
e
a
a
co

utilizadas no Scilab) NAO devem ter qualquer tipo de acentuao.


ca

2.4

Manipulao de Arquivos e Diretrios


ca
o

Scilab possui funes que podem ser utilizadas para manipular arquivos e diretrios. A
co
o
funo pwd, no confundir com a varivel PWD da seo anterior, mostra o diretrio no qual
ca
a
a
ca
o
estamos trabalhando. Assim,
-->pwd
ans

// Mostra o diretorio de trabalho

/home/paulo
5
6

Ver Apndice D para a listagem dessas funes.


e
co
Ver Apndice A.
e

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

12

-->
Usando a funo chdir, mudamos para o diretrio de trabalho teste,
ca
o
-->chdir(teste)
ans =

// Mudando o diretorio de trabalho

0.
-->
Uma observao importante: para Scilab, uma resposta igual a 0 (zero) para determinados
ca

tipos de comandos indica que a ao foi realizada com sucesso. E o caso da resposta 0 obtida
ca
quando do comando chdir(teste).
Por termos mudado de diretrio de trabalho, o valor de retorno da funo pwd foi alterado
o
ca
mas o valor da varivel PWD permanece inalterada, como podemos vericar pela seqncia de
a
ue
comandos,
-->pwd
ans =

// Mostrando o novo diretorio de trabalho

/home/paulo/teste
-->PWD
PWD =

// PWD permanece inalterado.

/home/paulo
-->
As variveis criadas durante os trabalhos realizados no ambiente Scilab podem ser armazea
nadas em um arquivo. Vamos considerar as variveis,
a
-->a = 1
a =
1.
-->b = 2
b =
2.
-->
Para salvar as variveis a e b em um arquivo, que chamamos de dados.dat, usamos o
a
comando save com a sintaxe
-->save(dados.dat,a,b)
-->

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

13

O comando save cria o arquivo dados.dat no diretrio de trabalho. O arquivo dados.dat


o
um arquivo binrio. Para recuperar os valores de a e b, usamos o comando load, conforme
e
a
mostrado no exemplo,
-->clear

// Eliminando as variaveis nao protegidas

-->a
!--error
4
undefined variable : a

-->b
!--error
4
undefined variable : b
-->load(dados.dat,a,b)
-->a, b
a =

1.
=
2.

-->
Neste exemplo, o comando clear elimina todas as variveis no protegidas do ambiente
a
a
Scilab. Por esse motivo, as variveis a e b, denidas anteriormente, quando chamadas aps
a
o
clear, fazem com que Scilab apresente a mensagem de error undefined variable, varivel
a
indenida. Em seguida, atravs do comando load, as variveis so lidas do arquivo dados.dat
e
a
a
e retomam seus valores originais, passando novamente a existirem no ambiente Scilab.
A funo unix_w permite a comunicao do Scilab com a shell Linux (Unix). Usando esta
ca
ca
funo, as respostas so apresentadss na prpria janela do Scilab.
ca
a
o
-->pwd
ans =
/home/paulo/teste
-->unix_w(ls)
Makefile
Relatorio.pdf
app
app.c
app.o
chromosome.c
chromosome.h
chromosome.o

// Mostrando o conteudo de /home/paulo/teste

-->unix_w(mkdir outro_dir)

// Criando o diretorio outro_dir

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a
-->unix_w(ls)
Makefile
Relatorio.pdf
app
app.c
app.o
chromosome.c
chromosome.h
chromosome.o
outro_dir

14

// outro_dir aparece na listagem

-->chdir(outro_dir)
ans =

// Mudando de diretorio

0.
-->pwd
ans =
/home/paulo/teste/outro_dir
-->
Os comandos digitados a partir do prompt do Scilab podem ser editados. Na Tabela 2.1,
mostramos algumas combinaes de teclas que permitem esta edio.
co
ca
Ctrl-p ou
Ctrl-n ou
Ctrl-b ou
Ctrl-f ou
Delete ou
Ctrl-h
Ctrl-d
Ctrl-a
Ctrl-e
Ctrl-k
Ctrl-u
!prev

recupera o comando digitado anteriormente


recupera o comando seguinte (se houver)
move o cursor um caracter para trs
a
move o cursor um caracter para a frente
apaga o caracter anterior (tecla backspace)
mesmo efeito da linha anterior
apaga o caracter sob o cursor
move o cursor para o in da linha
cio
move o cursor para o nal da linha
apaga da posio do cursor at o nal da linha
ca
e
cancela a linha
recupera a linha de comando que comea com prev
c

Tabela 2.1: Teclas de edio linhas de comando no prompt do Scilab.


ca

2.5

O help do Scilab

A qualquer momento, o usurio pode obter informaes sobre as funes internas do Scilab
a
co
co
digitando o comando help diretamente no prompt ou accessando a sub-opo Help browser do
ca
menu Help , como descrito anteriormente. Por exemplo, vamos usar o comando help na linha
de comando do Scilab para obter informaes sobre a funo det, que calcula o determinante
co
ca
de uma matriz. Temos, ento,
a
-->help

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

15

O comando help ativar o navegador de help com um menu contendo as fam


a
lias das funes
co
dispon
veis, como foi visto na Figura 2.4 anterior. A funo que calcula o determinante de uma
ca

matriz pertence ` familia das funes de Algebra Linear, indicada por Linear Algebra na tela
a
co
ca
co
da Figura 2.4. Escolhendo-se a funo det tem-se as informaes desejadas. Todo esse processo
est resumido na tela apresentada na Figura 2.7.
a

Figura 2.7: Tela de help para a funo det.


ca
O mesmo efeito conseguido digitando-se o comando
e
-->help det
diretamente no prompt do Scilab, como podemos vericar na Figura 2.8

Figura 2.8: Comando help para a funo det.


ca
Outro exemplo, agora com uma funo pertencente ` fam de Funes Elementares, Eleca
a
lia
co
mentary Functions, serve para ilustrar a quantidade (e a qualidade) das informaes presentes
co
no help do Scilab. Escolhemos a funo modicada de Bessel de segunda ordem, K (x), impleca
mentada no Scilab atravs da funo besselk, cujo texto de help reproduzimos na Figura 2.9.
e
ca

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

16

Scilab Function
besselk - Modified Bessel functions of the second kind (K sub alpha).
Calling Sequence
y = besselk(alpha,x)
y = besselk(alpha,x,ice)
Parameters
x : real vector with non negative entries
alpha : real vector with non negative entries regularly spaced with increment equal to one
alpha=alpha0+(n1:n2)
ice : integer flag, with default value 1
Description
besselk(alpha,x)

computes modified Bessel functions of the second kind (K sub alpha), for real,
non-negative order alpha and argument x . alpha and x may be vectors.
The output is m -by- n with m = size(x,*) ,
n = size(alpha,*) whose (i,j) entry is besselk(alpha(j),x(i)) .

K_alpha and I_alpha (see


besseli ) modified Bessel functions are 2
independant solutions of the modified Bessel s differential equation :
2
2
2
x y" + x y - (x + alpha ) y = 0 ,
If

ice

alpha >= 0

is equal to 2 exponentialy scaled Bessel functions is computed (K_alpha_scaled(x) = exp(x) K_alpha(x)).

Examples
// example : display some K bessel functions
x = linspace(0.01,10,5000);
y = besselk(0:4,x);
ys = besselk(0:4,x,2);
xbasc()
subplot(2,1,1)
plot2d(x,y, style=2:6, leg="K0@K1@K2@K3@K4", rect=[0,0,6,10])
xtitle("Some modified bessel functions of the second kind")
subplot(2,1,2)
plot2d(x,ys, style=2:6, leg="K0s@K1s@K2s@K3s@K4s", rect=[0,0,6,10])
xtitle("Some modified scaled bessel functions of the second kind")
See Also
besselj

besseli

bessely

Author
W. J. Cody, L. Stoltz (code from Netlib (specfun))

Figura 2.9: Texto do help para a funo besselk.


ca
Como podemos observar, no texto do help esto especicados:
a
O nome da funo, como implementado pelo Scilab;
ca
O(s) comando(s) de chamada da funo, Calling Sequence;
ca
Os parmetros da funo, Parameters;
a
ca
Uma descrio da funo implementada, Description;
ca
ca
Exemplos de utilizao da funo, Examples;
ca
ca
Funes relacionadas, See Also, e neste caso,
co
Autor da funo, Author.
ca

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

2.6

17

Arquivos com Comandos Scilab

Como vimos, o comando save pode ser utilizado para armazenar variveis em um arquivo
a
binrio. Essas variveis podem ser recuperadas atravs da utilizao do comando load.
a
a
e
ca
Alm do armazenamento de variveis, Scilab permite que os comandos digitados em seu
e
a
ambiente durante uma sesso sejam armazenados em um arquivo, construindo uma espcie
a
e
de memria de clculos. O armazenamento dos comandos feito atravs da utilizao do
o
a
e
e
ca
comando diary(nome_do_arquivo).
Na Figura 2.10 mostramos um exemplo da utilizao do comando diary para armazenar
ca
uma sesso de utilizao do ambiente Scilab. Neste exemplo, atravs do comando
a
ca
e
-->diary(memoria-09072004)
instru
mos o Scilab para armazenar todos os comandos subseqentes em um arquivo chamado
u
memoria-09072004. O armazenamento dos comandos ser realizado at que seja executado o
a
e
comando
--diary(0)
O comando diary(0) fecha o arquivo memoria-09072004.

Figura 2.10: Comando diary para gravao de sesses desenvolvidas no ambiente Scilab.
ca
o
O arquivo memoria-09072004 um arquivo texto puro,
e
paulo@none:~$ cat memoria-09072004
-->// Todos os comandos digitados serao armazenados no arquivo
-->// memoria-09072004
-->a = 1; b = 2; c = 3;
-->a + b
ans =

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

18

3.
-->b * c
ans =
6.
-->diary(0)
paulo@none:~$
podendo, portanto, ser editado.
No Cap
tulo sobre programao, veremos novos tipos de arquivos de comandos do Scilab.
ca
Neste Cap
tulo, apresentamos as principais caracter
sticas do ambiente Scilab. No prximo
o
Cap
tulo, exploramos um pouco mais esse ambiente atravs da realizao de algumas operaes
e
ca
co
bsicas envolvendo grandezas reais e complexas e da utilizao de funes pr-denidas do
a
ca
co
e
Scilab.

Cap
tulo 3

Operaes Bsicas com Scilab


co
a
Scilab um ambiente para resoluo de problemas numricos.
e
ca
e
A interao do usurio com o Scilab pode ocorrer de duas formas distintas. Na primeira, os
ca
a
comando so digitados diretamente no prompt do Scilab. Ao ser pressionada a tecla enter, os
a
comandos digitados so interpretados e imediatamente executados. Neste modo de utilizao,
a
ca
Scilab funciona como uma sosticada e poderosa calculadora. Na segunda forma, um conjunto
de comandos digitado em um arquivo texto. Este arquivo, em seguida, levado para o ambiente
e
e
Scilab e executado. Neste modo, o Scilab funciona como um ambiente de programao.
ca
Neste Cap
tulo, apresentamos algumas caracter
sticas do ambiente grco do Scilab. Atravs
a
e
de alguns exemplos de operaes que podem ser realizadas em linha de comando, mostramos o
co
Scilab funcionando como uma sosticada calculadora.
Scilab como ambiente de programao apresentado no Cap
ca e
tulo 5.

3.1

Introduo
ca

No Scilab, o ponto-e-v
rgula no nal de um comando inibe a apresentao de seu resultado.
ca
Alguns exemplos,
-->// O ponto-e-virgula suprime a apresentacao do resultado
-->A = 1;

// a variavel A assume o valor 1

-->b = 2;

// atribuindo a variavel b o valor 2

-->A + b
ans =

// Adicao de A e b

3.
-->
Uma observao importante: Scilab case sensitive. Assim, por exemplo, a varivel incr
ca
e
a
e
diferente das variveis INCR, Incr ou INcr.
a
As grandezas no Scilab tambm podem ser complexas. Para atribuir ` varivel A o valor
e
a
a
complexo 5 + 2i e ` varivel B o valor complexo 2 + i, fazemos
a
a
-->A = 5 + 2 * %i
A =

// Atribuindo a A o valor 5 + 2i

19

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

20

5. + 2.i
-->B = -2 + %i
B =

// Atribuindo a B o valor -2 + i

- 2. + i
-->
Observar que a no utilizao do ponto-e-v
a
ca
rgula no nal dos comandos de atribuio perca
mitiu a apresentao do resultado de cada comando.
ca
As variveis complexas A e B podem ser multiplicadas, divididas, somadas ou subtra
a
das,
como mostramos a seguir.
--> // Operacoes com variaveis complexas
-->A * B
ans =

// Multiplicacao

- 12. + i
-->A / B
ans =

// Divisao

- 1.6 - 1.8i
-->A + B
ans =

// Adicao

3. + 3.i
-->A - B
ans =

// Subtracao

7. + i
-->

E importante observar que a resposta ao uso da funo interna sqrt() com argumento
ca
negativo inclui o nmero complexo i = sqrt(-1). Por exemplo,
u
-->sqrt(-2)
ans =

// Funcao raiz quadrada com argumento negativo

1.4142136i
-->

E poss digitar vrios comandos em uma mesma linha,


vel
a
-->m = 1.5; b = 35; c = 24;
-->

// Varios comandos em uma unica linha

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

21

Tambm poss
e e
vel desdobrar um unico comando em vrias linhas utilizando ... ao nal

a
do comando. Por exemplo,
-->A = 3 * m ^ 2 + ...
-->
4 * 5 + ...
-->
5 * 3
A =

// Um comando em varias linhas

41.75
-->
Um vetor de
ndices possui a forma geral
Variavel = valor_inicial:incremento:valor_final
Por exemplo, atravs do comando I=1:3 atribu
e
mos os valores 1, 2, e 3 ` varivel I.
a
a
Quando no especicado, incremento igual a 1. Assim,
a
e
-->I = 1:3
I =
!

1.

2.

// Definindo I como um vetor com 3 posicoes

3. !

-->j = 1:2:5
j =
!

1.

3.

// Indice j com incremento igual a 2

5. !

-->
O valor do incremento pode ser negativo,
-->k = 5:-1:1
k =
!

5.

4.

// Definindo k como um vetor com 5 posicoes

3.

2.

1. !

-->
No Scilab existe o conceito de ambientes denidos via uma hierarquia de prompts. Muda-se
de ambiente atravs do comando pause ou atravs de Ctrl-c. Todas as variveis denidas
e
e
a
no primeiro ambiente so vlidas no novo ambiente. Observar que a mudana de ambiente
a a
c
modica a forma de apresentao do prompt. Este passa a indicar o ambiente no qual esto
ca
a
sendo efetuados os comandos. O retorno ao ambiente anterior d-se atravs da utilizao dos
a
e
ca
comandos resume ou return. Com este tipo de retorno, perde-se as variveis denidas no
a
ambiente anterior. A utilizao de ambientes importante para a realizao de testes.
ca
e
ca
No exemplo a seguir, atribu
mos a a o valor 1.5 e, atravs do comando pause, mudamos de
e
ambiente.
-->// Definindo a e mudando de ambiente
-->a = 1.5; pause
-1-> // Mudanca no prompt

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

22

Observar que houve uma mudana no formato do prompt. A varivel a, denida no ambiente
c
a
anterior, ainda vlida no novo ambiente, como podemos vericar atravs da seqncia de
e a
e
ue
comandos,
-1->a
a =
1.5
-1->
Vamos denir, no novo ambiente, a varivel b igual a 2.5,
a
-1->// Definindo b no novo ambiente
-1->b = 2.5;
-1->// Mostrando a e b no novo ambiente
-1->a, b
a =

1.5
=
2.5

-1->
O retorno ao ambiente anterior usando o comando resume faz com que a varivel b que
a
indenida,
// Retornando ao ambiente anterior
-1->resume

// Pode ser usado o comando return

--> // Mostrando a e b. Observar que a variavel b foi perdida


-->a, b
a =
1.5
!--error
4
undefined variable : b
O valor da varivel b pode ser preservado no ambiente original atravs da seqncia de
a
e
ue
comandos,
-->a = 1.5
a =
1.5

// Definindo a variavel a no ambiente original

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a
-->pause

// Mudando de ambiente

-1->b = 1.5
b =

23

// Definindo a variavel b no novo ambiente

1.5
-1->b = resume(b) // Enviando b para o ambiente original
-->a, b
a =
1.5
=

1.5
-->

3.2

Utilizando as Funes Internas do Scilab


co

O Scilab carregado com algumas funes pr-denidas1 . Como vimos no Cap


e
co
e
tulo anterior,
e
na Figura 2.9, o help do Scilab explica cada uma delas e, tambm, apresenta exemplos de sua
utilizao.
ca
Uma maneira de vericar a forma de utilizao e o comportamento de uma determinada
ca
funo interna do Scilab usando o exemplo que o prprio help do Scilab apresenta. Neste
ca
e
o
caso, basta copiar o exemplo de uso da funo apresentado no help para o ambiente do Scilab2 .
ca
Na Figure 3.1, mostramos como esse procedimento funciona usando a funo fft do toolbox de
ca
Processamento de Sinais, Signal Processing toolbox, que acompanha o Scilab.

Figura 3.1: Rodando o exemplo de utilizao da funo fft apresentado no help do Scilab.
ca
ca
1
2

Ver Apndice D para a listagem dessas funes.


e
co
Especicamente, o processo consiste em copiar do ambiente help e colar no ambiente Scilab.

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

24

Os exemplos apresentados no help tambm podem ser executados atravs de uma facilidade
e
e
implementada no editor SciPad, incorporado ao Scilab. Neste caso, o exemplo deve ser copiado
do ambiente help e colado no ambiente do Editor. Depois, no Editor, o exemplo deve ser
selecionado, atravs do mouse, para ser executado usando a sub-opo Evaluate Selection Ctrl+y
e
ca
da opo Execute apresentada no menu do Editor. Esses procedimentos, e seus resultados,
ca
com os exemplos fornecidos pelo help para a funo besselk, apresentados na Figura 2.9, so
ca
a
mostrados na Figura 3.2.

Figura 3.2: A funo K de Bessel, besselk. O exemplo apresentado no help da funo copiado
ca
ca e
para o editor SciPad, selecionado e executado atravs da sub-opo Evaluate Selection Ctrl+y
e
ca
da opo Execute .
ca
O usurio interessado convidado a repetir os procedimentos apresentados nessa sesso
a
e
a
utilizando outras funes do Scilab.
co
Neste Cap
tulo, apresentamos algumas operaes bsicas envolvendo grandezas reais e comco
a
plexas e exemplos de utilizao de funes pr-denidas no Scilab. No Cap
ca
co
e
tulo 4, mostramos
os outros tipos de dados que podem ser manipulados pelo Scilab.

Cap
tulo 4

Polinmios, Vetores, Matrizes e


o
Listas
No Scilab, podemos trabalhar com vrios tipos de dados. As constantes, reais ou complexas,
a
as variveis booleanas, os polinmios, as strings e as fraes envolvendo polinmios so consia
o
co
o
a
derados dados escalares. Com estes objetos podemos denir vetores e matrizes. Os outros tipos
de dados reconhecidos pelo Scilab so as listas e as listas com denio de tipo. O objetivo
a
ca
deste Cap
tulo apresentar alguns exemplos de utilizao de cada um desses tipos de dados.
e
ca

4.1

Polinmios
o

Os polinmios so criados no Scilab atravs da utilizao da funo poly. Salientamos que


o
a
e
ca
ca
polinmios de mesma varivel podem ser somados, subtra
o
a
dos, multiplicados e divididos entre
si. Por exemplo, o polinmio p = s2 3s + 2, que possui ra
o
zes 1 e 2, pode ser criado atravs
e
do comando,
-->// Polinomio definido pelas suas raizes
-->p = poly([1 2], s)
p =
2
2 - 3s + s
-->
Com a funo roots, comprovamos que as ra
ca
zes de p so, realmente, 1 e 2,
a
-->roots(p)
ans =
!
!

1. !
2. !

-->
Um polinmio tambm pode ser criado a partir da especicao de seus coecientes. Por
o
e
ca
exemplo, o polinmio q = 2s + 1 criado atravs do comando,
o
e
e
-->// Polinomio definido pelos seus coeficientes

25

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

26

-->q = poly([1 2], s, coeff)


q =
1 + 2s
-->roots(q)
ans =

// Obtendo as raizes do polinomio q

- 0.5
-->
Para complementar o exemplo, os dois polinmios podem ser multiplicados, divididos, soo
mandos ou subtra
dos como mostra a seqncia de comandos,
ue
-->p * q
ans =

// Multiplicacao

2
3
2 + s - 5s + 2s
-->p / q
ans =

// Divisao

2
2 - 3s + s
---------1 + 2s
-->[r, q] = pdiv(p,q)
q =

// Efetuando a divisao: q=quociente, r=resto

- 1.75 + 0.5s
r =
3.75
-->p + q
ans =

// Adicao

2
3 - s + s
-->p - q
ans =

// Subtracao

2
1 - 5s + s
-->
Para obter valores de polinmios, usamos a funo horner,
o
ca

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

27

-->x = poly(0, x)
x =
x
-->p = x^2 - 3*x + 5
p =

// definindo o polinomio

2
5 - 3x + x
-->horner(p, 2)
ans =

// avaliando o polinomio em x = 2

3.
-->

4.2

Vetores

Vamos considerar o conjunto dos nmeros reais1 . Dizemos que x um vetor de dimenso
u
e
a
n em , indicado por x n , se, e somente se,

x1
x2

x= .
.
.

xn
Nessa denio, cada um dos elementos do vetor x, xi , pertence a
ca
xi

R,

O elemento xi o i-simo elemento do vetor x.


e
e
O vetor x denido anteriormente um vetor coluna. Para explicitar esta condio, escrevee
ca
mos
x n1

Essa notao indica que o vetor x possui n linhas e apenas uma coluna.
ca
No Scilab, os vetores so criados colocando-se seus componentes entre colchetes, [ ]. Os
a
elementos de um vetor coluna so separados por ponto-e-v
a
rgula. Assim,
-->x = [ 1; 2; 3]
x =
!
!
!

// vetor coluna. Elementos separados por ;

1. !
2. !
3. !

-->

C.

Todas as consideraes sobre vetores e matrizes podem ser estendidas para o conjunto dos nmeros complexos,
co
u

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a
Um vetor linha, y, de dimenso n em
a

28

R pode ser escrito na forma

y = y1 , y 2 , . . . , y n
Para explicitar a condio de vetor linha, escrevemos
ca
y

R1n

Essa notao indica que o vetor y possui apenas uma linha e n colunas.
ca
No Scilab, os componentes de um vetor linha so separados por espao ou por v
a
c
rgula.
-->y = [ 1 2 3]
y =
!

1.

2.

// vetor linha; Elementos separados por espaco

3. !

-->z = [ 4, 5, 6]
z =
!

4.

5.

// vetor linha; Elementos separados por virgula

6. !

-->
Se x um vetor coluna, xT (l-se x transposto) um vetor linha. Essa operao realizada
e
e
e
ca e
no Scilab atravs da utilizao do s
e
ca
mbolo (apstrofo).
o
-->x = [1; 2; 3]
x =
!
!
!

// vetor coluna

1. !
2. !
3. !

-->x
ans =
!

1.

// x transposto = vetor linha

2.

3. !

-->
Vetores podem ser multiplicados ou divididos por quantidades escalares. Tambm, vetoe
res de mesma dimenso podem ser somados ou subtra
a
dos. Para exemplicar algumas dessas
operaes, vamos considerar os vetores:
co


1
4
x = 2
e
y = 5
3
6
Observar que os dois vetores possuem a mesma dimenso, isto , x, y
a
e
-->x = [ 1; 2; 3]
x =
!

1. !

// Definindo o vetor x

R31. Temos,

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a
!
!

29

2. !
3. !

-->y = [ 4; 5; 6]
y =
!
!
!

// Definindo o vetor y

4. !
5. !
6. !

-->size(x)
ans =
!

3.

1. !

-->size(y)
ans =
!

3.

// Dimensao do vetor x

// Dimensao do vetor y

1. !

-->
-->3 * x
ans =
!
!
!

// Multiplicando o vetor x por uma constante

3. !
6. !
9. !

-->x / 2
ans =
!
!
!

// Dividindo o vetor x por uma constante

0.5 !
1. !
1.5 !

-->x + y
ans =
!
!
!

// Somando os dois vetores

5. !
7. !
9. !

-->
Dados dois vetores de mesma dimenso, x, y
a
interno entre x e y atravs da expresso vetorial,
e
a

Rn1, dene-se o produto escalar ou produto

z = xT y
Assim, considerando os vetores x e y denidos anteriormente, temos:
-->z = x * y
z =

// Atribuindo a z o produto escalar entre x e y

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

30

32.
-->
Observar que essa operao, em uma linguagem convencional, teria que ser realizada atravs
ca
e
de uma rotina que implementasse a operao (escalar):
ca
n

z=

xi yi
i=1

Se os vetores x e y possuem dimenses diferentes, isto , x m1 e y


o
e
denir o produto vetorial ou produto externo entre eles atravs da expresso,
e
a

Rn1, podemos

C = xyT
Vamos considerar

1
2
x=
3

y=

4
5

Observar que os dois vetores possuem dimenses diferentes, isto , x


o
e
Temos,
-->x = [1; 2; 3]
x =
!
!
!

1. !
2. !
3. !

-->y = [4; 5]
y =
!
!

3.

2.

1.

// Dimensao do vetor y

1. !

-->size(y)
ans =
!

// Dimensao do vetor x

1. !

-->size(y)
ans =
!

// Definindo o vetor y

4. !
5. !

-->size(x)
ans =
!

// Definindo o vetor x

2. !

// Dimensao do vetor y transposto

R31 e y R21.

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a
-->C = x * y
C =
!
!
!

4.
8.
12.

31

// Produto vetorial de x por y

5. !
10. !
15. !

-->
Nos exemplos a seguir, mostramos outras maneiras de construir vetores, usando
ndices e
algumas funes internas do Scilab:
co
-->v = 5: -0.5: 3
v
!

// Vetor com elementos decrementados

=
5.

4.5

4.

3.5

-->m = ones(1:4)
m =
!

1.

1.

// Vetor constituido de elementos iguais a 1

1.

1. !

-->z = zeros(1:5)
z =
!

0.

0.

3. !

// Vetor constituido de elementos iguais a 0

0.

0.

0. !

-->

4.3

Matrizes

Seja o conjunto dos nmeros reais. Dizemos


u
mn , se, e somente se,
, indicado por A

a1,1 a1,2
a2,1 a2,2

A= .
.
.
.
.
.

que A uma matriz de dimenso m n em


e
a

..
.

am,1 am,2

a1,n
a2,n

.
.
.
am,n

onde cada um dos elementos ai,j . Nessa notao, a varivel m indica o nmero de linhas e
ca
a
u
a varivel n indica o nmero de colunas da matriz A. Se A for uma matriz quadrada, o nmero
a
u
u
de linhas igual ao nmero de colunas e, ento, m = n.
e
u
a
Vamos considerar as matrizes A, B 23 ,

A=

1 2 3
5 8 9

B=

1 2 3
4 5 6

No Scilab, as matrizes so representadas entre colchetes, [ ]. Os elementos que constituem


a
as linhas das matrizes so separados por espaos ou por v
a
c
rgulas. A indicao de trmino de
ca
e
cada linha da matriz feita com ponto-e-v
e
rgula.
Nos exemplos a seguir, para xar conceitos, a matriz A digitada com os elementos de suas
e
linhas separados por espaos enquanto a matriz B digitada com os elementos de suas linhas
c
e
separados por v
rgula. Assim,

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

32

-->// Matriz A - Elementos das linhas separados por espaco


-->A = [1 2 3; 5 -8 9]
A =
!
!

1.
5.

2.
- 8.

3. !
9. !

-->// Matriz B - Elementos das linhas separados por virgulas


-->B = [1, 2, 3; 4, 5, 6]
B =
!
!

1.
4.

2.
5.

3. !
6. !

-->size(A)
ans =
!

2.

// Dimensao da matriz A

3. !

-->size(B)
ans =
!

2.

// Dimensao da matriz B

3. !

-->
Uma outra forma de digitar matrizes no ambiente Scilab, separando os elementos de uma
e
linha por espao (ou por v
c
rgula) e as linhas separadas por enter,
-->M = [ 1 2 3 4
-->5 6 7 8
-->9 11 13 15]
M =
!
!
!

1.
5.
9.

2.
6.
11.

3.
7.
13.

4. !
8. !
15. !

-->
Matrizes podem ser multiplicadas ou divididas por quantidades escalares. Tambm, matrizes
e
de mesma dimenso podem ser somadas ou subtra
a
das. Considerando as matrizes A e B do
exemplo anterior, temos:
-->2 * A
ans =
!
!

2.
10.

// Multiplicacao por um escalar

4.
- 16.

6. !
18. !

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a
-->A / 2
ans =
!
!

0.5
2.5

// Divisao da matriz A por uma constante

1.
- 4.

1.5 !
4.5 !

-->A + B
ans =
!
!

2.
9.

33

// Somando as duas matrizes

4.
- 3.

6. !
15. !

-->

Se A mn , a transposta da matriz A, indicada por AT , tal que AT


e
caso dos vetores, a trasposio indicada pelo s
ca e
mbolo (apstrofo).
o
Considerando a matriz B do exemplo anterior, temos:

Rnm. Como no

-->B = [1, 2, 3; 4, 5, 6]
B =
!
!

1.
4.

2.
5.

-->size(B)
ans =
!

2.

1.
2.
3.

// C = transposta da matriz B

4. !
5. !
6. !

-->size(C)
ans =
!

3.

// Dimensao da matriz B

3. !

-->C = B
C =
!
!
!

3. !
6. !

// Dimensao da matriz C

2. !

-->
Se A

Rmp e B Rpn, podemos denir o produto das matrizes A e B,


C = A B Rmn

Observar que, para que possa haver a multiplicao entre duas matrizes, necessrio que o
ca
e
a
nmero de colunas da primeira matriz seja igual ao nmero de linhas da segunda matriz.
u
u
Considerando as matrizes A e B,

1 2 3
1 4
A = 4 5 6
e
B = 2 5
7 8 9
3 6

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

34

temos:
-->A = [ 1 2 3; 4 5 6; 7 8 9]
A =
!
!
!

1.
4.
7.

2.
5.
8.

3. !
6. !
9. !

-->B = [ 1 4; 2 5; 3 6]
B =
!
!
!

1.
2.
3.

4. !
5. !
6. !

-->size(A)
ans =
!

3.

3. !

-->size(B)
ans =
!

3.

2. !

-->A * B
ans =
!
!
!

14.
32.
50.

32. !
77. !
122.

-->
Podemos usar funes internas do Scilab para gerar matrizes. Por exemplo, usamos a funo
co
ca
ones para criar a matriz D 23 , com todos os elementos iguais a 1,

-->D = ones(2,3)
D =
!
!

1.
1.

1.
1.

1. !
1. !

-->
ou a funo zeros para criar a matriz E
ca
-->E = zeros(3,3)
E =
!

0.

0.

0. !

R33, com todos os elementos iguais a 0,

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a
!
!

0.
0.

0.
0.

35

0. !
0. !

-->
ou, ainda, a criao de uma matriz identidade, I atravs da funo interna eye,
ca
e
ca
-->I = eye(4,4)
I =
!
!
!
!

1.
0.
0.
0.

0.
1.
0.
0.

0.
0.
1.
0.

0.
0.
0.
1.

!
!
!
!

-->
Podemos criar matrizes a partir de elementos de outras matrizes,
-->// Definido as matrizes A, B e C
-->A = [1 2; 3 4];
-->B = [5 6; 7 8];
-->C = [9 10; 11 12];
-->// Definindo a matriz D
-->D = [A B C]
D =
!
!

1.
3.

2.
4.

5.
7.

6.
8.

9.
11.

10. !
12. !

-->// Definindo uma matriz E a partir dos elementos de D


-->E = matrix(D,3,4)
E =
!
!
!

1.
3.
2.

4.
5.
7.

6.
8.
9.

11. !
10. !
12. !

-->
Observar que a matriz E, com trs linhas e quatro colunas, criada usando a funo matrix.
e
e
ca
Esta funo gera a matriz E a partir da organizao dos elementos da matriz D por colunas.
ca
ca

4.4

Acesso a Elementos de Vetores e de Matrizes

O acesso a elementos de um vetor ou de uma matriz pode ser realizado de diversas maneiras.
Dentre elas, podemos citar:

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

36

a utilizao expl
ca
cita dos
ndices do elemento a ser acessado,
a utilizao do s
ca
mbolo : (dois pontos)
a utilizao do s
ca
mbolo $ ou
a utilizao de operaes booleanas.
ca
co
Vamos considerar o vetor linha v = [1 2 3 4 5 6 7]. O acesso a um elemento deste vetor
feito de forma convencional, o
e
ndice do vetor indicando qual elemento que est sendo acessado.
a
Assim,
-->v = [1 2 3 4 5 6 7]
v =
!

1.

2.

-->v(1)
ans =

3.

4.

// definicao do vetor v

5.

6.

7. !

// acesso ao primeiro elemento de v

1.
-->v(5)
ans =

// acesso ao quinto elemento de v

5.
-->
O s
mbolo : permite denir formas compactas de acesso a elementos de um vetor. Por
exemplo,
-->v(2:4)
ans =
!

2.

// acesso aos elementos 2, 3 e 4 de v

3.

-->v(:)
ans =
!
!
!
!
!
!
!

1.
2.
3.
4.
5.
6.
7.

// acesso a todos os elementos de v

!
!
!
!
!
!
!

-->v(1:2:7)
ans =
!
-->

1.

4. !

3.

// acesso aos elementos inpares de v

5.

7. !

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

37

enquanto o s
mbolo $ permite acessar o ultimo elemento do vetor,

-->v($)
ans =

// acesso ao ultimo elemento de v

7.
-->
Tambm, podemos utilizar operaes booleanas para acessar elementos de um vetor. Na
e
co
sesso,
a
-->v([%f %t %f %t %t])
ans =
!

2.

4.

// acesso usando %t e %f

5. !

-->
acessamos o segundo, quarto e quinto elemento do vetor v. Lembrar que %t signica true,
verdadeiro, e que %f signica false, falso.
Para exemplicar acessos a elementos de matrizes, vamos considerar a matriz A com duas
linhas e trs colunas, A 2x3 ,
e

-->// Definindo uma matriz A


-->A = [1 2 3; 4 5 6]
A =
!
!

1.
4.

2.
5.

3. !
6. !

-->
O acesso a um elemento dessa matriz feito da maneira convencional: o elemento da linha i
e
e coluna j, ai,j , acessado atravs do comando A(i,j), com i e j tendo seus valores numricos
e
e
e
explicitados. Por exemplo, para acessar o elemento a1,2 da matriz A, usamos o comando A(1,2),
-->// Acessando o elemento da primeira linha e segunda coluna de A
-->A(1,2)
ans =
2.
-->
O comando M = A([1 2], 2), permite construir uma matriz, M, composta pelo primeiro e
segundo elementos, indicados pelo vetor [1 2], da segunda coluna da matriz A,
-->M = A([1 2], 2)
M =

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a
!
!

38

2. !
5. !

-->
Atravs do operador : Scilab implementa formas compactas que permitem acessar elementos
e
de uma matriz. Considerando A mn , a notao A(k, :) representa a k-sima linha da matriz
ca
e
A,
A(k, :) = [ak,1 , ak,2 , . . . , ak,n ]

e a notao A(:, k) representa a k-sima coluna da matriz A,


ca
e
A(:, k) = [a1,k , a2,k , . . . , am,k ]
Nesse contexto, e para facilitar a compreenso, o s
a
mbolo : (dois pontos) assume o signicado
de todos os elementos. Assim, A(k, :) pode ser lido como todos os elementos da k-sima linha
e
da matriz A e A(:, k) pode ser lido como todos os elementos da k-sima coluna da matriz A.
e
Considerando a matriz A do exemplo anterior, o comando A(:,3), permite acessar todos os
elementos da terceira coluna da matriz A,
->// Todos os elementos da terceira coluna da matriz A
-->A(:, 3)
ans =
!
!

3. !
6. !

-->
enquanto o comando A(2,:) permite acessar todos os elementos da segunda linha da matriz A,
->// Todos os elementos da segunda linha da matriz A
-->A(2,:)
ans =
!

4.

5.

6. !

-->
O comando A(:, 3:-1:1) permite formar uma matriz constitu por todos os elementos
da
das colunas trs, dois e um da matriz A. Lembrar que 3:-1:2 idntico ao vetor [3 2 1].
e
e e
-->// Todos os elementos da terceira, segunda e primeira colunas de A
-->A(:, 3:-1:1)
ans =
!
!

3.
6.

2.
5.

1. !
4. !

-->A(:, [3 2 1])
ans =

// Forma equivalente

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

!
!

3.
6.

2.
5.

39

1. !
4. !

-->
Vamos considerar a utilizao do s
ca
mbolo $ para acessar elementos da matriz A. Neste contexto, o s
mbolo $ signica nmero total de. Usando o comando A(1:2, $-1), acessamos o
u
primeiro e o segundo elementos, indicados por 1:2, da segunda coluna, indicado por $-1, da
matriz A. Lembrar que a matriz A possui duas linhas e trs colunas. Com o comando, A($:e
1:1, 2), estamos acessando o segundo e o primeiro, nessa ordem, elementos da segunda coluna
da matriz A. Escrever $:-1:1 equivalente, neste caso, a escrever 2:-1:1 j que a matriz A
e
a
possui duas linhas.
-->// Primeiro e segundo elementos da segunda coluna de A
-->A(1:2, $-1)
ans =
!
!

2. !
5. !

-->// Segundo e primeiro elementos da segunda coluna de A


-->A($:-1:1, 2)
ans =
!
!

5. !
2. !

-->// Acesso ao ultimo elemento de A


-->A($)
ans =
6.
-->
Os elementos de uma matriz so armazenados por coluna. Da usando o comando A($)
a
,
na sesso anterior, acessamos o ultimo elemento de A. Assim, o primeiro elemento da matriz A
a

pode ser acessado atravs do comando A(1) e o quinto elemento da matriz A pode ser acessado
e
atravs do comando A(5),
e
-->// Primeiro

elemento de A

-->A(1)
ans =
1.
-->// Quinto elemento de A

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

40

-->A(5)
ans =
3.
-->// Todos os elementos armazenados por coluna
-->A(:)
ans =
!
!
!
!
!
!

1.
4.
2.
5.
3.
6.

!
!
!
!
!
!

--> // Mesmo efeito do comando anterior


-->A([1 2 3 4 5 6])
ans =
!
!
!
!
!
!

1.
4.
2.
5.
3.
6.

!
!
!
!
!
!

-->
Podemos usar variveis booleanas para acessar elementos de uma matriz. Com o comando
a
A([%t %f %f %t]), acessamos o primeiro e o quarto elementos da matriz A, indicados por %t,
no querendo o segundo e terceiro elementos, indicados por %f.
a
-->// Acesso ao primeiro e quarto elementos
-->A([%t %f %f %t])
ans =
!
!

1. !
5. !

-->
Com o comando A(%t, [2 3]), acessamos os primeiros elementos das segunda e terceira
colunas.
-->// Acessando os primeiros elementos da colunas 2 e 3
--> A(%t, [2 3])

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a
ans
!

41

2.

3. !

-->

E poss
vel, caso seja necessrio, alterar os valores de elementos de uma matriz. Considerando
a
a matriz A, podemos mudar o valor do seu elemento A(2,1) atravs do comando de atribuio
e
ca
A(1,2) = 10,
-->// Atribuir a A(1,2) o valor 10
-->A(1,2) = 10
A =
!
!

1.
4.

10.
5.

3. !
6. !

-->
Depois, atribu
mos os valores [-1; -2] aos primeiro e segundo elementos da segunda coluna
da matriz A,
-->// A(1,2) = -1 e A(2,2) = -2
-->A([1 2], 2) = [-1; -2]
A =
!
!

1.
4.

- 1.
- 2.

3. !
6. !

-->
Finalmente, modicamos os elementos A(1,1) e A(1,2) da matriz A.
-->// A(1,1) = 8 e A(1,2) = 5
-->A(:,1) = [8;5]
A =
!
!

8.
5.

- 1.
- 2.

3. !
6. !

-->

4.5

Matrizes com Polinmios


o

Os elementos de uma matriz podem ser polinmios,


o
-->// Definindo um polinomio
-->x = poly(0, x); p = 2 + 3 * x + x ^ 2

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a
p

=
2
2 + 3x + x

-->// Definindo uma matriz polinomial, M


-->M = [p, p-1; p+1, 2]
M =
!
!
!
!
!

2
2 + 3x + x
2
3 + 3x + x

2 !
1 + 3x + x !
!
!
2
!

-->// Avaliando a matriz M em x = 2


-->horner(M, 2)
ans =
!
!

12.
13.

11. !
2. !

-->// Obtendo a inversa de M


-->inv(M)
ans =
!
!
!
!
!
!
!
!
!
!
!

2
--------------------2
3
4
1 - 6x - 11x - 6x - x
2
- 3 - 3x - x
-------------------2
3
4
1 - 6x - 11x - 6x - x

2
- 1 - 3x - x
-------------------2
3
4
1 - 6x - 11x - 6x - x

!
!
!
!
!
!
2
!
2 + 3x + x
!
-------------------!
2
3
4 !
1 - 6x - 11x - 6x - x !

-->// Obtendo o determinante de M


-->det(M)
ans =
2
3
4
1 - 6x - 11x - 6x - x
-->

42

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

43

A partir de uma matriz formada por elementos que so polinmios racionais,


a
o
-->// Definindo uma matriz F de polinomios racionais
-->s = poly(0, s);
-->F = [ 1/s,
(s +1)/(s + 2); ...
-->
s/(s+3),
s^2
]
F =
!
!
!
!
!
!
!
!

1
s

1 + s
----2 + s

s
----3 + s

2
s
1

!
!
!
!
!
!
!
!

-->
podemos criar outra matriz apenas com o numerador das fraes,
co
-->F(num)
ans =
!
!
!
!

// Pegando os numeradores

1 + s

2
s

!
!
!
!

-->
ou com seus denominadores,
-->F(den)
ans =
!
!
!

// Pegando os denominadores

2 + s

3 + s

!
!
!

-->

4.6

Matrizes Simblicas
o

O Scilab permite a criao e manipulao de matrizes simblicas. Vamos considerar uma


ca
ca
o
12 , constitu
matriz B
da por elementos simblicos,
o

-->// Matriz simbolica


-->B = [ 1/%s, (%s + 1)/(%s - 1)]

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a
B
!
!
!

44

=
1
s

1 + s
----- 1 + s

!
!
!

-->
Os elementos de uma matriz simblica so acessados utilizando os mesmos comandos para
o
a
acessar elementos de uma matriz numrica. Nos dois comandos seguintes, apresentamos exeme
plos de acesso aos elementos da matriz B,
-->// Acessos a elementos da matriz B
-->B(1,1)
ans =
1
s
-->B(1, $)
ans =
1 + s
----- 1 + s
-->
Podemos, tambm, atribuir valores simblicos a elementos de uma matriz, Considerando a
e
o
matriz A = [1 -1 3; 5 -2 6], temos,
-->A(1,1) = %s
A =
!
!
!

// Atribuicao do valor simbolico s ao elemento A(1,1)

- 1

- 2

-->A($) = %s + 1
A =
!
!
!

!
!
!
// Atribuindo s + 1 ao ultimo elemento de A

- 1

- 2

1 + s

!
!
!

-->
As matrizes simblicas tambm podem ser constitu
o
e
das por elementos compostos por strings
de caracteres. Elas so criadas da mesma maneira que as matrizes com elementos numricos.
a
e
As strings so escritas entre apstrofos ou entre aspas.
a
o

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

45

-->// Matriz de strings


-->A = [x
A =
!x
!
!z

y
w+v

y; z

w+v]

!
!
!

-->// Atribuindo valores


-->x=1;y=2;z=3;w=4;v=5;
// Obtendo o valor numerico dos elementos de A
-->evstr(A)
ans =
!
!

1.
3.

2. !
9. !

-->

4.7

Matrizes Booleanas

Matrizes booleanas so matrizes constru


a
das com as constantes %t (t true, verdadeiro)
e
e %f (f false, falso). Alguns exemplos de construo matrizes booleanas,
e
ca
-->// Matriz booleana A
-->A = [%t, %f, %t, %f, %f, %f]
A =
! T F T F F F !
-->// Matriz booleana B
-->B = [%t, %f, %t, %f, %t, %t]
B =
! T F T F T T !
-->
Podemos realizar operaes lgicas com as matrizes denidas anteriormente,
co o
-->// A ou B
-->A|B
ans =
! T F T F T T !

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

46

-->// A e B
-->A & B
ans =
! T F T F F F !
-->

4.8

Operaes com Vetores e Matrizes


co

A Tabela 4.1, apresenta a sintaxe de alguns dos operadores dispon


veis no ambiente Scilab
que podem ser utilizados em operaes com vetores ou com matrizes.
co
S
IMBOLO

+
*
/
\
^
.*
.\
./
.^
.*.

OPERACAO

transposta
adio
ca
subtrao
ca
multiplicao
ca
diviso ` direita
a a
diviso ` esquerda
a a
exponenciao
ca
multiplicao elemento-a-elemento
ca
diviso, ` esquerda, elemento-a-elemento
a a
diviso, ` direita, elemento-a-elemento
a a
exponenciao elemento-a-elemento
ca
produto de Konecker

Tabela 4.1: Sintaxe de alguns operadores usados em operaes vetoriais ou matriciais.


co
As operaes envolvendo os operadores , +, -, * e / j foram apresentadas em pargrafos
co
a
a
anteriores. Os outros operadores mostrados na Tabela 4.1 sero apresentados nessa Seo.
a
ca
Vamos analisar a utilizao do operador \. Para isso, denimos um sistema de equaes
ca
co
lineares,
a1,1 x1 + a1,2 x2 + + a1,n xn = b1
a2,1 x1 + a2,2 x2 + + a2,n xn = b2
...................................
an,1 x1 + an,2 x2 + + an,n xn = bn
que pode ser escrito na forma matricial
Ax = b
onde

a1,1
a2,1

A= .
.
.

a1,2
a2,2
.
.
.

..
.

an,1 an,2

a1,n
a2,n

.
.
.
an,n

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

47

com

x1
x2

x= .
.
.


b1
b2

b=.
.
.

bn

xn

Nas expresses anteriores, A nn a matriz dos coecientes, x n1 o vetor das


o
e
e
incgnitas e b n1 o vetor de termos independentes.
o
e
Resolver um sistema linear obter o valor do vetor x. Na situao mais simples, a matriz
e
ca
A no-singular (admite inversa) e a soluo, unica, dada pela expresso
e a
ca
e
a

x = A1 b
onde A1 a inversa da matriz A. A expresso anterior pode ser representada no Scilab como
e
a
--> x = inv(A) * b
onde inv, com vimos em exemplo anterior, uma funo interna do Scilab que calcula a inversa
e
ca
de uma matriz.
Para exemplicar, vamos considerar um sistema linear com
A=

2 0
0 4

b=

1
8

Temos,
--> // Solucao de Ax = b usando a funcao inv
-->A = [2 0; 0 4]
A =
!
!

2.
0.

0. !
4. !

-->inv(A)
ans =
!
!

0.5
0.

// A admite inversa

0.
!
0.25 !

-->b = [1; 8]
b =
!
!

-->

// Vetor b

1. !
8. !

-->x = inv(A) * b
x =
!
!

// Matriz A

0.5 !
2. !

// Solucao do sistema linear

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

48

O mesmo resultado pode ser encontrado utilizando-se o operador \. Temos, ento,


a
--> Resolucao de Ax = b usando o operador \
-->x = A \ b
x =
!
!

0.5 !
2. !

-->

E importante observar que o s


mbolo \ no dene uma diviso matricial. Indica, apenas,
a
a
uma outra forma de se obter a soluo de um sistema linear.
ca
O operador . (ponto), como pode ser visto na Tabela 4.1, utilizado com outros operadores
e
(*, \, /, ^) para realizar operaes elemento a elemento de vetores ou de matrizes. A sesso
co
a
do Scilab a seguir mostra exemplos dessas operaes utilizando vetores.
co
--> Definicao do vetor x
-->x = [1 3 4 6]
x =
!

1.

3.

4.

6. !

--> Definicao do vetor y


-->y = [2 4 6 8]
y =
!

2.

4.

6.

8. !

-->x .* y
ans =
!

2.

12.

24.

48. !

-->x * y
!--error
10
inconsistent multiplication

-->
A operao .* gera um vetor formado pelo produto dos elementos dos vetores x e y. Apenas
ca
para xar conceitos, vericamos que a operao x * y no pode ser realizada.
ca
a
Continuando com os exemplos, usamos os operadores ./ para dividir os elementos do vetor
x pelos elementos do vetor y,
-->x ./ y
ans =

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

0.5

0.75

0.6666667

49

0.75 !

-->
e o operador .\ para dividir os elementos do vetor y pelos elementos do vetor x,
-->x .\ y
ans =
!

2.

1.3333333

1.5

1.3333333 !

-->

Essa operao equivalente ` operao


ca e
a
ca
-->y ./ x
ans =
!

2.

1.3333333

1.5

1.3333333 !

-->

A utilizao do operador .^ mostrada nos exemplos apresentados em seguida,


ca
e
-->x .^ y
ans =
!

1.

81.

4096.

1679616. !

64.

1296.

262144. !

-->y .^ x
ans =
!

2.

-->
Vamos vericar tambm a utilizao do operador . (ponto) em conjuno com os operadores
e
ca
ca
(*, \, /, ^) quando se trata de matrizes. Para isso, vamos considerar a matriz quadrada
A 33 ,

1 2 3
A = 4 5 6
7 8 9

A sesso do Scilab a seguir mostra exemplos dessas operaes utilizando matrizes.


a
co
-->// Definindo a matriz A
-->A = [ 1 2 3; 4 5 6; 7 8 9]
A =

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a
!
!
!

1.
4.
7.

2.
5.
8.

50

3. !
6. !
9. !

-->A .* A
ans =
!
!
!

1.
16.
49.

4.
25.
64.

9. !
36. !
81. !

-->A ^ 2
ans =
!
!
!

30.
66.
102.

36.
81.
126.

42. !
96. !
150. !

36.
81.
126.

42. !
96. !
150. !

-->A * A
ans =
!
!
!

30.
66.
102.

-->

Aps denir a matriz A no ambiente Scilab, foi feito o produto A .* A. O resultado uma
o
e
matriz com elementos iguais ao produto de cada elemento da matriz A pelo seu correspondente.
Observar que o resultado obtido pela operao .* completamenbte diferente do resultado
ca
e
obtido fazendo-se A ^2. Este ultimo resultado idntico ao resultado obtido fazendo-se A * A.

e e
Continuando com os exemplos, a operao A ./ A,
ca
-->A ./ A
ans =
!
!
!

1.
1.
1.

1.
1.
1.

1. !
1. !
1. !

-->

apresenta uma matriz com todos os elementos iguais a 1, como era de se esperar, j que os
a
elementos da matriz gerada so obtidos dividindo-se cada um dos elementos da matriz A pelos
a
seu correspondente. Para xar conceitos, vamos considerar a matriz quadrada B 33 ,

2 2 2
B = 2 2 2
2 2 2

Temos,

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

51

-->// Definicao da matriz B


-->B = [ 2 2 2; 2 2 2; 2 2 2]
B =
!
!
!

2.
2.
2.

2.
2.
2.

2. !
2. !
2. !

-->A ./ B
ans =
!
!
!

0.5
2.
3.5

1.
2.5
4.

1.5 !
3. !
4.5 !

-->

como era de se esperar.


Continuando com os exemplos, temos
-->A .^ B
ans =
!
!
!

1.
16.
49.

4.
25.
64.

9. !
36. !
81. !

-->

onde cada elemento da matriz A foi elevado ao elemento correspondente na matriz B, que equivale,
no caso a
-->A .^ 2
ans =
!
!
!

1.
16.
49.

4.
25.
64.

9. !
36. !
81. !

-->

Temos, ainda, a operao


ca
-->A .\ B
ans =
!
!
!

2.
0.5
0.2857143

1.
0.4
0.25

0.6666667 !
0.3333333 !
0.2222222 !

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

52

-->

que equivale ` operao


a
ca
-->B ./ A
ans =
!
!
!

2.
0.5
0.2857143

1.
0.4
0.25

0.6666667 !
0.3333333 !
0.2222222 !

-->

O produto de Kronecker entre duas matrizes, A mn e B pq ,

a1,1 a1,2 a1,n


b1,1 b1,2
a2,1 a2,2 a2,n
b2,1 b2,2

A= .
e
B= .
.
.
.
..
..
.
.
.
.
.
.
.
.
.
.
.
.
am,1 am,2 am,n
bp,1 bp,2
representado por A B
e

b1,q
b2,q

.
.
.
bp,q

R(mp)(nq) e denido por:

a1,1 B
a2,1 B

AB = .
.
.

a1,2 B
a2,2 B
.
.
.

..
.

am,1 B am,2 B

a1,n B
a2,n B

.
.
.
am,n B

Para exemplicar, vamos considerar as matrizes


A=

1 2
3 4

B=

1 2 3
4 5 6

No Scilab, o produto de Kronecker implementado atravs do operador .*., como podemos


e
e
ver no exemplo,
--> // Definindo as matrizes A e B
-->A = [1 2; 3 4]
A =
!
!

1.
3.

2. !
4. !

-->B = [1 2 3; 4 5 6]
B =
!
!

1.
4.

2.
5.

-->A .*. B
ans =

3. !
6. !
// Produto de Kronecker via operador .*.

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

!
!
!
!

1.
4.
3.
12.

2.
5.
6.
15.

3.
6.
9.
18.

2.
8.
4.
16.

4.
10.
8.
20.

6.
12.
12.
24.

53

!
!
!
!

-->

ou atravs da funo interna kron,


e
ca
-->kron(A, B)
ans =
!
!
!
!

1.
4.
3.
12.

2.
5.
6.
15.

// Produto de Kronecker usando funcao interna

3.
6.
9.
18.

2.
8.
4.
16.

4.
10.
8.
20.

6.
12.
12.
24.

!
!
!
!

-->

4.9

Listas

Uma lista uma coleo de objetos no necessariamente do mesmo tipo. Uma lista simples
e
ca
a
denida pela funo list. Esta funo tem a forma geral
e
ca
ca
list(a1 , a2 ,. . . ,an )
onde os ai so os elementos da lista.
a
Vamos criar uma lista simples, que chamamos de L, composta por trs elementos : o elemento
e
1, associado a L(1), o elemento w, associado a L(2) e uma matriz 2x2 composta de elementos
iguais a 1, associada a L(3),
-->// Uma lista simples com 3 elementos
-->L = list(1, w, ones(2,2))
L =

L(1)
1.
L(2)
w
L(3)
!
!

1.
1.

1. !
1. !

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

54

E importante observar que a indexao de elementos de uma lista, no Scilab, inicia-se por
ca
1.
Vamos transformar o elemento L(2) da lista do exemplo anterior em uma lista cujo primeiro
elemento, L(2)(1), w e cujo segundo elemento, L(2)(2), uma matriz 2x2 de nmeros
e
e
u
aleatrios,
o
-->// Transformando o elemento L(2) em uma lista
-->L(2) = list(w, rand(2,2))
L =

L(1)
1.
L(2)

L(2)(1)
w
L(2)(2)
!
!

0.2113249
0.7560439

0.0002211 !
0.3303271 !

L(3)
!
!

1.
1.

1. !
1. !

-->
A seguir, mostramos o comando necessrio para acessar o elemento (1,2) do segundo elemento
a
de L(2),
-->L(2)(2)(2,1)
ans =
0.7560439
-->
As lista tipadas so um outro tipo de dado aceito pelo Scilab. As listas tipadas so denidas
a
a
atravs da funo tlist. A funo tlist possui, obrigatoriamente, como primeiro argumento
e
ca
ca
um string ou um vetor de strings e os demais argumentos so os elementos da lista. A seguir,
a
alguns exemplos de manipulao de listas tipadas.
ca
-->// Definicao de uma lista tipada

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

55

-->L = tlist([Carro; Cidade; Valores], Natal, [2,3])


L =

L(1)
!Carro
!
!Cidade
!
!Valores

!
!
!
!
!

L(2)
Natal
L(3)
!

2.

3. !

-->// Acessando elementos


-->L(Cidade)
ans =
Natal
-->L(Valores)
ans =
!

2.

3. !

-->L(1)(3)
ans =
Valores
-->
Observar que os
ndices de uma lista tipada podem ser strings denidas no primeiro argumento da funo tlist().
ca
Neste Cap
tulo, apresentamos os tipos de dados que podem ser manipulados pelo Scilab. Diversos exemplos foram mostrados utilizando polinmios, vetores, matrizes e listas. Os exemplos
o
foram apresentados a partir do prompt do Scilab.
No prximo Cap
o
tulo, vamos mostrar com podemos desenvolver programas na linguagem
Scilab.

Cap
tulo 5

Programao
ca
Uma das caracter
sticas mais importante do Scilab a facilidade com que o usurio pode
e
a
criar seus prprios programas.
o
Apesar de simples, a linguagem Scilab disponibiliza a maioria das estruturas das linguagens
de programao convencionais. A diferena principal que, na programao Scilab, no h
ca
c
e
ca
a a
a necessidade da declarao prvia dos tipos das variveis que sero utilizadas ao longo do
ca
e
a
a
programa.
Um fator a ser levado em considerao que Scilab um interpretador de comandos. Os
ca e
e
programas escritos na linguagem Scilab so, portanto, normalmente executados em um tempo
a
maior que os programas semelhantes escritos em linguagens compilveis. Este fato mais
a
e
relevante quando precisamos desenvolver programas para a realizao de simulaes ou de otica
co
mizaes. Nesses casos, pode ser conveniente escrever o cdigo responsvel pela lentido do
co
o
a
a
processamento em uma linguagem convencional (no caso, C ou FORTRAN) e rodar esse cdigo
o
dentro do ambiente Scilab. No Apndice B, mostramos os procedimentos necessrios ` ligao
e
a
a
ca
de cdigos escritos em C com programas escritos em Scilab. Deve ser enfatizado, entretanto,
o
que a vantagem na utilizao do Scilab advm da facilidade de prototipao de programas e
ca
e
ca
da disponibilidade de uma poderosa biblioteca de funes grcas. Como sempre ocorre nessas
co
a
situaes, cabe ao usurio encontrar a sua soluo de compromisso.
co
a
ca
Nos Cap
tulos anteriores, vimos como escrever e executar comandos a partir do prompt do
Scilab. Neste Cap
tulo, apresentamos as principais estruturas de controle de uxo de programas.
Essas estruturas so utilizadas, depois, para gerar programas, chamados de scripts ou de funes,
a
co
que sero executados no ambiente Scilab.
a

5.1

Comandos para Iteraes


co

Existem dois comandos que permitem a realizao de iteraes, loops, no Scilab: o loop
ca
co
implementado com o comando for e o loop implementado com o comando while.

5.1.1

O Loop for

O comando for tem a forma geral:


for variavel = vetor_linha
instrucao_1
instrucao_2
... ...
instrucao_n
end
No ambiente Scilab, a forma acima equivalente a
e
56

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

57

-->for variavel=vetor_linha
-->
instrucao_1
-->
instrucao_2
-->
instrucao_n
-->end
como mostrado no exemplo,
--> Loop for em linha de comando
-->for k = 1:3
-->a = k + 1
-->end
a =

2.
=

3.
=
4.

-->
Como vimos no exemplo, no loop for o comportamento das iteraes baseado no contedo
co e
u
do vetor linha.
No exemplo a seguir, vamos considerar que a varivel k do comando for assuma os valores
a
estabelecidos pelo vetor linha v = [2 3 4 5 6]. O nmero de iteraes, portanto, ser igual ao
u
co
a
nmero de componentes do vetor linha v. Teremos, dessa forma, cinco iteraes. Na primeira
u
co
iterao, o valor da varivel k ser igual ao primeiro elemento do vetor v, v(1), que igual a 2,
ca
a
a
e
e na ultima iterao o valor da varivel k ser igual ao ultimo elemento do vetor v, v(5), que

ca
a
a

vale 6. No ambiente Scilab, temos:


-->v = [2 3 4 5 6];
-->y = 0;
-->for k = v
-->y = y + k
-->end
y =

2.
=

5.
=

9.
=

// v tambem pode ser escrito como v = 2:6

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

58

14.
=

20.
-->

O vetor v poderia ter sido descrito na forma v = 2:6.


A varivel do comando for tambm pode ser uma lista. Neste caso, a varivel assume os
a
e
a
valores dos elementos da lista, como no exemplo:
-->L = list(1, [1 2; 3 4], teste)
L =

L(1)
1.
L(2)
!
!

1.
3.

2. !
4. !
L(3)

teste
-->for k=L
-->disp(k)
-->end
1.
!
!

1.
3.

2. !
4. !

teste
-->

5.1.2

O Loop while

O comando while tem a forma geral,


while condicao
instrucao_1
instrucao_2
... ...
instrucao_n
end

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

59

A forma acima equivalente ` forma


e
a
-->while condicao
-->
instrucao_1
-->
instrucao_2
-->
instrucao_n
-->end
no ambiente Scilab.
O loop baseado no while realiza uma seqncia de instrues enquanto uma determinada
ue
co
condio estiver sendo satisfeita. A condio geralmente inclui comparaes entre objetos. Na
ca
ca
co
Tabela 5.1, apresentamos os operadores que permitem fazer comparaes entre valores de objetos
co
no Scilab.
Operadores
== ou =
<
>
<=
>=
<> ou ~=

Signicado
igual a
menor do que
maior do que
menor ou igual a
maior ou igual a
diferente

Tabela 5.1: Operadores condicionais


A seguir, apresentamos um exemplo da utilizao do loop baseado no comando while,
ca
-->x = 1;
-->while x < 14
-->x = x * 2
-->end
x =

2.
=

4.
=

8.
=
16.

-->

5.2

Comandos Condicionais

O Scilab implementa dois tipos de comandos condicionais: if-then-else e select-case.

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

5.2.1

60

Comando if-then-else

O comando if-then-else tem duas formas. Na forma mais simples, o comando escrito
e
como
if condicao_1 then
sequencia_de_instrucoes_1
else
sequencia_de_instrucoes_2
end
enquanto na sua forma mais geral o comando escrito como,
e
if condicao_1 then
sequencia_de_instrucoes_1
elseif condicao_2
sequencia_de_instrucoes_2
... ... ... ... ... ...
elseif condicao_n
sequencia_de_instrucoes_n
else
sequencia_de_instrucoes_n+1
end
A forma acima equivalente ` forma
e
a
--> if condicao_1 then
-->
sequencia_de_instrucoes_1
-->elseif condicao_2
-->
sequencia_de_instrucoes_2
--> elseif condicao_n
-->
sequencia_de_instrucoes_n
--> else
-->
sequencia_de_instrucoes_n+1
-->end
no ambiente Scilab.
A condicao_1 do comando if-then-else avalia uma expresso. Se esta expresso for
a
a
verdadeira, true, ser executada a instruo ou instrues subseqentes. Se for falsa, false, ser
a
ca
co
u
a
executada a instruo ou instrues aps o else ou o elseif, conforme o caso. Alguns exemplos
ca
co
o
da utilizao do condicional if-then-else,
ca
-->x = -1
x =
- 1.
-->if x < 0 then
-->
y = -x
y =
1.
-->else

// apresenta a resposta

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a
-->
y = x
-->end
-->// Outra forma
-->x = 1
x =

// Inicializando

1.
-->if x > 0 then, y = -x, else, y=x, end
y =
- 1.
-->x = -1
x =
- 1.
-->if x > 0 then, y = -x, else, y=x, end
y =
- 1.
-->

5.2.2

Comando select-case

O condicional select-case tem a forma geral,


select variavel_de_teste
case expressao_1
sequencia_de_instrucoes_1
case expressao_2
sequencia_de_instrucoes_2
... ... ... ... ... ... ... ...
case expressao_n
sequencia_de_instrucoes_n
else
sequencia_de_instrucoes_n+1
end
A forma acima equivalente ` forma
e
a
-->select variavel_de_teste
-->case expressao_1
-->
sequencia_de_instrucoes_1
-->case expressao_2
-->
sequencia_de_instrucoes_2
-->case expressao_n
-->
sequencia_de_instrucoes_n

61

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

62

-->else
-->
sequencia_de_instrucoes_n+1
-->end
O condicional select-case compara o valor de uma varivel de teste com as vrias expresa
a
ses dos case. Sero executadas as instrues que possuirem o valor da expresso do case igual
o
a
co
a
ao valor da varivel de teste. Um exemplo de utilizao do condicional select-case,
a
ca
-->x = -1
x =
- 1.
-->select x
-->case 1
-->
y = x + 5
-->case -1
-->
y = sqrt(x)
y =
i
-->end
-->x = 1
x =
1.
-->select x, case 1, y = x+5, case -1, y = sqrt(x), end
y =
6
-->

5.3

Denindo Scripts

Vimos, no Cap
tulo 3, que poss
e
vel, atravs dos comandos save e load, armazenar e recue
perar valores de variveis utilizadas no ambiente Scilab. Vimos, tambm, que poss
a
e
e
vel, atravs
e
do comando diary, criar arquivos onde armazenamos a memria das sesses que realizamos no
o
o
Scilab.
Alm desses dois tipos de arquivos, podemos criar arquivos contendo comandos do Scilab
e
que sero executados posteriormente dentro do seu ambiente. Um desses arquivos, chamados
a
de arquivos scripts ou simplesmente scripts, so formados por texto puro, sem acentuao,
a
ca
contendo uma seqncia de comandos que o usurio digitaria em uma sesso interativa no
ue
a
a
prompt do Scilab. Por conveno, os scripts do Scilab possuem extenso sce e so executados
ca
a
a
atravs do comando
e
-->exec(nome_do_arquivo_de_comandos.sce)
So caracter
a
sticas dos arquivos scripts:

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

63

Todas as variveis denidas no arquivo de comandos permanecem vlidas no ambiente


a
a
Scilab aps a execuo dos comandos do arquivo, e
o
ca
No h uma denio clara das entradas e sa
a a
ca
das do script. Esse fato pode dicultar a
correo de poss
ca
veis erros.

Para exemplicar, vamos escrever um script na linguagem Scilab para obter a 2 usando
o mtodo iterativo de Newton-Raphson. Segundo esse mtodo [9], a raiz de uma funo, f (x)
e
e
ca
pode ser calculada atravs da expresso,
e
a
xi+1 = xi

f (xi )
f (xi )

onde f (xi ) representa a derivada da funo f (x) no ponto xi e i = 0, 1, . . . , n representa o


ca
nmero de iteraes.
u
co

A funo f (x) que permite obter a 2


ca
e
f (x) = x2 2
Assim, usando a frmula de Newton-Raphson, temos
o
x2 2
2x
Usando x0 = 1.0 como aproximao inicial, escrevemos o script mostrado em Cdigo 1,
ca
o
xi+1 = xi

// script: metodo de Newton-Raphson


// f(x) = x * x - 2
N = 10;
// Numero maximo de iteracoes
x0 = 1.0;
// Aproximacao inicial
delta = 10^(-5); // Erro
xn = x0;
for n=1:N
xn1 = xn - (xn * xn - 2)/(2 * xn);
if abs((xn1-xn)/xn1) < delta then
printf(Valor da raiz = %10.7f,xn1)
return
end
xn = xn1;
end
printf(Nao converge em n=%f iteracoes", N)

Cdigo 1: O script que implementa o mtodo de Newton-Raphson para obter


o
e

2.

Observar o ; aps alguns comandos. Isso evita que a execuo do script seja um processo
o
ca
ruidoso no ambiente Scilab.
A execuo do script, que foi armazenado em um arquivo chamado newton.sce, e o resultado
ca
mostrado na sesso,
e
a
-->exec newton.sce

// executando o script

-->// script: metodo de Newton-Raphson

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

64

-->// f(x) = x * x - 2

-->N = 10;

// Numero maximo de iteracoes

-->x0 = 1.0;

// Aproximacao inicial

-->delta = 10^(-5);

// Erro

-->xn = x0;
-->for n=1:N
-->
xn1 = xn - (xn * xn - 2)/(2 * xn);
-->
if abs((xn1-xn)/xn1) < delta then
-->
printf(Valor da raiz = %10.8f,xn1)
-->
return
-->
end
-->
xn = xn1;
-->end
Valor da raiz = 1.41421356
// valor de sqrt(2) !
-->
Como indicado anteriormente, todas as variveis utilizadas no script permanecem ativas
a
aps a sua execuo,
o
ca
Valor da raiz = 1.4142136
// Final da execucao
-->// Variaveis permanecem ativas no ambiente Scilab
-->N
N =
10.
-->x0
x0 =
1.
-->xn1
xn1 =
1.4142136
-->delta
delta =
0.00001
-->
Um outro exemplo de script mostrado em Cdigo 6, Cap
e
o
tulo 6.

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

5.4

65

Denindo Funes
co

Uma funo obedece a uma estrutura da forma:


ca
function [y1, ..., yn] = foo(x1, ..., xm)
instrucao_1
instrucao_2
...
instrucao_p
endfunction
onde foo o nome da funo, xi, i=1,...,m, so os seus argumentos de entrada, yj, j=1,...,n,
e
ca
a
so os seus argumentos de sa e instrucao_i, i=1,...,p, representa a seqncia de instrues
a
da
ue
co
que devem ser executadas pela funo.
ca
Toda funo no Scilab executada chamado seu nome seguido de seus argumentos.No exemca
e
plo, a funo foo executada atravs do comando
ca
e
e
-->foo(x1, ..., xm)
Como pode ser observado, uma funo possui uma estrutura pr-determinada. As principais
ca
e
caracter
sticas das funes so:
co
a
As variveis denidas na funo, chamadas de variveis locais, no permanecem no ambia
ca
a
a
ente Scilab aps a execuo da funo;
o
ca
ca
As entradas e sa
das do programa so claramente denidas, e
a
Uma funo, aps ser denida, pode ser chamada a qualquer tempo.
ca
o
Uma funo pode ser criada usando um dos seguintes procedimentos:
ca
1. Digitao no prprio ambiente,
ca
o
-->Digitando uma funcao no ambiente Scilab
-->function [y1, y2] = exemplo(x1, x2)
-->// Entrada: x1, x2
-->// Saida: y1, y2
-->y1 = x1 + x2
-->y2 = x1 * x2
-->endfunction
-->[a,b] = exemplo(2, 3)
b =

6.
=
5.

-->
Observar que a funo retorna primeiro o ultimo valor calculado.
ca

2. Usando o comando deff,

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

66

-->Usando deff
-->deff([y1, y2]=exemplo(x1, x2),y1=x1+x2, y2=x1*x2)
-->[a, b] = exemplo(3,4)
b =
12.
=

7.
-->
3. Digitando o texto da funo em um arquivo e, em seguida, carregando esse arquivo no
ca
ambiente Scilab. Por conveno, as funes denidas pelo usurio possuem extenso sci
ca
co
a
a
e so carregadas no ambiente Scilab atravs do comando:
a
e
-->getf(nome_do_arquivo_de_comandos.sci)
Exemplos de funes constru
co
das desta maneira sero apresentados na seo 5.4.2.
a
ca
A escolha de um dos procedimentos anteriores depende da convenincia do usurio.
e
a

5.4.1

Variveis Globais e Variveis Locais


a
a

As variveis globais so vlidas no ambiente do Scilab enquanto as variveis locais so vlidas


a
a a
a
a a
apenas no escopo de uma funo. Para exemplicar os conceitos, vamos considerar a funo
ca
ca
f(x1, x2),
-->function [y1, y2] = f(x1, x2)
-->y1 = x1 + x2
-->y2 = x1 - x2
-->endfunction
Observe que y1 e y2 so as variveis de sa enquanto x1 e x2 so as variveis de entrada
a
a
da
a
a
da funo. Vamos considerar alguns exemplos de chamadas desta funo.
ca
ca
Inicialmente, a funo chamada com argumentos x1 =1 e x2 = 3 tendo seus parmetros
ca e
a
de retorno associados `s vriveis m1 e m2. Observe que y1 e y2, apesar de terem sido calculados
a a a
dentro da funo (denio local), no so denidas no ambiente do Scilab.
ca
ca
a a
-->[m1, m2] = f(1,3)
m2 =

// Retorno associado as variaveis [m1, m2]

- 2.
m1 =
4.
--> // Provocando erro : y1 e y2 nao sao globais
-->y1
!--error

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

67

undefined variable : y1

-->y2
!--error
4
undefined variable : y2
-->
Continuando com o exemplo, a funo chamada sem a associao expl
ca e
ca
cita de variveis
a
de retorno. Este caso como se a funo f(x1, x2) tivesse sido chamada com a associao de
e
ca
ca
apenas uma varivel de retorno, uma chamada do tipo z = f(1,3) .
a
-->f(1,3)
ans =

// Chamada equivalente a z = f(1,3)

4.
-->
O exemplo continua e um erro provocado quando a funo chamada com apenas um
e
ca e
argumento. Logo em seguida, o argumento denido no ambiente (denio global) e a funo
e
ca
ca
, novamente, chamada com apenas um argumento sem que haja a ocorrncia de erro.
e
e
-->f(1)
// Erro por indefinicao de argumento
!--error
4
undefined variable : x2
at line
2 of function f
f(1)
-->x2 = 3
x2 =

called by :

// Definindo x2 no ambiente (global)

3.
-->f(1)
ans =

// Chamando a funcao com apenas um argumento

4.
-->
Como est claro pela sesso anterior, a chamada de uma funo sem que todos os seus argua
a
ca
mentos de entrada tenham sido previamente denidos ocasiona erro. Os argumentos de entrada
devem ser denidos expl
citamente na chamada ou atravs de denies via variveis globais.
e
co
a
Considerando a funo anterior, teremos, como casos interessante (mas no aconselhveis!), os
ca
a
a
exemplos,
-->x1 = 2; x2 = 3;

// Definindo x1 e x2

-->f()
ans =

// Chamando a funcao f sem nenhum argumento

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

68

5.
-->[m1, m2] = f()
m2 =

// Retorno associado as variaveis [m1, m2]

- 1.
m1 =
5.
-->

5.4.2

Arquivos com Funes


co

Como vimos nas sees anteriores, poss


co
e
vel denir funes dentro do prprio ambiente
co
o
Scilab. Entretanto, quando a funo possui muitos comandos, mais conveniente utilizar um
ca
e
editor de textos para criar, fora do ambiente Scilab, um arquivo contendo a funo. E importante
ca
observar que o nome desse arquivo no , necessariamente, o nome que deve ser dado ` funo.
a e
a
ca
Como primeiro exemplo [9], vamos desenvolver um programa para resolver a equao difeca
rencial ordinria,
a
dy
= (x y)/2
dx
com condio inicial y(0) = 1, utilizando o mtodo de Runge-Kutta de quarta ordem. Vamos
ca
e
considerar o intervalo de integrao [0, 3] e o passo de integrao igual a h = 1/8. A soluo
ca
ca
ca
numrica obtida por Runge-Kutta ser comparada com valores da soluo exata que y(x) =
e
a
ca
e
3ex/2 + x 2.
O mtodo Runge-Kutta de quarta ordem, para resolver uma equao diferencial ordinria
e
ca
a
de primeira ordem,
dy
= f (x, y)
dx
representado pelas equaes,
e
co
yk+1 = yk +

h
(f1 + 2f2 + 2f3 + f4 )
6

com os coecientes fi denidos por :


f1 = f (xk , yk )
h
h
f2 = f (xk + , yk + f1 )
2
2
h
h
f3 = f (xk + , yk + f2 )
2
2
f4 = f (xk + h, yk + hf3 )
e pode ser implementado atravs do Algoritmo 1:
e

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

69

Algoritmo 1: Mtodo de Runge-Kutta de Quarta Ordem.


e
Entrada: [a, b], h e y0
Fazer x0 = a
Fazer n = (b a)/h
for k = 0 to n do
Calcular f1 , f2 , f3 e f4
Calcular yk+1 = yk + h (f1 + 2f2 + 2f3 + f4 )
6
Fazer xk+1 = xk + h
end
Resultado: Apresentar valores de xk e yk
Podemos utilizar um editor de textos, por exemplo, vi, joe, para, fora do ambiente Scilab,
criar o programa. No caso, usamos o SciPad, o editor do Scilab, como mostrado na Figura 5.1.

Figura 5.1: Escrevendo uma funo usando o editor do Scilab.


ca
O programa criado mostrado em Cdigo 2.
e
o

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

70

function [XY] = rk4(a, b, h, y0)


// Resolucao de equacoes diferenciais ordinarias por Runge-Kutta 4a. ordem
// Entrada : [a,b] - intervalo de integracao
//
h - passo da integracao
//
y0 - condicao inicial em x0
X(1) = a
Y(1) = y0
Exato(1) = f2(X(1), Y(1))
n = (b-a)/h
for k=1:n
xk = X(k)
yk = Y(k)
hf1 = h * f(xk, yk)
hf2 = h * f(xk + h/2, yk + hf1/2)
hf3 = h * f(xk + h/2, yk + hf2/2)
hf4 = h * f(xk + h, yk + hf3)
Y(k+1) = Y(k) + (hf1 + 2*hf2 + 2*hf3 + hf4)/6
X(k+1) = X(k) + h
Exato(k+1) = f2(X(k+1), Y(k+1))
end
XY = [X Y Exato]
endfunction

Cdigo 2: Programa principal, implementao do mtodo de Runge-Kutta.


o
ca
e

Como podemos observar, o programa chama a funo f(x,y), nas linhas 13 a 16, e a funo
ca
ca
com a soluo exata da equao diferencial dada1 , nas linhas 8 e 19 de Cdigo 2. A funo
ca
ca
o
ca
f(x,y) mostrada em Cdigo 3,
e
o
1
2
3
4

function [fxy] = f(x,y)


// funcao exemplo
fxy = (x - y)/2
endfunction

Cdigo 3: A funo f(x,y).


o
ca

e a soluo exata mostrada em Cdigo 4,


ca
e
o
1
2
3
4

function [fexato] = f2(x,y)


// funcao solucao
fexato = 3 * exp(-x/2) + x - 2
endfunction

Cdigo 4: A soluo exata da equao diferencial.


o
ca
ca

Os programas podem ser carregados no Scilab logo aps sua digitao atravs da utilizao
o
ca
e
ca
da sub-opo Load into Scilab Ctrl+I da opo Execute do Editor. Ou podem ser carregados
ca
ca
no ambiente Scilab atravs do comando getf(). Considerando que o programa principal e as
e
funes estejam em arquivos localizados no diretrio onde o Scilab lanado. Assim sendo, o
co
o
e
c
comando
1

Devemos salientar que nem sempre a soluo anal


ca
tica, exata, estar dispon
a
vel

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a
-->getf(fdexy.sci)

71

// arquivo com a funcao f(x,y) = (x - y)/2

-->
carrega a funo f(x,y) no ambiente Scilab. Depois, com o comando
ca
-->getf(fsolucao.sci)

// arquivo com a funcao solucao = 3exp(-x/2)+x-2

-->
a funo com a soluo exata carregada. Finalmente, o comando getf(rkutta4.sci) carca
ca
e
rega o arquivo que dene a funo rk42 e o comando rk4(0, 3, 1/8, 1) executa o programa.
ca
Os resultados obtidos so :
a
-->getf(rkutta4.sci)

// arquivo com o metodo de Runge-Kutta 4a. ordem

-->rk4(0, 3, 1/8, 1)
ans =

// executando o programa

!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!

0.
0.125
0.25
0.375
0.5
0.625
0.75
0.875
1.
1.125
1.25
1.375
1.5
1.625
1.75
1.875
2.
2.125
2.25
2.375
2.5
2.625
2.75
2.875
3.

1.
0.9432392
0.8974908
0.8620874
0.8364024
0.8198470
0.8118679
0.8119457
0.8195921
0.8343486
0.8557844
0.8834949
0.9170998
0.9562421
1.0005862
1.049817
1.1036385
1.1617724
1.2239575
1.2899485
1.3595145
1.4324392
1.5085189
1.5875626
1.6693906

1.
0.9432392
0.8974907
0.8620874
0.8364023
0.8198469
0.8118678
0.8119456
0.8195920
0.8343485
0.8557843
0.8834947
0.9170997
0.9562419
1.0005861
1.0498169
1.1036383
1.1617723
1.2239574
1.2899483
1.3595144
1.432439
1.5085188
1.5875625
1.6693905

!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!

-->
Na primeira coluna so mostrados os valores de x, na segunda coluna so mostrados os
a
a
valores da soluo aproximada, y, e na terceira coluna so mostrados os valores da soluo
ca
a
ca
exata, 3ex/2 + x 2.
2

Esta ordem irrelevante. Observe que os nomes das funes e os nomes dos arquivos que as contm so,
e
co
e
a
intencionalmente, diferentes.

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

72

Como segundo exemplo de programao, [9], vamos resolver um sistema triangular superior
ca
de equaes lineares, Este exemplo requer a leitura de um arquivo externo contendo dados.
co
Vamos considerar o sistema triangular superior,
4x1 x2 + 2x3 + 2x4
2x2 + 6x3 + 2x4
x3 x4
2x4

x5
+ 7x5
2x5
x5
3x5

= 4
= 0
= 3
= 10
= 6

Para resolver estes tipos de sistemas, usamos a matriz dos coecientes aumentada, denida
por

4 1 2

0 2 6 2
7

[A | b] = 0 0 1 1 2

0 0 0 2 1

0 0 0 0
6

10

e o processo de substituio reversa, indicado pelo Algoritmo 2:


ca
Algoritmo 2: Mtodo da Substituio Reversa.
e
ca
bn
xn =
an,n
for r = n 1 at 1 do
e
soma = 0
for j = r + 1 at n do
e
soma = soma + ar,j xj
end
b(r) soma
xr =
ar,r
end
A matriz aumentada, neste caso, armazenada em um arquivo ASCII, que chamamos de
e
arquivo1. O contedo de arquivo1, digitado com um editor qualquer, pode ser visto no ambiente
u
Linux usando o comando cat,
paulo:~/metodos/funcoes/aula3$ cat arquivo1
4 -1
0 -2
0 0
0 0
0 0

2 2 -1 4
6 2 7 0
1 -1 -2 3
0 -2 -1 10
0 0 3 6

Este arquivo lido pelo Scilab atravs do comando:


e
e
-->Ab = read(arquivo1, 5, 6)
Ab =
!
!

4.
0.

- 1.
- 2.

2.
6.

2.
2.

- 1.
7.

4.
0.

!
!

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a
!
!
!

0.
0.
0.

0.
0.
0.

1.
0.
0.

- 1.
- 2.
0.

- 2.
- 1.
3.

73

3. !
10. !
6. !

-->
onde Ab a varivel que contm a matriz aumentada. O comando read l as cinco linhas e as
e
a
e
e
seis colunas de dados do arquivo1 que est armazenado no diretrio de trabalho.
a
o
Caso seja necessrio, a matriz dos coecientes, A, e o vetor dos termos independentes, b,
a
podem ser recuperados da matriz Ab atravs da seqncia de comandos:
e
ue
-->// Numero de linhas, nl, numero de colunas, nc, de Ab
-->[nl nc] = size(Ab)
nc =

nl

6.
=
5.

-->A = Ab(:,1:nc-1)
A =
!
!
!
!
!

4.
0.
0.
0.
0.

- 1.
- 2.
0.
0.
0.

-->b = Ab(:,nc)
b =
!
!
!
!
!

4.
0.
3.
10.
6.

2.
6.
1.
0.
0.

// Matriz dos coeficientes

2.
2.
- 1.
- 2.
0.

- 1.
7.
- 2.
- 1.
3.

!
!
!
!
!

// Vetor dos termos independentes

!
!
!
!
!

-->
O programa para resolver o sistema linear mostrado no Cdigo 5,
e
o

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

74

function X = subst(Tsup)
// Entrada : matriz triangular superior, Tsup
// Saida : Vetor solucao X
[nl, nc] = size(Tsup);
n = nc-1;
A = Tsup(:,1:n); // Matriz A
b = Tsup(:,nc)
// Vetor b
X = zeros(n,1);
X(n) = b(n)/A(n,n);
for r = n-1:-1:1,
soma = 0,
for j = r+1:n,
soma = soma + A(r,j) * X(j);
end,
X(r) = (b(r) - soma)/A(r,r);
end
endfunction

Cdigo 5: Programa para resolver um sistema triangular.


o

Usando a matriz aumentada Ab como entrada para este programa, obtemos como vetor
soluo,
ca
-->subst(Ab)
ans =
!
5.
!
4.
!
1.
! - 6.
!
2.

!
!
!
!
!

-->

5.4.3

Comandos Especiais

Scilab possui alguns comandos especiais que so, exclusivamente, utilizados por funces :
a
o
argn - retorna o nmero de argumentos de entrada e de sa de uma funo;
u
da
ca
warning e pause - suspendem, temporariamente, a execuo de uma funo;
ca
ca
break - fora o nal de um loop;
c
return ou resume - utilizado para passar as variveis locais do ambiente da funo para
a
ca
o ambiente que chamou a funo.
ca
Alguns dos comandos especiais apresentados anteriormente so utilizados na funo,
a
ca
function [z] = foo(x, y)
[out, in] = argn(0);
if x == 0 then,
error(Divisao por zero);
end,

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

75

slope = y/x;
pause,
z = sqrt(slope);
s = resume(slope);
endfunction
Vamos chamar esta funo com argumento x = 0. O valor x = 0 ocasiona um erro, apreca
sentado ao usurio atravs do comando error, com a conseqente interrupo das operaes.
a
e
u
ca
co
H o retorno ao prompt do Scilab. Estas operaes so apresentadas no exemplo,
a
co
a
-->getf(f3.sci)

// Carregando a funcao

-->z = foo(0, 1)
// Provocando um erro
!--error 10000
Divisao por zero
at line
5 of function foo
z = foo(0, 1)

called by :

-->
Na segunda chamada, mostrada a seguir, desta vez com os argumentos corretos, a funo
ca
suspende a operao aps o clculo de slope. Neste ponto, o usurio pode vericar valores
ca
o
a
a
calculados pela funo at o ponto em que houve a interrupo. O prompt -1->, causado pelo
ca
e
ca
pause, indica a mudana de ambiente. O controle pode ser retornado ` funo atravs do
c
a
ca
e
comando return. As operaes da funo podem ser encerradas usando os comandos quit ou
co
ca
abort. Aps digitar resume, a funo calcula o valor de z e disponibiliza a varivel s, local `
o
ca
a
a
funo, para o ambiente que a chamou.
ca
-->// Mudando de ambiente
-->z = foo(2,1)
-1->resume
z =
0.7071068
-->s
s =
0.5
-->
Neste Cap
tulo, apresentamos alguns programas desenvolvidos na linguagem Scilab. No
Cap
tulo 6, vamos mostrar comandos que podem ser utilizados para traar grcos no ambiente
c
a
Scilab.

Cap
tulo 6

Grcos no Scilab
a
Apresentamos alguns comandos que podem ser utilizados para traar grcos bi-dimensionais
c
a
e tri-dimensionais. Informaes mais detalhadas sobre todos os comandos dispon
co
veis na biblioteca grca do Scilab1 podem ser acessadas atravs do navegador de help.
a
e

6.1

A Janela de Grcos do Scilab


a

Todas as sa
das grcas de comandos do Scilab so apresentadas em uma janela grca.
a
a
a
Essa janela mostrada na Figura 6.1.
e

Figura 6.1: Janela grca do Scilab


a
Na Figura 6.1, observamos a existncia de um menu horizontal com cinco opes: File ,
e
co
Zoom , UnZoom , 3D Rot. e Edit . Utilizando o mouse para selecionar cada uma dessas
opes, vericamos que:
co
A opo File - possui sete sub-opes que permitem manipular arquivos relacionados
ca
co
com grcos gerados: Clear, Select, Print, Export, Save, Load e Close;
a
1

O Apndice D contm uma listagem de todos os comandos da biblioteca grca do Scilab


e
e
a

76

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

77

A opo Zoom - permite a ampliao de uma parte do grco. Escolhendo esta opo e
ca
ca
a
ca
delimitando uma rea, a parte do grco dentro da rea escolhida ser expandida. Esta
a
a
a
a
opo ainda no est implementada para grcos tri-dimensionais;
ca
a
a
a
A opo UnZoom - desfaz as manipulaes realizadas atravs da opo Zoom ;
ca
co
e
ca
A opo 3D Rot. - permite efetuar rotaes em grcos bi-dimensionais e tri-dimensionais,
ca
co
a
e
A opo Edit - possui sete sub-opes que permitem manipular o grco gerado: Select,
ca
co
a
Redraw, Erase, Figure Properties, Current Axes Properties, Start Entity Picker, Stop
Entity Picker.
Algumas dessas opes sero utilizadas no decorrer deste Cap
co
a
tulo.
No Scilab, grcos sucessivos so sobrepostos em uma mesma janela grca. Para evitar
a
a
a
que isso ocorra, podemos utilizar o comando clf().
As janelas grcas podem ser manipuladas atravs da funo scf(). Por exemplo,
a
e
ca
-->// Manipulacao de janelas graficas
-->scf(0) // Acesso a janela grafica 0 (default)
-->scf(1) // Acesso a janela grafica 1
-->

6.2

Grcos Bi-dimensionais
a

Grcos bi-dimensionais podem ser gerados atravs da utilizao da funo plot2d()2 .


a
e
ca
ca
A forma mais simples da funo plot2d() :
ca
e
plot2d([x],y)
onde x e y podem ser matrizes ou vetores reais. Os colchetes, [ e ], envolvendo x indicam que
este parmetro opcional.
a
e
Vamos fazer algumas consideraes sobre os parmetros x e y:
co
a
1. Se x e y so vetores, a funo plot2d() permite traar o grco de y em funo de x.
a
ca
c
a
ca

E importante observar que os dois vetores devem ter a mesma dimenso, isto , os dois
a
e
vetores devem ter o mesmo nmero de elementos;
u
2. Se x um vetor e y uma matriz, a funo plot2d() permite traar o grco de cada
e
e
ca
c
a
coluna da matriz y em funo do vetor x. Neste caso, o nmero de elementos das colunas
ca
u
da matriz y deve ser igual ao nmero de elementos do vetor x;
u
3. Se x e y so matrizes, a funo plot2d() permite traar o grco de cada coluna da matriz
a
ca
c
a
y em funo de cada coluna da matriz x. Neste caso, as matrizes devem ter as mesmas
ca
dimenses;
o
4. Se y um vetor, a funo plot2d() permite traar o grco do vetor y em funo do
e
ca
c
a
ca
vetor [1:size(y)], e
2

O comando plot() est obsoleto.


a

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

78

5. Se y uma matriz, a funo plot2d() permite traar o grco da matriz y em funo do


e
ca
c
a
ca
vetor [1:size(y)].
Vamos apresentar exemplos de grcos gerados para cada uma das opes de entrada x, y
a
co
apresentadas anteriormente. Os grcos sero gerados no intervalo [0, 2], com incremento 0.1.
a
a
No ambiente Scilab, temos,
-->// Definindo o vetor das abcissas, x
-->x = [0:0.1:2*%pi]; // Intervalo [0, 2pi], incremento 0.1
-->// Item 1 - x vetor, y vetor
-->y = sin(x);
--> // Os dois vetores devem ter a mesma dimensao
-->size(x)
ans =
!

1.

63. !

// Observar que x possui 63 colunas

-->size(y)
ans =
!

1.

63. !

// Observar que y possui 63 colunas

-->plot2d(x,y)
-->clf()

// Limpa a tela grafica - evitar sobreposicao

--> // Item 2 - x vetor, y matriz


-->Y = [sin(x) cos(x)];

// Definindo a matriz Y

--> // Observar que a matriz Y possui 63 elementos em cada coluna


-->size(Y)
ans =
!

63.

2. !

-->plot2d(x,Y)
-->clf()
-->// Item 3 - x e y sao matrizes
-->// Definindo uma variavel auxiliar
-->t = [0:0.1:2*%pi];

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

79

-->// Criando a matriz X


-->X = [t t];
--> // A matriz X possui 63 elementos em cada coluna
-->size(X)
ans =
!

63.

2. !

-->// Criando a matriz Y


-->Y = [cos(t) sin(t)];
-->// A matriz Y possui 63 elementos em cada coluna
-->size(Y)
ans =
!

63.

2. !

-->plot2d(X,Y)
-->clf()
-->// Item 4 - y vetor (sem x explicito)
-->plot2d(sin(x))
-->clf()
--> // Item 5 - Y matriz (sem x explicito)
-->plot2d(Y)
-->

Vericar que, aps a apresentao de cada grco, limpamos a tela atravs do comando
o
ca
a
e
clf(), para evitar que o prximo grco no se sobreponha ao anterior.
o
a
a
Os resultados dessa sesso, para cada um de seus itens, podem ser agrupados em uma unica
a

janela grca, como mostrado na Figura 6.2.


a

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

80

Figura 6.2: Sa
das para a funo plot2d([x], y). Cada sub-grco refere-se a um dos itens
ca
a
da sesso do Scilab mostrada anteriormente. Observar que os grcos dos Itens 4 e 5 possuem
a
a
valores de abcissas diferentes dos demais.
Na gerao da Figura 6.2, foram utilizados os comandos
ca
xtitle(titulo)
para colocar o t
tulo em cada um dos grcos apresentados e
a
xsetech([x, y, largura, altura])
para sub-dividir a janela grca do Scilab. O argumento do comando xtitle() uma string
a
e
especicando o t
tulo do grco. O argumento da funo xsetech explicado em seguida.
a
ca
e
A janela grca do Scilab, mostrada na Figura 6.1, denida com largura e altura iguais a
a
e
1 e com o seu sistema de referncias com origem (0,0) no canto superior esquerdo da janela.
e
O eixo x possui valores crescentes para a direita e o eixo y possui valores crescentes para baixo.
Ambos os eixos possuem valores mximos iguais a 1.
a
O comando xsetech() permite criar sub-janelas grcas dentro da janela grca do Scilab.
a
a
Por exemplo, para o grco com t
a
tulo Item 1, foi utilizada a linha de comando
-->xsetech([0, 0, 0.3, 0.5]); xtitle(Item 1); plot2d(x,y)
Os demais grcos foram traados com comandos semelhantes.
a
c
Nesse caso, o argumento utilizado na funo xsetech() permitiu traar um grco de largura
ca
c
a
0.3 e altura 0.5 a partir da origem do sistema de referncias da janela grca. O grco com
e
a
a
t
tulo Item 2, foi traado com o comando
c
-->xsetech([0.35, 0, 0.3, 0.5]); xtitle(Item 2); plot2d(x,Y)
Todos os comandos utilizados na sesso anterior foram gravados em um arquivo atravs do
a
e
comando diary(). Este arquivo, aps ser editado, foi transformado no script apresentado em
o
Cdigo 6,
o

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

81

// Script para gerar a Figura 2 do capitulo 6


// Graficos - Scilab 3.0
// Definindo o vetor das abcissas, x
x = [0:0.1:2*%pi];
// Item 1 - y vetor
y = sin(x);
// xsetech[abcissa, ordenada, largura, altura] do grafico
xsetech([0, 0, 0.3, 0.5]); xtitle("Item 1"); plot2d(x,y)
// Item 2 - y matriz
Y = [sin(x) cos(x)];

// Definindo a matriz Y

xsetech([0.35, 0, 0.3, 0.5]); xtitle("Item2");

plot2d(x,Y)

// Item 3 - x e y sao matrizes


// Definindo uma variavel auxiliar
t = [0:0.1:2*%pi];
// Criando a matriz X
X = [t t];
// Criando a matriz Y
Y = [cos(t) sin(t)];
xsetech([0.70, 0, 0.3, 0.5]); xtitle("Item 3"); plot2d(X,Y)
// Item 4 - y vetor
xsetech([0, 0.5, 0.5, 0.5]); xtitle("Item 4"); plot2d(sin(x))
// Item 5 - Y matriz
xsetech([0.5, 0.5, 0.5, 0.5]); xtitle("Item 5"); plot2d(Y)

Cdigo 6: O script utilizado para gerar o grco da Figura 6.2.


o
a

Esse script, quando executado, gera o grco apresentado na Figura 6.2.


a
A forma geral para da funo plot2d() inclui um terceiro argumento, <opt_args>,
ca
plot2d([x],y,<opt_args>)
onde <opt_args> uma seqncia de opes que determinam as caracter
e
ue
co
sticas do grco bia
dimensional,
< opt args >:= opcao 1 = valor 1, opcao 2 = valor 2, . . . , opcao n = valor n

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

82

As opes podem ser:


co
style - utilizada para especicar o padro para a curva (ou curvas) que esto sendo
e
a
a
traadas. O valor associado ` essa opo deve ser um vetor com valores inteiros positivos
c
a
ca
ou negativos. Se o valor associado for positivo, a curva cont
e
nua. Nesse caso, o valor
associado ` opo dene, tambm, a cor da curva que est sendo traada. Se o valor
a ca
e
a
c
associado ` opo for negativo ou zero, a curva ser desenhada usando marcadores.
a ca
a
logflag - dene a escala, logar
tmica ou linear, a ser utilizada nos eixos x e y do grco.
a
Os valores associados ` essa opo so strings, nn, nl, ln e ll, onde l indica a
a
ca a
escala logar
tmica, n indica escala normal e a segunda letra indica o tipo de graduao dos
ca
eixos (normal ou logar
tmica). O valor default desta opo nn, isto , escala normal
ca e
e
com graduao normal dos eixos;
ca
rect - utilizada para estabelecer os limites do grco. O valor associado ` essa opo
e
a
a
ca
um vetor real com quatro entradas, [xmin, ymin, xmax, ymax], onde xmin, xmax e
e
ymin, ymax indicam os valores m
nimo e mximo para os eixos x e y, respectivamente;
a

frameflag - E utilizada para controlar a escala dos eixos coordenados. O valor associado
a
` essa opo um nmero inteiro no intervalo 0 e 8, inclusive;
ca e
u
axesflag - especica como os eixos sero traados. O valor associado ` essa opo um
a
c
a
ca e
nmero inteiro variando entre 0 e 5, inclusive;
u
nax - permite denir os nomes e as marcas nos eixos x e y. O valor associado ` essa opo,
a
ca
vlido apenas quando a opo axesflag=1, um vetor com quatro entradas inteiras,
a
ca
e
[nx, Nx, ny, Ny]. O parmetro Nx o nmero de marcaes principais (tics) utilizadas
a
e
u
co
no eixo x; nx o nmero de divises (subtics) entre as marcaes principais do eixo x; Ny
e
u
o
co
e ny tm signicados semelhantes, tratando-se do eixo y, e
e
leg - permite denir as legendas das curvas. O valor associado ` esse parmetro uma
a
a
e
string de caracteres para cada grco traado.
a
c
A sesso Scilab,
a
-->x = [-%pi:0.1:%pi];
-->y = [sin(x) cos(x)];
-->plot2d(x,y, style=[1, -1], rect=[-%pi, -1.5, %pi, 1.5],axesflag=5, ...
-->leg = "sin(x)@cos(x)")
-->

exemplica a forma de utilizao de algumas opes do comando plot2d(). A sa mostrada


ca
co
da e
na Figura 6.3.

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

83

Figura 6.3: Sa
das para a funo plot2d([x], y, <opt_args>).
ca
Observar que a primeira curva, sin(x), cont
e
nua j que o valor do parmetro style
a
a
associado a ela positivo enquanto a segunda curva, cos(x), est desenhada com marcas j
e
a
a
que o parmetro style associado a ela negativo. A opo rect estabelece os limites dos eixos
a
e
ca
x e y, enquanto a opo axesflag=5 traa os eixos na forma apresentada. Finalmente, a opo
ca
c
ca
leg associa uma legenda a cada curva desenhada.
O comando plot2d() apresenta algumas variaes3 , como mostrado na Tabela 6.1.
co
Comando
plot2d2()
plot2d3()
plot2d4()

Tipo de Grco
a
grcos 2-D linearizados
a
grcos 2-D com barras verticais
a
grcos 2-D com setas
a

Tabela 6.1: Variaes do comando plot2d()


co
A sub-opo Graphics da opo Demos apresenta exemplos de utilizao da funo plot2d()
ca
ca
ca
ca

e de suas variaes. E importante lembrar que o demo de uma funo grca tambm pode
co
ca
a
e
ser ativado atravs da chamada da funo. Por exemplo, para ativar o demo da funo grca
e
ca
ca
a
histplot, que plota um histograma, basta fazer:

-->histplot()

6.2.1

Outros Comandos

Existem comandos que podem ser utilizados para melhorar a apresentao de um grco.
ca
a
Dentre eles, destacamos:
xgrid - coloca uma grade em um grco bi-dimensional.
a
3

O comando plot2d1(), para traar grcos bi-dimensionais em escala logar


c
a
tmica est obsoleto. Utilizar
a
plot2d() com a opo logflag adequada
ca

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

84

xtitle - coloca t
tulos em grcos 2-D ou 3-D;
a
titlepage - coloca um t
tulo no meio de uma janela grca.
a
Os elementos de um grco so controlados por parmetros globais. Estes parmetros dea
a
a
a
nem um contexto no qual o grco est inserido. Outros parmetros dos grcos so controlados
a
a
a
a
a
atravs de argumentos dos prprios comandos usados para traa-los. O comando xset, usado
e
o
c
sem argumento, xset(), apresenta um conjunto de opes, chamadas de Contexto grco da
co
a
janela grca 0, (Graphic context of graphic window 0 ), que permitem alterar parmetros
a
a
atravs da utilizao do mouse.
e
ca
O comando
subplot(m,n,p)
permite dividir a janela grca do Scilab em uma matriz m n. Em cada um dos elementos
a
da matriz, especicado por p, pode ser colocado um grco. A sesso a seguir ilustra os
a
a
procedimentos para utilizao do comando subplot() usando os prprios demos de funes
ca
o
co
grcas do Scilab.
a
-->// Demonstracao do comando subplot
-->subplot(221)
-->champ
// chamada do demo da funcao champ
Demo of champ
champ(1:10,1:10,rand(10,10),rand(10,10),1.0);
-->subplot(222)
-->histplot // chamada do demo da funcao histplot
histplot([-6:0.2:6],rand(1,2000,n),[1,-1],011, ,[-6,0,6,0.5],[2,12,2,11]);
deff([y]=f(x),y=exp(-x.*x/2)/sqrt(2*%pi););
x=-6:0.1:6;x=x;plot2d(x,f(x),1,"000");
titre= macro histplot : Histogram plot;
xtitle(titre,Classes,N(C)/Nmax);
-->subplot(223)
-->errbar
// chamada do demo da funcao errbar
x=0:0.1:2*%pi;
y=[sin(x);cos(x)];x=[x;x]
plot2d(x,y);
errbar(x,y,0.05*ones(x),0.03*ones(x));
-->subplot(224)
-->grayplot // chamada do demo da funcao grayplot
Demo of grayplot
t=-%pi:0.1:%pi;m=sin(t)*cos(t);grayplot(t,t,m);
-->

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

85

A Figura 6.4 o resultado dos comandos da sesso anterior.


a

Figura 6.4: Sa
das para a funo subplot().
ca
Observar que essa a Figura 6.4 no foi capturada pelo GIMP. Ela foi armazenada em um
a
ca
a
a
arquivo atravs da sub-opo Export da opo File da janela grca na qual o grco foi
e
ca
gerado. A sub-opo Export possui as opes mostradas na Figura 6.5.
ca
co

A
Figura 6.5: Exportando grcos para o L TEX.
a

Como o arquivo deste trabalho gerado diretamente em pdf, o arquivo grco foi salvo no
e
a
formato gif e transformado em jpg atravs do GIMP.
e

6.2.2

Grcos 2D Especiais
a

Scilab dispe de alguns comandos que permitem traar grcos bi-dimensionais especiais.
o
c
a
Por exemplo, na rea de controle de processos, temos:
a
bode - permite traar o grco de mdulo e fase da resposta em freqncia de um sistema
c
a
o
ue
linear;
gainplot - permite traar o grco do mdulo da resposta em freqncia de um sistema
c
a
o
ue
linear;

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

86

nyquist - permite traar o grco da parte imaginria versus parte real da resposta em
c
a
a
freqncia de um sistema linear;
ue
m_cicle - grco M-c
a
rculo usado com o grco de Nyquist;
a
chart - permite traar a diagrama de Nichols;
c
black - permite traar o diagrama de Black para um sistema linear;
c
evans - permite traar o o lugar das ra
c
zes pelo mtodo de Evans;
e
plzr - permite traar o diagrama de polos e zeros.
c
O help do Scilab fornece informaes mais detalhadas sobre a utilizao dessas funes.
co
ca
co

6.3

Grcos Tri-dimensionais
a

O comando plot3d() permite traar grcos de superf


c
a
cies,

z = f (x, y)
Na notao Scilab, as variveis independentes x e y so vetores de dimenses n1 e n2,
ca
a
a
o
respectivamente, e a varivel dependente z uma matriz de dimenso n1 n2. Ento, por essa
a
e
a
a
denio, o elemento z(i,j) o valor da superf no ponto (x(i), y(j)).
ca
e
cie
Para exemplicar o uso de plot3d(), vamos considerar a funo
ca

cos(x) sin(y)
no intervalo [0, 2] com incremento igual a 0.1. A sesso Scilab,
a
-->x = [0:0.1:2*%pi];
-->y = x;
-->z = cos(x) * sin(x);
-->plot3d(x, x, z)
-->

gera o grco mostrado na Figura 6.6.


a

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

87

Figura 6.6: Exemplo de sa grca 3-D.


da a
Alm da funo plot3d(), e de suas variaes, Scilab implementa outras funes que pere
ca
co
co
mitem traar grcos tri-dimensionais. Dentre elas, destacamos:
c
a
fplot3d - que permite traar grcos de superf
c
a
cies denidas por funes, como no script
co
mostrado no exemplo:
deff(z=f(x,y),z=x^4-y^4)
x=-3:0.2:3 ;y=x ;
clf() ;fplot3d(x,y,f,alpha=5,theta=31)
fplot3d1 - que permite traar grcos de superf
c
a
cies denidas por funes, com o no caso
co
anterior. As superf
cies so apresentadas em escala cinza ou com uma graduao de cores.
a
ca

6.3.1

Grcos 3-D Especiais


a

As seguintes funes permitem traar grcos tri-dimensionais especiais:


co
c
a
param3d - permite traar curvas paramtricas;
c
e
hist3d - permite traar histogramas 3-D;
c
contour - permite traar curvas de n para uma funo 3-D.
c
vel
ca
Na Figura 6.7, utilizamos o comando subplot() para dividir a janela grca do Scilab e
a
mostrar exemplos de utilizao de algumas funes que geram grcos 3-D especiais.
ca
co
a

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

88

Figura 6.7: Exemplos de grcos 3-D especiais.


a
Para gerar os grcos apresentados na Figura 6.7, utilizamos os comandos:
a
-->// Exemplos de graficos 3-D especiais
-->subplot(121);
-->param3d
Demo of param3d
t=0:0.1:5*%pi;param3d(sin(t),cos(t),t/10,35,45,X@Y@Z,[2,4]);
-->subplot(122)
-->hist3d
hist3d(10*rand(10,10));
-->
Ressaltamos que a sintaxe de todos esses comandos pode ser vericada usando o help do
Scilab.

Apndice A
e

Instalao do Scilab
ca
O objetivo deste Apndice apresentar os procedimentos necessrios ` instalao do Scilab
e
e
a
a
ca
a partir de seu cdigo fonte. A instalao feita no ambiente Linux distribuio Slackware 9.1,
o
ca e
ca
com kernel 2.4.24. Apesar de apresentarmos os procedimentos de instalao em uma plataforma
ca
espec
ca, eles so vlidos para qualquer ambiente operacional que disponha dos requisitos
a
a
m
nimos exigidos, apresentados na seo A.1.
ca
Os procedimentos necessrios ` instalao de outras distribuies, binrias ou pr-compiladas,
a
a
ca
co
a
e
podem ser encontrados na homepage do Scilab1 . Na data em que este documento foi escrito,
esto dispon
a
veis, na homepage do Scilab, arquivos para as seguintes plataformas:
Plataformas UNIX/Linux:
Scilab 3.0 - arquivo binrio para Linux (scilab-3.0.bin.linux-i686.tar.gz);
a
Scilab 3.0 - arquivo com o cdigo fonte do Scilab (scilab-3.0.src.tar.gz).
o
Plataformas Windows 9X/NT/2000/XP
Scilab 3.0 - instalador da verso binria do Scilab (scilab3.0.exe);
a
a
Scilab 3.0 - cdigo fonte do Scilab (scilab-3.0.src.zip)
o

A.1

Instalao no Linux Slackware - Cdigo Fonte


ca
o

O cdigo fonte para a verso 3.0 do software Scilab disponibilizado atravs do arquivo
o
a
e
e
scilab-3.0-src.tar.gz na homepage do Scilab. Para instalar o software a partir do cdigo
o
fonte, devemos garantir que:
O X-Window esteja instalado (X11R4, X11R5 ou X11R6), e
O sistema disponha de compiladores C e FORTRAN (cc e g77).
Para que o help do Scilab seja instalado, necessrio que o sistema operacional disponha do
e
a
software Sablotron, dispon em http://www.gingerall.com/charlie/ga/xml/p_sab.xml.
vel
Tendo garantido os requisitos m
nimos, escolhemos o diretrio no qual o software ser instao
a
lado. Geralmente, utilizamos o diretrio /usr/local. Copiamos, ento, a distribuio fonte
o
a
ca
do Scilab para este diretrio. Descompactamos o arquivo atravs do comando tar -zxvf
o
e
scilab-3.0-src.tar.gz. Ser criado um diretrio /usr/local/scilab-3.0 onde estaro coa
o
a
locados todos os arquivos que compem o software. O diretrio /usr/local/scilab-3.0
o
o
e
chamado de diretrio principal do Scilab, referenciado pela varivel de ambiente SCIDIR. Estes
o
a
procedimentos devem ser realizados como root.
1

http://scilabsoft.inria.fr/

89

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

90

A instalao do software propriamente dita bastante simples. No diretrio SCIDIR digitaca


e
o
interessante executar, nesse momento, um teste da
se .\configure e, depois, make all. E
instalao. Isso pode ser feito atravs do comando make tests executando dentro do diretrio
ca
e
o
SCIDIR/tests. Para complementar a instalao, o usurio deve, tambm, acrescentar ` varivel
ca
a
e
a
a
PATH o caminho /usr/local/scilab-3.0/bin para que o Scilab possa ser executado de qualquer diretrio2 . Mais detalhes sobre opes de congurao podem ser encontrados no arquivo
o
co
ca
/usr/local/scilab-3.0/README_Unix
Para executar o programa, basta digitar scilab no ambiente grco ou scilab -nw no
a
ambiente texto do Linux.
No diretrio SCIDIR=/usr/local/scilab-3.0 esto localizados, entre outros, os seguintes
o
a
arquivos :
scilab.star - arquivo de inicializao do Scilab. As instrues deste arquivo so execa
co
a
cutadas quando Scilab ativado. O usurio tambm pode ter seu prprio arquivo de
e
a
e
o
inicializao, .scilab, dentro do seu diretrio;
ca
o
license.txt - arquivo contendo informaes relativas ao uso do software, e
co
configure - arquivo de preparao para a instalao. Este arquivo modicar outros
ca
ca
a
arquivos do Scilab, os Makefile, de acordo com a congurao do Sistema Operacional
ca
no qual Scilab ser instalado.
a
Em SCIDIR so criados os seguintes diretrios :
a
o
bin/ - onde esto localizados os arquivos executveis. Nas distribuies Unix/Linux o
a
a
co
script scilab aciona o executvel scilex. Neste diretrio esto, tambm, localizados
a
o
a
e
A X gerados pelo Scilab;
programas para manipulao de arquivos Postscript e L TE
ca
config/ - onde esto localizados os arquivos utilizados pelo arquivo de congurao
a
ca
configure;
contrib/ - onde esto colocados os arquivos correspondentes aos toolboxes instalados;
a
demos/ - onde esto localizados os arquivos de demonstrao;
a
ca
examples/ - onde esto localizados arquivos com exemplos de como ligar o Scilab com
a
programas externos;
imp/ - onde esto localizados os cdigos fontes dos programas que permitem a manipulao
a
o
ca
de arquivos Postscript;
intersi/ - onde esto localizados os arquivos que permitem a construo das interfaces
a
ca
necessrias para adicionar novas primitivas escritas em FORTRAN ou C ao Scilab;
a
libs/ - onde esto localizados os cdigos objeto das bibliotecas do Scilab;
a
o
macros/ - onde esto localizadas as funes do Scilab. Este diretrio contm diversos
a
co
o
e
sub-diretrios correpondendo, cada um, a um tpico espec
o
o
co. Por exemplo, no diretrio
o
signal esto localizadas as funes que permitem trabalhar com aspectos relacionados
a
co
com a rea de processamento de sinais. Cada sub-diretrio contm o cdigo fonte das
a
o
e
o
funes (arquivos com extenso .sci);
co
a
man/ - onde esto localizados diversos sub-diretrios contendo arquivos man (help on-line)
a
o
dos comandos e funes que compem o Scilab;
co
o
2
No Linux distribuio Slackware, editar o arquivo /etc/profile adicionando o caminho /usr/local/scilabca
3.0/bin ` varivel de ambiente PATH
a
a

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

91

maple/ - onde esto localizados arquivos escritos na linguagem Maple que permitem a
a
ligao do software de computao simblica Maple com Scilab;
ca
ca
o
pvm3/ - implementao da verso 3.4 do PVM (Parallel Vitual Machine System) para
ca
a
Scilab;
routines/ - onde esto as rotinas numricas em C e em FORTRAN utilizadas pelo Scilab,
a
e
divididas por sub-diretrios;
o
scripts/ - onde esto localizados os fontes de alguns script utilizados pelo Scilab;
a
tcl/ - implementao TCL/TK para Scilab;
ca
tests/ - onde esto localizados arquivos para a realizao de testes da instalao do
a
ca
ca
Scilab, e
util/ - onde esto localizadas rotinas e arquivos para gerenciamento do Scilab.
a

Apndice B
e

Ligao do Scilab com Programas


ca
em C
Os programas escritos na linguagem Scilab so interpretados. Estes programas, principala
mente os que realizam clculos numricos utilizados em simulaes ou otimizaes, podem ser
a
e
co
co
lentos em comparao com os programas compilados escritos em linguagens convencionais. Uma
ca
maneira de acelerar a execuo desses programas, sem perder a exibilidade disponibilizada pelo
ca
Scilab, escrever o cdigo lento em uma linguagem convencional e utilizar este cdigo dentro
e
o
o
do ambiente Scilab.
O Scilab permite que rotinas ou funes escritos em FORTRAN ou C sejam utilizados
co
dentro de seu ambiente. Neste Apndice, apresentamos os procedimentos necessrios ` ligao
e
a
a
ca
de programas Scilab com funes escritas na linguagem C.
co
Uma funo escrita na linguagem C pode ser ligada ao Scilab de trs maneiras distintas :
ca
e
atravs do comando link, em um processo chamado de ligao dinmica;
e
ca
a
atravs de programas de interface, os chamados gateways, escritos pelo usurio ou gerados
e
a
por intersi, ou
atravs da adio de uma nova funo ao cdigo do Scilab.
e
ca
ca
o
Apenas a primeira maneira ser apresentada. Os demais casos podem ser vericados em [1].
a

B.1

A Ligao Dinmica
ca
a

O comando
--> link(foo.o,foo,c)
-->
liga o arquivo com o cdigo objeto da funo foo, foo.o, escrita na linguagem C, indicado pelo
o
ca
terceiro argumento, c, ao Scilab. O segundo argumento de link, foo, o nome da funo a
e
ca
ser executada. Um arquivo objeto pode conter vrias funes. O nome de cada uma delas, se
a
co
necessrio, deve ser indicado como segundo argumento de link na forma de um vetor de strings,
a
[prog1, prog2].
Para exemplicar a ligao de uma funo escrita em C com um programa em Scilab, vamos
ca
ca
re-escrever em C o programa Scilab que implementa o mtodo de Runge-Kutta de 4a ordem
e
apresentado no Cap
tulo 5. Algumas observaes devem ser feitas :
co
O programa transforma-se em uma funo;
ca
92

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

93

Alm do intervalo de integrao, [a,b], do passo de integrao, h e da condio inicial


e
ca
ca
ca
em y, y0, que so os argumentos de entrada da funo, os vetores x e y so explicitados
a
ca
a
na chamada da funo e so os seus argumentos de retorno ou de sa
ca
a
da;
As variveis de entrada da funo principal, rk4, so passadas como apontadores;
a
ca
a
A ordem dos argumentos na chamada da funo relevante;
ca e
A funo a ser integrada faz parte do arquivo que contm a funo principal;
ca
e
ca
O programa, transformado em uma funo C, e a funo com a equao a ser integrada, so
ca
ca
ca
a
mostrados em Cdigo 7.
o
1

/*
Exemplo de utilizacao do comando link.
Resolucao de equacoes diferenciais ordinarias por Runge-Kutta
de 4a. ordem.

2
3
4
5

Entrada : [a,b] - intervalo de integracao


h - passo da integracao
y0 - condicao inicial em x0

6
7
8
9

*/

10
11
12
13
14
15
16

double rk4(x, y, a, b, h, y0)


double x[], y[], *a, *b, *h, *y0;
{
int n, k;
double hf1, hf2, hf3, hf4;
double f();

17

n = (*b - *a) / (*h);

18
19

x[0] = *a;
y[0] = *y0;

20
21
22

for (k = 0; k < n; ++k)


{
hf1 = (*h) * f(x[k], y[k]);
hf2 = (*h) * f(x[k] + (*h)/2, y[k] + hf1/2);
hf3 = (*h) * f(x[k] + (*h)/2, y[k] + hf2/2);
hf4 = (*h) * f(x[k] + (*h), y[k] + hf3);

23
24
25
26
27
28
29

y[k+1] = y[k] + (hf1 + 2*hf2 + 2*hf3 + hf4)/6;


x[k+1] = x[k] + (*h);

30
31

32
33

34
35

/*
Funcao a ser integrada

36
37

*/

38
39
40
41
42
43

double f(x,y)
double x, y;
{
return( (x - y)/2 );
}

Cdigo 7: Funo Runge-Kutta escrita em C.


o
ca

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

94

Usando o compilador gcc, geramos o cdigo objeto runge.o para o programa runge.c
o
atravs da linha de comando:
e
paulo@pmotta:~$ gcc -c runge.c -o runge.o
Em seguida, no ambiente Scilab, o cdigo objeto ligado ao Scilab atravs do comando
o
e
e
link,
-->link(runge.o,rk4,c)
linking files runge.o to create a shared executable
shared archive loaded
Linking rk4
Link done
ans =
0.
-->
Observar que rk4, segundo argumento de link o nome da rotina que resolve o problema.
e
Para acessar a funo rk4, devemos inicializar seus parmetros de entrada. A inicializao
ca
a
ca
desses parmetros feita atravs dos comandos,
a
e
e
->a = 0

// Valor inicial do intervalo

0.
-->b = 3

// Valor final do intervalo

3.
-->h = 1/8

// Passo da integracao

0.125
-->y0 = 1

// Valor da condicao inicial em y

1.
-->
Em seguida, usamos a funo call para rodar a funo rk4,
ca
ca
-->[X,Y]=call(rk4,a,3,d,b,4,d,h,5,d,y0,6,d,out, ...
-->[25,1],1,d,[25,1],2,d);

O primeiro argumento da funo call o nome da funo rk4. Cada argumento de entrada
ca
e
ca
da funo rk4 deve ser acompanhado da posio em que ele ocupa na lista de argumentos da
ca
ca
funo chamada, rk4, e o seu tipo de dado. Assim, considerando
ca
double rk4(x, y, a, b, h, y0),

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

95

vemos que a o terceiro argumento na lista dos parmetros de rk4 e seu tipo de dado double.
e
a
e
Este fato indicado na funo call por a,3,d. Do mesmo modo, b o quarto argumento,
e
ca
e
tipo de dado1 double, indicado em call por b,4,d, e assim por diante.
Os argumentos de sa
da, especicados aps out, so vetores do tipo double, indicado por
o
a
d, com vinte e cinco linhas e uma coluna, indicados por [25,1], ocupando as posies 1 e 2
co
da lista de argumentos da funo rk42 .
ca
Finalmente, os valores de retorno de rk4 so associados `s variveis [X, Y] do ambiente
a
a
a
Scilab. A resposta, ento,
a e
-->[X Y]
ans =
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!

0.
0.125
0.25
0.375
0.5
0.625
0.75
0.875
1.
1.125
1.25
1.375
1.5
1.625
1.75
1.875
2.
2.125
2.25
2.375
2.5
2.625
2.75
2.875
3.

1.
0.9432392
0.8974908
0.8620874
0.8364024
0.8198470
0.8118679
0.8119457
0.8195921
0.8343486
0.8557844
0.8834949
0.9170998
0.9562421
1.0005862
1.049817
1.1036385
1.1617724
1.2239575
1.2899485
1.3595145
1.4324392
1.5085189
1.5875626
1.6693906

!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!

-->
Observar que a funo call foi chamada com um ponto-e-v
ca
rgula no nal, suprimindo a
apresentao imediata dos resultados. S depois, os vetores X e Y foram mostrados. Neste caso,
ca
o
o ponto-e-v
rgula evitou que primeiro fosse mostrado o vetor Y e, depois, o vetor X.

1
2

Os outros poss
veis tipos de dados so real, r e inteiro, i
a
Observar que, na resposta, so n = (b a)/h iteraes mais o valor da condio inicial, (x0, y0)
a
co
ca

Apndice C
e

Instalao de Toolboxes
ca
O objetivo deste Apndice apresentar os procedimentos necessrios ` instalao de toolboxes
e
e
a
a
ca
no Scilab 3.0. A instalao feita no ambiente Linux distribuio Slackware 9.1, com kernel
ca e
ca
2.4.24. Os toolboxes so conjuntos de funes desenvolvidas com uma nalidade especica.
a
co
Os toolboxes para Scilab esto dispon
a
veis em http://scilabsoft.inria.fr/contributions.
html/.

C.1

Instalao
ca

Scilab tem toolboxes dispon


veis nas seguintes reas:
a
Interface grca com o usurio;
a
a
Processamento e manipulao de imagens;
ca
Elementos nitos;
Otimizao;
ca
Programao linear;
ca
Simulao;
ca
Modelagem e controle, incluindo redes neurais, wavelets e aprendizagem com reforo;
c
Estat
stica e anlise de dados;
a
Reconhecimento de padres;
o
entre outras.
Para exemplicar os procedimentos de instalao de um toolbox no Scilab, vamos utilizar o
ca
toolbox ANN que implementa funes para anlise de sinais utilizando redes neurais. A instalao
co
a
ca
ser realizada pelo usurio root.
a
a
O toolbox ANN est dispon no arquivo ANN_Toolbox_0.4.2.tar.gz que pode ser obtido
a
vel
em ftp://ftp.inria.fr/INRIA/Scilab/contrib/ANN/. A primeira providncia, ento, abrir
e
a e
este arquivo em um diretrio adequado. Atravs do comando
o
e
tar -zxvf ANN_Toolbox_0.4.2.tar.gz,
executado como root dentro do diretrio /usr/local, criamos o diretrio
o
o
/usr/local/ANN_Toolbox_0.4.2.

96

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

97

Neste diretrio esto localizados os cdigos fontes das funes que compem o toolbox.
o
a
o
co
o
O prximo passo executar o script builder.sce,
o
e
--> exec /usr/local/ANN_Toolbox_0.4.2/builder.sce
para instalar os comandos e funes do tooolbox. Este procedimento pode, por exemplo, ser
co
executado utilizando-se o Scilab em modo texto.
root@none:/usr/local/ANN_Toolbox_0.4.2# scilab -nw
------------------------------------------Scilab-3.0
Copyright (c) 1989-2004
Consortium Scilab (INRIA, ENPC)
-------------------------------------------

Startup execution:
loading initial environment
-->exec /usr/local/ANN_Toolbox_0.4.2/builder.sce
-->mode(-1)
Processing /usr/local/ANN_Toolbox_0.4.2/man/ann/ANN.man to ascii
Processing /usr/local/ANN_Toolbox_0.4.2/man/ann/ANN_FF.man to ascii
Processing /usr/local/ANN_Toolbox_0.4.2/man/ann/ANN_GEN.man to ascii
Processing /usr/local/ANN_Toolbox_0.4.2/man/ann/ann_FF_ConjugGrad.man to ascii
Processing /usr/local/ANN_Toolbox_0.4.2/man/ann/ann_FF_Hess.man to ascii
Processing /usr/local/ANN_Toolbox_0.4.2/man/ann/ann_FF_INT.man to ascii
Processing /usr/local/ANN_Toolbox_0.4.2/man/ann/ann_FF_Jacobian.man to ascii
Processing /usr/local/ANN_Toolbox_0.4.2/man/ann/ann_FF_Jacobian_BP.man to ascii
Processing /usr/local/ANN_Toolbox_0.4.2/man/ann/ann_FF_Mom_batch.man to ascii
Processing /usr/local/ANN_Toolbox_0.4.2/man/ann/ann_FF_Mom_batch_nb.man to ascii
Processing /usr/local/ANN_Toolbox_0.4.2/man/ann/ann_FF_Mom_online.man to ascii
Processing /usr/local/ANN_Toolbox_0.4.2/man/ann/ann_FF_Mom_online_nb.man to ascii
Processing /usr/local/ANN_Toolbox_0.4.2/man/ann/ann_FF_SSAB_batch.man to ascii
Processing /usr/local/ANN_Toolbox_0.4.2/man/ann/ann_FF_SSAB_batch_nb.man to ascii
Processing /usr/local/ANN_Toolbox_0.4.2/man/ann/ann_FF_SSAB_online.man to ascii
Processing /usr/local/ANN_Toolbox_0.4.2/man/ann/ann_FF_SSAB_online_nb.man to ascii
Processing /usr/local/ANN_Toolbox_0.4.2/man/ann/ann_FF_Std_batch.man to ascii
Processing /usr/local/ANN_Toolbox_0.4.2/man/ann/ann_FF_Std_batch_nb.man to ascii
Processing /usr/local/ANN_Toolbox_0.4.2/man/ann/ann_FF_Std_online.man to ascii
Processing /usr/local/ANN_Toolbox_0.4.2/man/ann/ann_FF_Std_online_nb.man to ascii
Processing /usr/local/ANN_Toolbox_0.4.2/man/ann/ann_FF_VHess.man to ascii
Processing /usr/local/ANN_Toolbox_0.4.2/man/ann/ann_FF_grad.man to ascii
Processing /usr/local/ANN_Toolbox_0.4.2/man/ann/ann_FF_grad_BP.man to ascii
Processing /usr/local/ANN_Toolbox_0.4.2/man/ann/ann_FF_grad_BP_nb.man to ascii
Processing /usr/local/ANN_Toolbox_0.4.2/man/ann/ann_FF_init.man to ascii
Processing /usr/local/ANN_Toolbox_0.4.2/man/ann/ann_FF_init_nb.man to ascii
Processing /usr/local/ANN_Toolbox_0.4.2/man/ann/ann_FF_run.man to ascii
Processing /usr/local/ANN_Toolbox_0.4.2/man/ann/ann_FF_run_nb.man to ascii
Processing /usr/local/ANN_Toolbox_0.4.2/man/ann/ann_d_log_activ.man to ascii

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a
Processing
Processing
Processing
Processing

98

/usr/local/ANN_Toolbox_0.4.2/man/ann/ann_d_sum_of_sqr.man to ascii
/usr/local/ANN_Toolbox_0.4.2/man/ann/ann_log_activ.man to ascii
/usr/local/ANN_Toolbox_0.4.2/man/ann/ann_pat_shuffle.man to ascii
/usr/local/ANN_Toolbox_0.4.2/man/ann/ann_sum_of_sqr.man to ascii

-->
Aps ser instalado, os comandos e funes do toolbox podero ser usados por qualquer
o
co
a
usurio bastando que ele execute o script loader.sce,
a
-->exec /usr/local/ANN_Toolbox_0.4.2/loader.sce
para carregar os comandos e funces do toolbox ANN no ambiente do Scilab.
o
Na Figura C.1, mostramos o procedimento para a utilizao do toolbox. Observar que as
ca
funes do toolbox instalado j aparecem no help.
co
a

Figura C.1: Procedimentos para a utilizao do toolbox ANN e help com as funes dispon
ca
co
veis
no toolbox.
A instalao e o acesso a outros toolboxes do Scilab feita a partir de procedimentos semeca
e
lhantes aos apresentados neste Apndice.
e

Apndice D
e

Funes Pr-denidas - Scilab 3.0


co
e
Apresentamos a relao de todas as funes dispon
ca
co
veis no Scilab 3.0. Esta relao foi
ca
obtida a partir de uma busca automtica realizada no diretrio SCI/man/eng/. Entretanto,
a
o
A
alguns caracteres foram ajustados (ainda) manualmente ` sintaxe do L TEX.
a

D.1

Programming

errcatch - error trapping

abort - interrupt evaluation.

errclear - error clearing

ans - answer

error - error messages

backslash - (\) left matrix division.

etime - Elapsed time

bool2s - convert boolean matrix to a zero one matrix.

evstr - evaluation of expressions

boolean - Scilab Objects, boolean variables and operators &, |, ~

exec - script le execution


execstr - execute Scilab code in strings

brackets - ([,]) left and right brackets


exists - checks variable existence
break - keyword to interrupt loops
exit - Ends the current Scilab session
call - Fortran or C user routines call
case - keyword used in select

external - Scilab Object, external function or routine

clear - kills variables

extraction - matrix and list entry extraction

clearglobal - kills global variables

feval - multiple evaluation

colon - (:) colon operator

find - nd indices of boolean vector or matrix true


elements

comma - (,) column, instruction, argument separator


for - language keyword for loops
comments - comments
format - number printing and display format
continue - keyword to pass control to the next iteration of a loop

fort - Fortran or C user routines call

date - Current date as date string

funptr - coding of primitives ( wizard stu )

debug - debugging level

getdate - get date and time information

definedfields - return index of lists dened elds

getenv - get the value of an environment variable

dot - (.) symbol

getfield - list eld extraction

else - keyword in if-then-else

getpid - get Scilab process identicator

elseif - keyword in if-then-else

getversion - get Scilab version name

empty - ([]) empty matrix

global - Dene global variable

end - end keyword

gstacksize - set/get scilab global stack size

equal - (=) aectation, comparison equal sign

hat - (^) exponentiation

99

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

host - Unix or DOS command execution

pwd - print Scilab current directory

hypermat - initialize an N dimensional matrices

quit - decrease the pause level or exit

hypermatrices - Scilab object, N dimensional matrices in Scilab

quote - () transpose operator, string delimiter

iconvert - conversion to 1 or 4 byte integer representation

100

rational - Scilab objects, rational in Scilab

ieee - set oating point exception mode


if - conditional execution

resume - return or resume execution and copy some


local variables
return - return or resume execution and copy some
local variables

assignation - partial variable assignation


insertion - partial variable assignation or modication
intppty - set interface argument passing properties

rlist - Scilab rational fraction function denition


sciargs - scilab command line arguments
select - select keyword

inttype - type integers used in integer data types


semi - (;) instruction and row separator
inv_coeff - build a polynomial matrix from its coefcients

semicolon - (;) ending expression and row separator

iserror - error occurence test

setfield - list eld insertion

isglobal - check if a variable is global


lasterror - get last recorded error message

slash - (/) right division and feed back


stacksize - set scilab stack size

left - ([) left bracket


star - (*) multiplication operator
less - (<) lower than comparison
symbols - scilab operator names
list - Scilab object and list function denition
lsslist - Scilab linear state space function denition
lstcat - list concatenation

testmatrix - generate some particular matrices


then - keyword in if-then-else

matrices - Scilab object, matrices in Scilab

tic - start a stopwatch timer

matrix - reshape a vector or a matrix to a dierent


size matrix

tilda - (~) logical not


tlist - Scilab object and typed list denition.

mlist - Scilab object, matrix oriented typed list denition.


mode - select a mode in exec le
mtlb_mode - switch Matlab like operations

toc - Read the stopwatch timer


type - variable type
typename - associates a name to variable type

names - scilab names syntax


user - interfacing a Fortran or C routine
null - delete an element in a list
overloading - display, functions and operators overloading capabilities
parents - ( ) left and right parenthesis
pause - pause mode, invoke keyboard

varn - symbolic variable of a polynomial


what - list the Scilab primitives
where - get current instruction calling tree
whereami - display current instruction calling tree

percent - (%) special character


whereis - name of library containing a function
plus - (+) addition operator
poly - polynomial denition
power - power operation (^,.^)

while - while keyword


who - listing of variables

predef - variable protection

who_user - listing of users variables

getcwd - get Scilab current directory

whos - listing of variables in long form

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

D.2

Graphics Library

101

drawnow - draw hidden graphics entities.

Graphics - graphics library overview

driver - select a graphics driver

Matplot - 2D plot of a matrix using colors

edit_curv - interactive graphic curve editor

Matplot1 - 2D plot of a matrix using colors

errbar - add vertical error bars on a 2D plot

Sfgrayplot - smooth 2D plot of a surface dened by


a function using colors

eval3d - values of a function on a grid


eval3dp - compute facets of a 3D parametric surface

Sgrayplot - smooth 2D plot of a surface using colors


evans - Evans root locus
addcolor - add new colors to the current colormap
fac3d - 3D plot of a surface (obsolete)
agregation_properties - description of the Agregation entity properties

fchamp - direction eld of a 2D rst order ODE

alufunctions - pixel drawing functions

fcontour - level curves on a 3D surface dened by a


function

arc_properties - description of the Arc entity properties


axes_properties - description of the axes entity properties
axis_properties - description of the axis entity properties
black - Blacks diagram (Nichols chart)
bode - Bode plot
champ - 2D vector eld plot
champ1 - 2D vector eld plot with colored arrows

fcontour2d - level curves of a surface dened by a


function on a 2D plot
fec - pseudo-color plot of a function dened on a
triangular mesh
fec_properties - description of the fec entities properties
fgrayplot - 2D plot of a surface dened by a function
using colors
figure_properties - description of the graphics gure entity properties
fplot2d - 2D plot of a curve dened by a function

champ_properties - description of the 2D vector eld


entity properties

fplot3d - 3D plot of a surface dened by a function

chart - Nichols chart

fplot3d1 - 3D gray or color level plot of a surface


dened by a function

clear_pixmap - erase the pixmap buer


clf - clear or reset the current graphic gure (window) to default values
color - returns the color id of a color

gainplot - magnitude plot


gca - Return handle of current axes.
gce - Get current entity handle.

color_list - list of named colors

gcf - Return handle of current graphic or GUI window.

colorbar - draw a colorbar

gda - Return handle of default axes.

colormap - using colormaps

gdf - Return handle of default gure.

contour - level curves on a 3D surface

genfac3d - compute facets of a 3D surface

contour2d - level curves of a surface on a 2D plot

geom3d - projection from 3D on 2D after a 3D plot

contour2di - compute level curves of a surface on a


2D plot

get - Retrieve a property value from a graphics entity


or an User Interface object.

contourf - lled level curves of a surface on a 2D plot

getcolor - opens a dialog to show colors in the current colormap

copy - copy a graphics entity.


getfont - dialog to select font
delete - delete a graphic entity and its children.
getlinestyle - dialog to select linestyle
dragrect - Drag rectangle(s) with mouse
getmark - dialog to select mark (symbol)
draw - draw an entity.
getsymbol - dialog to select a symbol and its size
drawaxis - draw an axis
drawlater - makes axes children invisible.

glue - glue a set of graphics entities into an agregation.

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

102

gr_menu - simple interactive graphic editor

plot2d_old_version - 2D plot reference

graduate - pretty axis graduations

plot3d - 3D plot of a surface

graphics_entities - description of the graphics entities data structures

plot3d1 - 3D gray or color level plot of a surface

graycolormap - linear gray colormap

plot3d2 - plot surface dened by rectangular facets

grayplot - 2D plot of a surface using colors

plot3d3 - mesh plot surface dened by rectangular


facets

grayplot_properties - description of the grayplot


entities properties

plot3d_old_version - 3D plot of a surface

graypolarplot - Polar 2D plot of a surface using colors


hist3d - 3D representation of a histogram
histplot - plot a histogram
hotcolormap - red to yellow colormap
isoview - set scales for isometric plot (do not change
the size of the window)

plotframe - plot a frame with scaling and grids


plzr - pole-zero plot
polarplot - Plot polar coordinates
polyline_properties - description of the Polyline
entity properties
printing - printing scilab graphics

jetcolormap - blue to red colormap

rectangle_properties - description of the Rectangle


entity properties

label_properties - description of the Label entity


properties

replot - redraw the current graphics window with


new boundaries

legend - draw graph legend

rgb2name - returns the name of a color

legend_properties - description of the Legend entity


properties

rotate - rotation of a set of points

legends - draw graph legend


loadplots - loads and formats saved plots
locate - mouse selection of a set of points
m_circle - M-circle plot
milk_drop - milk drop 3D function

rubberbox - Rubberband box for rectangle selection


scaling - ane transformation of a set of points
scf - set the current graphic gure (window)
sd2sci - gr menu structure to scilab instruction convertor
sda - Set default axes.

move - move, translate, a graphic entity and its children.

sdf - Set default gure.

name2rgb - returns the RGB values of a named color

secto3d - 3D surfaces conversion

nf3d - rectangular facets to plot3d parameters

segs_properties - description of the Segments entity


properties

nyquist - nyquist plot


param3d - 3D plot of a parametric curve

set - set a property value of a graphic entity object


or of a User Interface object.

param3d1 - 3D plot of parametric curves

sgrid - s-plane grid lines.

param3d_properties - description of the 3D curves


entities properties

show_pixmap - send the pixmap buer to the screen

paramfplot2d - animated 2D plot, curve dened by


a function
plot - simple plot
plot2d - 2D plot
plot2d1 - 2D plot (logarithmic axes) (obsolete)
plot2d2 - 2D plot (step function)

square - set scales for isometric plot (change the size


of the window)
subplot - divide a graphics window into a matrix of
sub-windows
surface_properties - description of the 3D entities
properties
text_properties - description of the Text entity properties

plot2d3 - 2D plot (vertical bars)


plot2d4 - 2D plot (arrows style)

title_properties - description of the Title entity


properties

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

titlepage - add a title in the middle of a graphics


window
twinkle - is used to have a graphics entity twinkle

103

xpoly - draw a polyline or a polygon

xpolys - draw a set of polylines or polygons

unglue - unglue an agragation and replace it by individual children.


winsid - return the list of graphics windows

xrect - draw a rectangle

xarc - draw a part of an ellipse


xrects - draw or ll a set of rectangles
xarcs - draw parts of a set of ellipses
xarrows - draw a set of arrows

xrpoly - draw a regular polygon

xaxis - draw an axis


xbasc - clear a graphics window and erase the associated recorded graphics
xbasimp - send graphics to a Postscript printer or in
a le

xs2fig - send graphics to a le in Xg syntax

xs2gif - send graphics to a le in GIF syntax

xbasr - redraw a graphics window


xchange - transform real to pixel coordinates

xs2ppm - send graphics to a le in PPM syntax

xclea - erase a rectangle


xclear - clear a graphics window

xs2ps - send graphics to a le in PS syntax

xclick - wait for a mouse click


xclip - set a clipping zone

xsave - save graphics into a le

xdel - delete a graphics window


xsegs - draw unconnected segments
xend - close a graphics session
xfarc - ll a part of an ellipse

xselect - raise the current graphics window

xfarcs - ll parts of a set of ellipses


xfpoly - ll a polygon

xset - set values of the graphics context

xfpolys - ll a set of polygons


xfrect - ll a rectangle

xsetech - set the sub-window of a graphics window


for plotting

xget - get current values of the graphics context


xgetech - get the current graphics scale

xsetm - dialog to set values of the graphics context

xgetmouse - get the mouse events and current position


xgraduate - axis graduation

xstring - draw strings

xgrid - add a grid on a 2D plot


xstringb - draw strings into a box
xinfo - draw an info string in the message subwindow
xinit - initialisation of a graphics driver

xstringl - compute a box which surrounds strings

xlfont - load a font in the graphic context or query


loaded font
xload - load a saved graphics
xname - change the name of the current graphics window

xtape - set up the record process of graphics

xtitle - add titles on a graphics window

xnumb - draw numbers


xpause - suspend Scilab

zgrid - zgrid plot

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

D.3

Elementary Functions

104

coth - hyperbolic cotangent

abs - absolute value, magnitude

cothm - matrix hyperbolic cotangent

acos - element wise cosine inverse

cshep2d - bidimensional cubic shepard (scattered) interpolation

acosh - hyperbolic cosine inverse


cumprod - cumulative product
acoshm - matrix hyperbolic inverse cosine
cumsum - cumulative sum
acosm - matrix wise cosine inverse
delip - elliptic integral
addf - symbolic addition
diag - diagonal including or extracting
adj2sp - converts adjacency form into sparse matrix.
diff - Dierence and discrete derivative
amell - Jacobis am function
and - (&) logical and
asin - sine inverse

dlgamma - derivative of gammaln function, psi function


double - conversion from integer to double precision
representation

asinh - hyperbolic sine inverse


asinhm - matrix hyperbolic inverse sine

dsearch - binary search (aka dichotomous search in


french)

asinm - matrix wise sine inverse

erf - The error function.

atan - 2-quadrant and 4-quadrant inverse tangent

erfc - The complementary error function.

atanh - hyperbolic tangent inverse

erfcx - scaled complementary error function.

atanhm - matrix hyperbolic tangent inverse

eval - evaluation of a matrix of strings

atanm - square matrix tangent inverse

eval_cshep2d - bidimensional cubic shepard interpolation evaluation

besseli - Modied Bessel functions of the rst kind


(I sub alpha).
besselj - Bessel functions of the rst kind (J sub
alpha).

eye - identity matrix


fix - rounding towards zero
floor - rounding down

besselk - Modied Bessel functions of the second


kind (K sub alpha).

frexp - dissect oating-point numbers into base 2 exponent and mantissa

bessely - Bessel functions of the second kind (Y sub


alpha).

full - sparse to full matrix conversion

beta - beta function

gamma - The gamma function.

binomial - binomial distribution probabilities

gammaln - The logarithm of gamma function.

bloc2exp - block-diagram to symbolic expression

gsort - decreasing order sorting

bloc2ss - block-diagram to state-space conversion

imag - imaginary part

bsplin3val - 3d spline arbitrary derivative evaluation function

imult - multiplication by i the imaginary unitary


ind2sub - linear index to matrix subscript values

calerf - computes error functions.


int - integer part
ceil - rounding up
int16 - conversion to 2 bytes integer representation
cmb_lin - symbolic linear combination
int32 - conversion to 4 bytes integer representation
conj - conjugate
int8 - conversion to one byte integer representation
cos - cosine function
cosh - hyperbolic cosine
coshm - matrix hyperbolic cosine

uint16 - conversion to 2 bytes unsigned integer representation


uint32 - conversion to 4 bytes unsigned integer representation

cosm - matrix cosine function


cotg - cotangent

uint8 - conversion to one byte unsigned integer representation

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

integrate - integration by quadrature

105

mps2linpro - convert lp problem given in MPS format to linpro format

interp - cubic spline evaluation function


mtlb_sparse - convert sparse matrix
interp2d - bicubic spline (2d) evaluation function
mulf - symbolic multiplication
interp3d - 3d spline evaluation function
interpln - linear interpolation
intersect - returns the vector of common values of
two vectors
intsplin - integration of experimental data by spline
interpolation
inttrap - integration of experimental data by trapezoidal interpolation
isdef - check variable existence
isempty - check if a variable is an empty matrix or
an empty list
isequal - objects comparison
isinf - check for innite entries
isnan - check for Not a Numberentries
isreal - check if a variable as real or complex entries
kron - Kronecker product (.*.)

ndgrid - arrays for multidimensional function evaluation on grid


ndims - number of dimensions of an array
nearfloat - get previous or next oating-point number
nextpow2 - next higher power of 2.
nnz - number of non zero entries in a matrix
norm - matrix norms
not - (~) logical not
number_properties - determine oating-point parameters
ones - matrix made of ones
or - (|) logical or
pen2ea - pencil to E,A conversion
pertrans - pertranspose
prod - product

ldivf - left symbolic division


rand - random number generator
legendre - associated Legendre functions
rat - Floating point rational approximation
lex_sort - lexicographic matrix rows sorting
rdivf - right symbolic division
linear_interpn - n dimensional linear interpolation
real - real part
linspace - linearly spaced vector
round - rounding
log - natural logarithm
log10 - logarithm
log1p - computes with accuracy the natural logarithm of its argument added by one
log2 - base 2 logarithm
logm - square matrix logarithm
logspace - logarithmically spaced vector
lsq_splin - weighted least squares cubic spline tting
lstsize - list, tlist, mlist numbers of entries
max - maximum
maxi - maximum
min - minimum

setdiff - returns components of a vector which do


not belong to another one
sign - sign function
signm - matrix sign function
sin - sine function
sinc - sinc function
sinh - hyperbolic sine
sinhm - matrix hyperbolic sine
sinm - matrix sine function
size - size of objects
smooth - smoothing by spline functions
solve - symbolic linear system solver
sort - decreasing order sorting

mini - minimum
sp2adj - converts sparse matrix into adjacency form
minus - (-) substraction operator, sign changes
sparse - sparse matrix denition
modulo - symetric arithmetic remainder modulo m
pmodulo - positive arithmetic remainder modulo m

spcompack - converts a compressed adjacency representation

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

speye - sparse identity matrix


spget - retrieves entries of sparse matrix
splin - cubic spline interpolation

D.4

106

Input/Output Functions

diary - diary of session


dir - get le list
disp - displays variables

splin2d - bicubic spline gridded 2d interpolation

dispfiles - display opened les properties

splin3d - spline gridded 3d interpolation

file - le management

spones - sparse matrix

fileinfo - Provides information about a le

sprand - sparse random matrix

fileparts - returns the path, lename and extension


for a le path

spzeros - sparse zero matrix

fprintf - Emulator of C language fprintf function

sqrt - square root

fprintfMat - print a matrix in a le.

sqrtm - matrix square root

fscanf - Converts formatted input read on a le


fscanfMat - Reads a Matrix from a text le.

squarewave - generates a square wave with period 2*


getio - get Scilab input/output logical units
ssprint - pretty print for linear system

input - prompt for user input

ssrand - random system generator

isdir - checks if argument is a directory path

sub2ind - matrix subscript values to linear index

lines - rows and columns used for display

subf - symbolic subtraction

load - load saved variable


loadmatfile - loads a Matlab MAT-le into Scilab

sum - sum (row sum, column sum) of vector/matrix


entries
sysconv - system conversion

ls - show les
manedit - editing a manual item

sysdiag - block diagonal system connection

matfile2sci - converts a Matlab 5 MAT-le into a


Scilab binary le

syslin - linear system denition

mclearerr - reset binary le access errors

tan - tangent

mclose - close an opened le


mdelete - Delete le(s)

tanh - hyperbolic tangent

meof - check if end of le has been reached

tanhm - matrix hyperbolic tangent

merror - tests the le access errors indicator

tanm - matrix tangent

mfscanf - interface to the C fscanf function

toeplitz - toeplitz matrix

mscanf - interface to the C scanf function

trfmod - poles and zeros display


trianfml - symbolic triangularization

msscanf - interface to the C sscanf function


mget - reads byte or word in a given binary format
and convert to double

tril - lower triangular part of matrix

mgeti - reads byte or word in a given binary format


return an int type

trisolve - symbolic linear system solver

mgetl - read lines from an ascii le

triu - upper triangle

mgetstr - read a character string

typeof - object type

mopen - open a le

union - extract union components of a vector

mfprintf - converts, formats, and writes data to a


le

unique - extract unique components of a vector

mprintf - converts, formats, and writes data to the


main scilab window

vectorfind - nds in a matrix rows or columns matching a vector

msprintf - converts, formats, and writes data in a


string

zeros - matrix made of zeros

mput - writes byte or word in a given binary format

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

107

D.5

Handling of functions and


libraries

mputl - writes strings in an ascii le


mputstr - write a character string in a le
mseek - set current position in binary le.

addinter - new functions interface incremental linking at run time

mtell - binary le management

argn - number of arguments in a function call

newest - returns newest le of a set of les

clearfun - remove primitive.


comp - scilab function compilation

oldload - load saved variable in 2.4.1 and previous


formats
oldsave - saving variables in 2.4.1 and previous format

deff - on-line denition of function


delbpt - delete breakpoint
dispbpt - display breakpoints

print - prints variables in a le


edit - function editing
printf - Emulator of C language printf function
printf_conversion - printf, sprintf, fprintf conversion specications

funcprot - switch scilab functions protection mode


endfunction - closes a function denition
function - opens a function denition

read - matrices read


functions - Scilab procedures and Scilab objects
read4b - fortran le binary read
readb - fortran le binary read

genlib - build library from all functions in given directory

readc_ - read a character string

get_function_path - get source le path of a library


function

readmps - reads a le in MPS format

getd - getting all functions dened in a directory

save - saving variables in binary les

getf - dening a function from a le

scanf - Converts formatted input on standard input

lib - library denition


library - library datatype description

scanf_conversion - scanf, sscanf, fscanf conversion


specications

macr2lst - function to list conversion

sprintf - Emulator of C language sprintf function

macr2tree - function to tree conversion

sscanf - Converts formatted input given by a string

macro - Scilab procedure and Scilab object

startup - startup le

macrovar - variables of function


newfun - add a name in the table of functions

tk_getdir - dialog to get a directory path


tk_getfile - dialog to get a le path

plotprofile - extracts and displays execution proles of a Scilab function

tk_savefile - dialog to get a le path for writing

profile - extract execution proles of a Scilab function

warning - warning messages

setbpt - setting breakpoints

writb - fortran le binary write

showprofile - extracts and displays execution proles of a Scilab function

write - write in a formatted le


write4b - fortran le binary write
xgetfile - dialog to get a le path

varargin - variable numbers of arguments in an input argument list


varargout - variable numbers of arguments in an output argument list

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

D.6

Character string manipulations

108

waitbar - Draw a waitbar


winclose - close windows created by sciGUI

code2str - returns character string associated with


Scilab integer codes.

winlist - Return the winId of current window created by sciGUI

convstr - case conversion

x_choices - interactive Xwindow choices through


toggle buttons

emptystr - zero length string


grep - nd matches of a string in a vector of strings

x_choose - interactive Xwindow choice

justify - Justify character array.

x_dialog - Xwindow dialog

length - length of object

x_matrix - Xwindow editing of matrix

part - extraction of strings

x_mdialog - Xwindow dialog

str2code - return scilab integer codes associated with


a character string

x_message - X window message


x_message_modeless - X window modeless message

strcat - catenate character strings


strindex - search position of a character string in an
other string.
string - conversion to string
strings - Scilab Object, character strings
stripblanks - strips leading and trailing blanks of
strings
strsubst - substitute a character string by another
in a character string.

D.8

Utilities

G_make - call make or nmake


add_demo - Add an entry in the demos list
add_help_chapter - Add an entry in the helps list
add_palette - Add an entry in the Scicos palettes
list
apropos - searches keywords in Scilab help

tokenpos - returns the tokens positions in a character


string.

basename - strip directory and sux from lenames

tokens - returns the tokens of a character string.

c_link - check dynamic link


cd - changes Scilab current directory

D.7

GUI and Dialogs

addmenu - interactive button or menu denition

chdir - changes Scilab current directory


clc - Clear Command Window

browsevar - Scilab variable browser


dec2hex - hexadecimal representation of integers
buttondialog - Create a simple button dialog
dirname - get directory from lenames
config - Scilab general conguration.
foo - foo short description
delmenu - interactive button or menu deletion
demoplay - interactive demo player.

head_comments - display scilab function header comments

editvar - Scilab variable editor

help - on-line help command

getvalue - xwindow dialog for data acquisition

help_skeleton - build the skeleton of the xml help


le associated to a Scilab function

halt - stop execution


havewindow - return scilab window mode
keyboard - keyboard commands
progressionbar - Draw a progression bar
seteventhandler - set an event handler for the current graphic window

hex2dec - conversion from hexadecimal representation to integers


ilib_build - utility for shared library management
ilib_compile - ilib build utility: executes the makele produced by ilib gen Make

setmenu - interactive button or menu activation

ilib_for_link - utility for shared library management with link

unsetmenu - interactive button or menu or submenu


de-activation

ilib_gen_Make - utility for ilib build: produces a makele for building shared libraries

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

ilib_gen_gateway - utility for ilib build, generates a


gateway le.

D.9

109

Linear Algebra

aff2ab - linear (ane) function to A,b conversion


ilib_gen_loader - utility for ilib build: generates a
loader le
intersci - scilab tool to interface C of Fortran functions with scilab
LANGUAGE - Variable dening the language

balanc - matrix or pencil balancing


bdiag - block diagonalization, generalized eigenvectors
chfact - sparse Cholesky factorization
chol - Cholesky factorization

link - dynamic link


chsolve - sparse Cholesky solver
listfiles - list les
make_index - creates a new index le for on-line help

classmarkov - recurrent and transient classes of Markov matrix

man - on line help XML le description format

coff - resolvent (cofactor method)

pathconvert - pathnames convertion between posix


and windows.

colcomp - column compression, kernel, nullspace


companion - companion matrix

%helps - Variable dening the path of help directories

cond - condition number

realtime - set dates origin or waits until date

det - determinant

realtimeinit - set time unit

eigenmarkov - normalized left and right Markov eigenvectors

sci2exp - converts an expression to a string


sci2map - Scilab to Maple variable conversion
scilab - Major unix script to execute Scilab and miscellaneous tools
scilink - Unix script to relink Scilab

ereduc - computes matrix column echelon form by


qz transformations
exp - element-wise exponential
expm - square matrix exponential
fstair - computes pencil column echelon form by qz
transformations

scipad - Embedded Scilab text editor


fullrf - full rank factorization
timer - cpu time
tohome - Move the cursor to the upper left corner of
the Command Window

fullrfk - full rank factorization of A^k


genmarkov - generates random markov matrix with
recurrent and transient classes

ulink - unlink a dynamically linked shared object

givens - Givens transformation

unix - shell (sh) command execution

glever - inverse of matrix pencil

unix_g - shell (sh) command execution, output redirected to a variable

gschur - generalized Schur form (obsolete).


gspec - eigenvalues of matrix pencil (obsolete)

unix_s - shell (sh) command execution, no output


unix_w - shell (sh) command execution, output redirected to scilab window
unix_x - shell (sh) command execution, output redirected to a window
with_gtk - Checks if Scilab has been built with the
GIMP Toolkitlibrary
with_pvm - Checks if Scilab has been built with the
Parallel Virtual Machineinterface

hess - Hessenberg form


householder - Householder orthogonal reexion matrix
im_inv - inverse image
inv - matrix inverse
kernel - kernel, nullspace
kroneck - Kronecker form of matrix pencil
linsolve - linear equation solver

with_texmacs - Checks if Scilab has been called by


texmacs
with_tk - Checks if Scilab has been built with
TCL/TK
xmltohtml - converts xml Scilab help les to html

lsq - linear least square problems.


lu - LU factors of Gaussian elimination
ludel - utility function used with lufact
lufact - sparse lu factorization

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

luget - extraction of sparse LU factors


lusolve - sparse linear system solver
lyap - Lyapunov equation
nlev - Leverriers algorithm
orth - orthogonal basis

D.10

110

Polynomial calculations

bezout - Bezout equation for polynomials or integers


clean - cleans matrices (round to zero small entries)
cmndred - common denominator form
coeff - coecients of matrix polynomial
coffg - inverse of polynomial matrix

pbig - eigen-projection
colcompr - column compression of polynomial matrix
pencan - canonical form of matrix pencil
degree - degree of polynomial matrix
penlaur - Laurent coecients of matrix pencil
pinv - pseudoinverse
polar - polar form

denom - denominator
derivat - rational matrix derivative
determ - determinant of polynomial matrix

proj - projection

detr - polynomial determinant

projspec - spectral operators

diophant - diophantine (Bezout) equation

psmall - spectral projection

factors - numeric real factorization

qr - QR decomposition

gcd - gcd calculation

quaskro - quasi-Kronecker form

hermit - Hermite form

randpencil - random pencil


range - range (span) of A^k
rank - rank

horner - polynomial/rational evaluation


hrmt - gcd of polynomials
htrianr - triangularization of polynomial matrix
invr - inversion of (rational) matrix

rankqr - rank revealing QR factorization


lcm - least common multiple
rcond - inverse condition number
rowcomp - row compression, range

lcmdiag - least common multiple diagonal factorization

rowshuff - shue algorithm

ldiv - polynomial matrix long division

rref - computes matrix row echelon form by lu transformations


schur - [ordered] Schur decomposition of matrix and
pencils
spaninter - subspace intersection

numer - numerator
pdiv - polynomial division
pol2des - polynomial matrix to descriptor form
pol2str - polynomial to string conversion
polfact - minimal factors

spanplus - sum of subspaces


residu - residue
spantwo - sum and intersection of subspaces
roots - roots of polynomials
spchol - sparse cholesky factorization
spec - eigenvalues of matrices and pencils

routh_t - Rouths table


rowcompr - row compression of polynomial matrix

sqroot - W*W hermitian factorization

sfact - discrete time spectral factorization

sva - singular value approximation

simp - rational simplication

svd - singular value decomposition

simp_mode - toggle rational simplication

sylv - Sylvester equation.

sylm - Sylvester matrix

trace - trace

systmat - system matrix

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

D.11

General
Control

System

and

111

kpure - continuous SISO system limit feedback gain


krac2 - continuous SISO system limit feedback gain

abcd - state-space matrices

lin - linearization

abinv - AB invariant subspace

linmeq - Sylvester and Lyapunov equations solver

arhnk - Hankel norm approximant

lqe - linear quadratic estimator (Kalman Filter)

arl2 - SISO model realization by L2 transfer approximation

lqg - LQG compensator

balreal - balanced realization


bilin - general bilinear transform
cainv - Dual of abinv
calfrq - frequency response discretization
canon - canonical controllable form
cls2dls - bilinear transform
colregul - removing poles and zeros at innity
cont_frm - transfer to controllable state-space
cont_mat - controllability matrix
contr - controllability, controllable subspace, staircase
contrss - controllable part
csim - simulation (time response) of linear system
ctr_gram - controllability gramian

lqg2stan - LQG to standard problem


lqr - LQ compensator (full state)
ltitr - discrete time response (state space)
markp2ss - Markov parameters to state-space
minreal - minimal balanced realization
minss - minimal realization
obs_gram - observability gramian
obscont - observer based controller
observer - observer design
obsv_mat - observability matrix
obsvss - observable part
p_margin - phase margin
pfss - partial fraction decomposition
phasemag - phase and magnitude computation

dbphi - frequency response to phase and magnitude


representation

ppol - pole placement

ddp - disturbance decoupling

projsl - linear system projection

des2tf - descriptor to transfer function conversion

repfreq - frequency response

dscr - discretization of linear system

ricc - Riccati equation

dsimul - state space discrete time simulation

riccsl - Riccati equation solver

dt_ility - detectability test

rowregul - removing poles and zeros at innity

equil - balancing of pair of symmetric matrices

rtitr - discrete time response (transfer matrix)

equil1 - balancing (nonnegative) pair of matrices

sm2des - system matrix to descriptor

feedback - feedback operation

sm2ss - system matrix to state-space

flts - time response (discrete time, sampled system)

specfact - spectral factor

frep2tf - transfer function realization from frequency response

ss2des - (polynomial) state-space to descriptor form

freq - frequency response


freson - peak frequencies

ss2ss - state-space to state-space conversion, feedback, injection


ss2tf - conversion from state-space to transfer function

g_margin - gain margin


st_ility - stabilizability test
gfrancis - Francis equations for tracking
stabil - stabilization
imrep2ss - state-space realization of an impulse response

svplot - singular-value sigma-plot

invsyslin - system inversion

sysfact - system factorization

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

112

syssize - size of state-space system

macglov - Mac Farlane Glover problem

tf2ss - transfer to state-space

mucomp - mu (structured singular value) calculation

time_id - SISO least square identication

nehari - Nehari approximant

trzeros - transmission zeros and normal rank

parrot - Parrots problem

ui_observer - unknown input observer

ric_desc - Riccati equation

unobs - unobservable subspace

riccati - Riccati equation

zeropen - zero pencil

rowinout - inner-outer factorization


sensi - sensitivity functions

D.12

Robust control toolbox

tf2des - transfer function to descriptor

augment - augmented plant


bstap - hankel approximant
ccontrg - central H-innity controller
colinout - inner-outer factorization

D.13

Optimization and simulation

NDcost - generic external for optim computing gradient using nite dierences

copfac - right coprime factorization


bvode - boundary value problems for ODE
dcf - double coprime factorization
dasrt - DAE solver with zero crossing
des2ss - descriptor to state-space
dassl - dierential algebraic equation
dhinf - H innity design of discrete-time systems
dhnorm - discrete H-innity norm

datafit - Parameter identication based on measured data

dtsi - stable anti-stable decomposition

derivative - approximate derivatives of a function

fourplan - augmented plant to four plants

fit_dat - Parameter identication based on measured data

fspecg - stable factorization


fstabst - Youlas parametrization

fsolve - nd a zero of a system of n nonlinear functions

gamitg - H-innity gamma iterations

impl - dierential algebraic equation

gcare - control Riccati equation

int2d - denite 2D integral by quadrature and cubature method

gfare - lter Riccati equation


gtild - tilde operation

int3d - denite 3D integral by quadrature and cubature method

h2norm - H2 norm

intc - Cauchy integral

h_cl - closed loop matrix

intg - denite integral

h_inf - H-innity (central) controller

intl - Cauchy integral

h_inf_st - static H innity problem

karmarkar - karmarkar algorithm

h_norm - H-innity norm

leastsq - Solves non-linear least squaresproblems

hankelsv - Hankel singular values

linpro - linear programming solver

hinf - H innity design of continuous-time systems

lmisolver - linear matrix inequation solver

lcf - normalized coprime factorization

lmitool - tool for solving linear matrix inequations

leqr - H-innity LQ gain (full state)

lsqrsolve - minimize the sum of the squares ofnonlinear functions, levenberg-marquardt algorithm

lft - linear fractional transformation


numdiff - numerical gradient estimation
linf - innity norm
ode - ordinary dierential equation solver
linfn - innity norm
lqg_ltr - LQG with loop transform recovery

ode_discrete - ordinary dierential equation solver,


discrete time simulation

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

ode_root - ordinary dierential equation solver with


root nding
odedc - discrete/continuous ode solver

113

hank - covariance to hankel matrix


hilb - Hilbert transform
iir - iir digital lter

odeoptions - set options for ode solvers

iirgroup - group delay Lp IIR lter optimization

optim - non-linear optimization routine

iirlp - Lp IIR lter optimization

quapro - linear quadratic programming solver

intdec - Changes sampling rate of a signal

semidef - semidenite programming

jmat - row or column block permutation


kalm - Kalman update

D.14

Signal Processing toolbox

lattn - recursive solution of normal equations


lattp - lattp

Signal - Signal manual description

lev - Yule-Walker equations (Levinsons algorithm)

analpf - create analog low-pass lter

levin - Toeplitz system solver by Levinson algorithm


(multidimensional)

buttmag - response of Butterworth lter

lgfft - utility for t

casc - cascade realization of lter from coecients

lindquist - Lindquists algorithm

cepstrum - cepstrum calculation

mese - maximum entropy spectral estimation

cheb1mag - response of Chebyshev type 1 lter

mfft - multi-dimensional t

cheb2mag - response of type 2 Chebyshev lter

mrfit - frequency response t

chepol - Chebychev polynomial


convol - convolution

%asn - elliptic integral


%k - Jacobis complete elliptic integral
%sn - Jacobi s elliptic function

corr - correlation, covariance


phc - Markovian representation
cspect - spectral estimation (correlation method)
czt - chirp z-transform algorithm
dft - discrete Fourier transform
ell1mag - magnitude of elliptic lter

pspect - cross-spectral estimate between 2 series


remez - Remezs algorithm
remezb - Minimax approximation of magnitude response
rpem - RPEM estimation

eqfir - minimax approximation of FIR lter


sinc - samples of sinc function
eqiir - Design of iir lters
faurre - lter computation by simple Faurre algorithm
ffilt - coecients of FIR low-pass

sincd - digital sinc function or Direchlet kernel


srfaur - square-root algorithm
srkf - square root Kalman lter
sskf - steady-state Kalman lter

fft - fast Fourier transform.


system - observation update
fftshift - rearranges the t output, moving the zero
frequency to the center of the spectrum
filter - modelling lter
find_freq - parameter compatibility for elliptic lter
design

trans - low-pass to other lter transform


wfir - linear-phase FIR lters
wiener - Wiener estimate
wigner - time-frequency wigner spectrum

findm - for elliptic lter design

window - symmetric window

frfit - frequency response t

yulewalk - least-square lter design

frmag - magnitude of FIR and IIR lters


fsfirlin - design of FIR, linear phase lters, frequency sampling technique
group - group delay for digital lter

zpbutt - Butterworth analog lter


zpch1 - Chebyshev analog lter
zpch2 - Chebyshev analog lter
zpell - lowpass elliptic lter

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

D.15

Arma modelisation and


simulation toolbox

arma - Scilab arma library


arma2p - extract polynomial matrices from ar representation

114

edit_graph_menus - edit graph menus description


find_path - nds a path between two nodes
gen_net - interactive or random generation of a
network
girth - girth of a directed graph

armac - Scilab description of an armax process

glist - graph list creation

armax - armax identication

graph-list - description of graph list

armax1 - armax identication

graph_2_mat - node-arc or node-node incidence matrix of a graph

arsimul - armax simulation

graph_center - center of a graph

narsimul - armax simulation ( using rtitr)

graph_complement - complement of a graph

noisegen - noise generation

graph_diameter - diameter of a graph

odedi - test of ode


prbs_a - pseudo random binary sequences generation

graph_simp - converts a graph to a simple undirected


graph

reglin - Linear regression

D.16

Metanet:
graph
network toolbox

graph_power - kth power of a directed 1-graph

and

add_edge - adds an edge or an arc between two nodes


add_node - adds a disconnected node to a graph
adj_lists - computes adjacency lists
arc_graph - graph with nodes corresponding to arcs
arc_number - number of arcs of a graph
articul - nds one or more articulation points
bandwr - bandwidth reduction for a sparse matrix
best_match - best matching of a graph
chain_struct - chained structure from adjacency
lists of a graph
check_graph - checks a Scilab graph list

graph_sum - sum of two graphs


graph_union - union of two graphs
hamilton - hamiltonian circuit of a graph
is_connex - connectivity test
knapsack - solves a 0-1 multiple knapsack problem
line_graph - graph with nodes corresponding to edges
load_graph - loads a graph
make_graph - makes a graph list
mat_2_graph - graph from node-arc or node-node incidence matrix
max_cap_path - maximum capacity path
max_clique - maximum clique of a graph
max_flow - maximum ow between two nodes

circuit - nds a circuit or the rank function in a


directed graph

mesh2d - triangulation of n points in the plane

con_nodes - set of nodes of a connected component

min_lcost_cflow - minimum linear cost constrained


ow

connex - connected components


min_lcost_flow1 - minimum linear cost ow
contract_edge - contracts edges between two nodes
min_lcost_flow2 - minimum linear cost ow
convex_hull - convex hull of a set of points in the
plane
cycle_basis - basis of cycle of a simple undirected
graph

min_qcost_flow - minimum quadratic cost ow


min_weight_tree - minimum weight spanning tree
neighbors - nodes connected to a node

delete_arcs - deletes all the arcs or edges between


a set of nodes

netclose - closes an edit graph window

delete_nodes - deletes nodes

netwindow - selects the current edit graph window

edge_number - number of edges of a graph

netwindows - gets the numbers of edit graph windows

edit_graph - graph and network graphical editor

node_number - number of nodes of a graph

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

nodes_2_path - path from a set of nodes

D.18

nodes_degrees - degrees of the nodes of a graph


path_2_nodes - set of nodes from a path

115

Language or data translations

ascii - string ascii conversions


excel2sci - reads ascii Excel les

perfect_match - min-cost perfect matching


pipe_network - solves the pipe network problem
plot_graph - general plot of a graph
predecessors - tail nodes of incoming arcs of a node
qassign - solves a quadratic assignment problem

formatman - translates old NROFF man les in a directory into ascii, tex, html or xml
fun2string - generates ascii denition of a scilab
function
mfile2sci - Matlab M-le to Scilab conversion function

salesman - solves the travelling salesman problem

mtlb_load - load variables from le with Matlab4


format.

save_graph - saves a graph

mtlb_save - save variables on le with matlab4 format.

shortest_path - shortest path

pol2tex - convert polynomial to TeX format

show_arcs - highlights a set of arcs

sci2for - scilab function to Fortran routine conversion

show_graph - displays a graph

texprint - TeX output of Scilab object

show_nodes - highlights a set of nodes

translatepaths - convert a set of Matlab M-les directories to Scilab

split_edge - splits an edge by inserting a node


strong_con_nodes - set of nodes of a strong connected component
strong_connex - strong connected components

tree2code - generates ascii denition of a Scilab function

D.19

PVM parallel toolbox

subgraph - subgraph of a graph

AdCommunications - advanced communication toolbox for parallel programming

successors - head nodes of outgoing arcs of a node

Example - just to test the environment

supernode - replaces a group of nodes with a single


node

pvm - communications with other applications using


Parallel Virutal Machine
pvm_addhosts - add hosts to the virtual machine.

trans_closure - transitive closure


pvm_barrier - blocks the calling process until all processes in a group have called it.

D.17

Sound le handling

analyze - frequency plot of a sound signal

pvm_bcast - broacasts a message to all members of a


group

auread - load .au sound le

pvm_bufinfo - Returns information about a message


buer.

auwrite - writes .au sound le

pvm_config - sends a message

lin2mu - linear signal to mu-law encoding

pvm_delhosts - deletes hosts from the virtual machine.

loadwave - load a sound <<wav>> le into scilab


mapsound - Plots a sound map
mu2lin - mu-law encoding to linear signal

pvm_error - Prints message describing an error returned by a PVM call


pvm_exit - tells the local pvmd that this process is
leaving PVM.

playsnd - sound player facility

pvm_f772sci - Convert a F77 complex into a complex


scalar

savewave - save data into a sound <<wav>> le.

pvm_get_timer - Gets the systems notion of the current time.

sound - sound player facility


wavread - load .wav sound le
wavwrite - writes .wav sound le

pvm_getinst - returns the instance number in a group


of a PVM process.
pvm_gettid - returns the tid of the process identied
by a group name and instance number

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

pvm_gsize - returns the number of members presently in the named group.

116

systems - a collection of dynamical system

pvm_halt - stops the PVM daemon

tangent - linearization of a dynamical system at an


equilibrium point

pvm_joingroup - enrolls the calling process in a named group.

tdinit - interactive initialisation of the tdcs dynamical systems

pvm_kill - Terminates a specied PVM process.


pvm_lvgroup - Unenrolls the calling process from a
named group.
pvm_mytid - returns the tid of the calling process.
pvm_parent - tid of the process that spawned the calling process.

D.21

TCL/Tk interface

ScilabEval - tcl instruction : Evaluate a string with


scilab interpreter
TK_EvalFile - Reads and evaluate a tcl/tk le

pvm_probe - Check if message has arrived.

TK_EvalStr - Evaluate a string whithin the tcl/tk interpreter

pvm_recv - receive a message.

TK_GetVar - Get a tcl/tk variable value

pvm_reduce - Performs a reduce operation over members of the specied group

TK_SetVar - Set a tcl/tk variable value


close - close a gure

pvm_sci2f77 - Convert complex scalar into F77


figure - create a gure
pvm_send - immediately sends (or multicast) data.
pvm_set_timer - Sets the systems notion of the current time.
pvm_spawn - Starts new Scilab processes.
pvm_spawn_independent - Starts new PVM processes.
pvm_start - Start the PVM daemon
pvm_tasks - information about the tasks running on
the virtual machine.
pvm_tidtohost - returns the host of the specied
PVM process.

findobj - nd an object with specied property


uicontrol - create a Graphic User Interface object
uimenu - Create a menu or a submenu in a gure

D.22

Statistic basics

center - center
wcenter - center and weight
cmoment - central moments of all orders
correl - correlation of two variables

pvmd3 - PVM daemon


covar - covariance of two variables

D.20

TdCs

ftest - Fischer ratio

artest - arnold dynamical system

ftuneq - Fischer ratio for samples of unequal size.

bifish - shows a bifurcation diagram in a sh population discrete time model

geomean - geometric mean


harmean - harmonic mean

boucle - phase portrait of a dynamical system with


observer

iqr - interquartile range

chaintest - a three-species food chain model

labostat - Statistical toolbox for Scilab

gpeche - a shing program

mad - mean absolute deviation

fusee - a set of Scilab macro for a landing rocket


problem
lotest - demo of the Lorenz attractor
mine - a mining problem

mean - mean (row mean, column mean) of vector/matrix entries


meanf - weighted mean of a vector or a matrix

obscont1 - a controlled-observed system

median - median (row median, column median) of


vector/matrix entries

portr3d - 3 dimensional phase portrait.

moment - non central moments of all orders

portrait - 2 dimensional phase portrait.

msd - mean squared deviation

recur - a bilinear recurrent equation

mvvacov - computes variance-covariance matrix

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

nancumsum - Thos function returns the cumulative


sum of the values of a matrix
nand2mean - dierence of the means of two independent samples

117

cdfchn - cumulative distribution function non-central


chi-square distribution

cdff - cumulative distribution function F distribution

nanmax - max (ignoring Nans)


nanmean - mean (ignoring Nans)
nanmeanf - mean (ignoring Nans) with a given frequency.
nanmedian - median of the values of a numerical vector or matrix
nanmin - min (ignoring Nans)
nanstdev - standard deviation (ignoring the NANs).

cdffnc - cumulative distribution function non-central


f-distribution

cdfgam - cumulative distribution function gamma distribution

cdfnbn - cumulative distribution function negative


binomial distribution

nansum - Sum of values ignoring NANs


nfreq - frequence of the values in a vector or matrix

cdfnor - cumulative distribution function normal distribution

pca - Principal components analysis


perctl - computation of percentils

cdfpoi - cumulative distribution function poisson


distribution

quart - computation of quartiles


regress - regression coecients of two variables

cdft - cumulative distribution function Students T


distribution

sample - Sampling with replacement


samplef - sample with replacement from a population and frequences of his values.
samwr - Sampling without replacement
st_deviation - standard deviation (row or columnwise) of vector/matrix entries
stdev - standard deviation (row or column-wise) of
vector/matrix entries
stdevf - standard deviation
strange - range
tabul - frequency of values of a matrix or vector

grand - Random number generator(s)

D.24

Identication

findABCD - discrete-time system subspace identication

findAC - discrete-time system subspace identication

findBD - initial state and system matrices B and D


of a discrete-time system

thrownan - eliminates nan values


trimmean - trimmed mean of a vector or a matrix

findBDK - Kalman gain and B D system matrices of


a discrete-time system

variance - variance of the values of a vector or matrix


variancef - standard deviation of the values of a vector or matrix

D.23

Cumulative
Distribution Functions; Inverses,
grand

findR - Preprocessor for estimating the matrices of a


linear time-invariant dynamical system

findx0BD - Estimates state and B and D matrices of


a discrete-time linear system

inistate - Estimates the initial state of a discretetime system

cdfbet - cumulative distribution function Beta distribution


cdfbin - cumulative distribution function Binomial
distribution
cdfchi - cumulative distribution function chi-square
distribution

sident - discrete-time state-space realization and


Kalman gain

sorder - computing the order of a discrete-time system

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

D.25

Matlab to Scilab conversion tips

About_M2SCI_tools - Generally speaking about tools


to convert Matlab les to Scilab...

118

mtlb_eye - Matlab eye emulation function


mtlb_false - Matlab false emulation function
mtlb_fft - Matlab t emulation function
mtlb_find - Matlab nd emulation function

Cste - Create a tree representing a constant


mtlb_full - Matlab full emulation function
Equal - Create a tree representing an instruction
mtlb_hold - Matlab hold emulation function
Funcall - Create a tree representing a function call
mtlb_i - Matlab insertion emulation function
Infer - Create a tree containing inference data
mtlb_imp - Matlab colon emulation function
Matlab-Scilab_character_strings - Generally speaking about...

mtlb_int16 - Matlab int16 emulation function

Operation - Create a tree representing an operation

mtlb_int32 - Matlab int32 emulation function

Type - Create a tree containing type inference data

mtlb_int8 - Matlab int8 emulation function

Variable - Create a tree representing a variable

mtlb_is - Matlab string insertion emulation function

asciimat - string matrix to ASCII conversion

mtlb_isa - Matlab isa emulation function

firstnonsingleton - Finds rst dimension which is


not 1

mtlb_isspace - Matlab isspace emulation function


mtlb_l - Matlab left division emulation function

m2scideclare - Giving tips to help M2SCI...


mstr2sci - character string matrix to character matrix conversion

mtlb_logic - Matlab logical operators emulation


function
mtlb_logical - Matlab logical emulation function

mtlb_0 - Matlab non-conjugate transposition emulation function

mtlb_lower - Matlab lower emulation function

mtlb_a - Matlab addition emulation function

mtlb_max - Matlab max emulation function

mtlb_all - Matlab all emulation function

mtlb_min - Matlab min emulation function

mtlb_any - Matlab any emulation function

mtlb_more - Matlab more emulation function

mtlb_beta - Matlab beta emulation function

mtlb_norm - Matlab norm emulation function

mtlb_box - Matlab box emulation function

mtlb_num2str - Matlab num2str emulation function

mtlb_close - Matlab close emulation function

mtlb_ones - Matlab ones emulation function

mtlb_colordef - Matlab colordef emulation function

mtlb_plot - Matlab plot emulation function

mtlb_conv - Matlab conv emulation function

mtlb_prod - Matlab prod emulation function

mtlb_cumprod - Matlab cumprod emulation function

mtlb_rand - Matlab rand emulation function

mtlb_cumsum - Matlab cumsum emulation function

mtlb_randn - Matlab randn emulation function

mtlb_dec2hex - Matlab dec2hex emulation function

mtlb_rcond - Matlab rcond emulation function

mtlb_delete - Matlab delete emulation function

mtlb_s - Matlab substraction emulation function

mtlb_diag - Matlab diag emulation function

mtlb_setstr - Matlab setstr emulation function

mtlb_diff - Matlab di emulation function

mtlb_size - Matlab size emulation function

mtlb_dir - Matlab dir emulation function

mtlb_strcmp - Matlab strcmp emulation function

mtlb_double - Matlab double emulation function

mtlb_strcmpi - Matlab strcmpi emulation function

mtlb_e - Matlab extraction emulation function

mtlb_strfind - Matlab strnd emulation function

mtlb_eig - Matlab eig emulation function

mtlb_strrep - Matlab strrep emulation function

mtlb_eval - Matlab eval emulation function

mtlb_sum - Matlab sum emulation function

mtlb_exist - Matlab exist emulation function

mtlb_t - Matlab transposition emulation function

Introduo ao Scilab-Verso 3.0/PSMP/DCA-UFRN


ca
a

119

mtlb_toeplitz - Matlab toeplitz emulation function

mtlb_uint32 - Matlab uint32 emulation function

mtlb_tril - Matlab tril emulation function

mtlb_uint8 - Matlab uint8 emulation function

mtlb_triu - Matlab triu emulation function

mtlb_upper - Matlab upper emulation function

mtlb_true - Matlab true emulation function

mtlb_zeros - Matlab zeros emulation function

mtlb_uint16 - Matlab uint16 emulation function

sci_files - How to write conversion functions

Referncias Bibliogrcas
e
a
[1] Scilab Group, Introduction to Scilab - Users Guide. Esta referncia, e outras escritas pelo
e
Scilab Group, podem ser obtidas em http://scilabsoft.inria.fr/doc.html, acessada
em julho de 2004.
[2] Jesus Olivan Palacios, An Introduction to the Treatment of Neurophysiological Signals using
Scilab - version 0.02, Maio de 2001, http://www.neurotraces.com/scilab/scilab2/
node2.html, acessada em julho de 2004.
[3] Bruno Pion, Une introduction ` Scilab, version 0.996, dispon em http://www-rocq.
c
a
vel
inria.fr/scilab/books, acessada em maio de 2004.
[4] L.E. van Dijk, C.L. Spiel, Scilab Bag of Tricks, The Scilab-2.5 IAQ (Infrequently Asked
Questions), dispon
vel em http://kiwi.emse.fr/SCILAB/sci-bot/sci-bot.pdf, acessada em julho de 2004.
[5] Gilberto E. Urroz, Scilab, dispon
vel em http://www.engineering.usu.edu/cee/
faculty/gurro/Scilab.html, acessada em junho de 2004.
[6] Pramode C.E, Mathematical Explorations with Scilab/Linux, Linux Gazette, Issue 98, Janeiro de 2004, dispon
vel em http://linuxgazette.net/issue98/pramode.html, acessada em julho de 2004.
[7] Paulo S. Motta Pires, David A. Rogers, Free/Open Source Software: An Alternative for Engineering Students, 32nd ASEE/IEEE Frontiers in Education Conference, Nov. 6-9, 2002,
Boston, MA, USA, dispon em http://fie.engrng.pitt.edu/fie2002/papers/1355.
vel
pdf. Uma cpia deste trabalho tambm est dispon
o
e
a
vel em http://www.dca.ufrn.br/
~pmotta, acessada em julho de 2004.
[8] Scilab//, http://www,ens-lyon.fr/~desprez/FILES/RESEARCH/SOFT/SCILAB, acessada
em julho de 2004.
[9] Paulo S. Motta Pires, Mtodos Computacionais - Notas de Aula, dispon
e
vel em http:
//www.dca.ufrn.br/~pmotta, acessada em julho de 2004.

120

You might also like