Este documento fornece um resumo introdutório sobre o SciLab, um software livre e de código aberto para cálculo numérico e visualização de dados. O documento explica que o SciLab foi desenvolvido na França na década de 1990 e atualmente é mantido por uma consórcio internacional. Também descreve como iniciar o SciLab, seu ambiente gráfico interativo e como declarar variáveis, operadores e funções básicas como criação de vetores e matrizes.
4. Histórico
• Criado em 1990 por pesquisadores do INRIA
(Institut National de Recherche en Informatique
et en Automatique) da França.
• Atualmente é mantido e desenvolvido pelo
consórcio SciLab, composto por instituições de
ensino/pesquisa e empresas, criado em maio de
2003.
• Distribuído gratuitamente com código-fonte
aberto desde 1994. Atualmente na versão 5.3.3.
6. Características
Possui ambiente interativo com uma linguagem de
programação simples e de alto nível cujos recursos
permitem desenvolver aplicações para soluções
específicas.
7. Características
Seu ambiente de desenvolvimento permite:
– Desenvolvimento de toolboxes: extensões de sua
linguagem para solução de problemas específicos.
– O uso de seus recursos por meio de outras linguagens de
programação como C/C++, Java, Fortran.
Ajuste de curvas Equações diferenciais Simulação de sistemas
mecânicos
8. Inicializando o SciLab
• Ambiente padrão:
Iniciar > Programas > scilab-5.3.3 > scilab-5.3.3
• Ambiente modo console:
Iniciar > Programas > scilab-5.3.3 > Scilab Console
14. Ambiente gráfico do SciLab
• Os comandos do SciLab são definidos em
uma linguagem própria.
• Suas instruções podem ser interpretadas:
• via janela de comandos
• via arquivos com um conjunto de instruções
(script) editado com o SciPad Editor e salvo em
um arquivo de extensão “.sce”.
• O bom uso do SciLab exige um certo
domínio da sintaxe de sua linguagem.
15. Primeiros passos...
1. Inicie o SciLab
2. Escolha um diretório de trabalho de sua
preferência para guardar as atividades
desenvolvidas durante o mini-curso.
– Sugestão: C:Meus DocumentosSciLab
Observações:
– Utilizar o mesmo computador no decorrer do mini-
curso, pois algumas vezes poderemos recorrer ao
conteúdo desenvolvido nas aulas anteriores.
– Guardar o conteúdo desenvolvido nas aulas em alguma
mídia de armazenamento.
16. Declaração de variáveis
• Variável: Elemento de um programa que é declarado
e armazenado na memória, cujo valor pode ser
modificado ao longo de sua execução.
• Declaração de uma variável: usa-se o operador
atribuição “=”.
– --> variavel = valor;
• Tipos de valores: Podem ser numérico (real, inteiro
ou complexo) e string de caracteres.
• Obs.: Pela sintaxe da linguagem do SciLab, o ponto-e-
vírgula significa o final da instrução.
17. Declaração de variáveis
Regras para nomes das Comentário e exemplos
variáveis declaradas
Case sensitive Custo, CustO, CuStO e CUSTO são variáveis diferentes
Devem conter no máximo 24 CustoTotalAnoAnterior = 10
caracteres
Não deve começar com Valor_Estimado = 3
número e nem conter Valor1 = 9.2
pontuações ou espaços X123 = 2.5
Nome diferente das variáveis Podem ser acessadas com o comando who no
reservadas do ambiente prompt.
18. Comando who
Comando who: exibe as variáveis
definidas no ambiente
19. Variáveis do ambiente
%i: unidade imaginária de números complexos
%pi: valor de =3.1415...
%e: valor do número de Euler e = 2.7182...
SCI: caminho onde o SciLab foi instalado
home: caminho do diretório padrão do usuário
20. Declaração de variáveis
• Declarando matrizes:
– Os elementos devem ser declarados entre [ ]
– Os elementos de uma mesma linha numa matriz são
separados por espaço(s) ou vírgula
– ponto-e-vírgula(;) indica o final de uma linha de uma
matriz ou final de uma expressão
1 4 8
A 6 0 9 A = [1 4 8; 6 0 9; 2 4 5]
2 5 4
23. Exercícios
--> A = 1; a variável A recebe o valor 1
--> b = 2; a variável b recebe o valor 1
--> A + b Adição entre A e b
ans = Obs.: Note que se o “;” for
3. omitido, o resultado da
instrução é mostrado no prompt
--> A * b
ans = Produto de A por b
2.
-->c = b^5 A variável c recebe o valor b
elevado a 5ª potência
c =
32.
a variável nome recebe o valor
--> nome = “scilab”;
“scilab” (variável tipo string)
24. Exercícios
-->u = 2 - 3 * %i as variáveis u e v são declaradas
u = como números complexos
2. - 3.i Obs.: %i representa unidade
-->v = 5 + 4 * %i imaginária
v =
5. + 4.i
-->u + v Soma entre u e v
ans =
7. + i
-->u * v Produto de u por v
ans =
22. - 7.i
-->u/v
Divisão de u por v
ans =
- 0.0487805 - 0.5609756i
25. Exercícios
--> A = [1 2; 3 4] --> C2 = A^(-1)
A = C2 =
1 2 -2.0000 1.0000
3 4 1.5000 -0.5000
--> B = [5 6; 7 8] --> C3 = A/B
B = C3 =
5 6 3.0000 -2.0000
7 8 2.0000 -1.0000
--> C = A + B --> C4 = A^2 + B^2
C = C4 =
6 8 74 88
10 12 106 128
--> C1 = A – B --> C5 = A’
C1 = C5 =
-4 -4 1 3
-4 -4 2 4
27. Operador dois-pontos (:)
• É um dos operadores mais úteis do SciLab.
• Cria vetores e serve para manipular índices de
matrizes.
• Criando vetores com o operador colon (:):
--> vetor = valor_inicial:incremento:valor_final
--> vetor = valor_inicial:valor_final (incremento=1)
28. Exercícios
--> C = 1:2:11
C =
1 3 5 7 9 11
--> E = [1:1:3;4:1:6;7:1:9]
E =
1 2 3
4 5 6
7 8 9
--> D = 0 : 0.5 : 3
D =
0 0.5 1.0 1.5 2.0 2.5 3.0
29. Exercícios
--> A = [1 : 2 : 15] --> B(1,3)
A = ans =
1 3 5 7 9 11 13 15 9
--> B = [1:1:3;2:2:6;5:2:9] --> B(1:3,2)
B = ans =
1 2 3 2
2 4 6 4
5 7 9 7
--> b = [10 20 30] --> B(3,:)
b = ans =
10 20 30 5 7 9
--> B = [B;b] --> B([2 3],[1 2])
B = ans =
1 2 3 2 4
2 4 6 5 7
5 7 9 --> B($,:)
10 20 30 ans =
10 20 30
30. Exercícios
--> A = ones(3,3) --> C = rand(3,3)
A = C =
1 1 1 0.0683740 0.7263507 0.2320748
1 1 1 0.5608486 0.1985144 0.2312237
1 1 1 0.6623569 0.5442573 0.2164633
--> B = zeros(4,3) --> rand('seed',0)
B = -->D = rand(3,3)
0 0 0 D =
0 0 0 0.4812332 0.6187285 0.2372657
0 0 0 0.9481247 0.3414719 0.6183197
0 0 0 0.4177657 0.1770553 0.8246736
--> I = eye(4,4) -->E = diag(D)
I = E =
1 0 0 0 0.4812332
0 1 0 0 0.3414719
0 0 1 0 0.8246736
0 0 0 1
32. Exercícios
• Defina as matrizes e efetue as operações:
6, para i par e j ímpar
A (aij ) 9 9
2, para i ímpar e j par
3, para os demais índices
1, para i e j pares
B (bij ) 9 9
2, para i e j ímpares
3, para os demais índices
a) A * A’ d) A * B
b) B^2 e) A .^B
c) B.^2 f) A./B
35. Funções elementares
Função Descrição
abs(x) módulo de x
sin(x) seno de x
cos(x) cosseno de x
tan(x) tangente de x
asin(x) inversa da função seno
acos(x) inversa da função seno
atan(x) inversa da função tangente
log2(x) logaritmo de x na base 2
log10(x) logaritmo de x na base 10
log(x) logaritmo natural de x
sqrt(x) raiz quadrada de x
exp(x) exponencial de x
37. Programando em SciLab
• O que é um script?
– Conjunto de instruções do SciLab que podem ser
executadas sistematicamente.
– Os scripts são salvos em arquivos de extensão “.sce”.
– São executados pelo comando: exec('nome_do_script').
– Evite acentos, espaços e pontuações no nome do script.
• Para que serve?
– Sintetiza os comandos freqüentemente digitados em um
único arquivo.
– Aplicável a problemas mais extensos onde é exigido
mais comandos.
39. Entrada e Saída (prompt)
• Comando de entrada: input
Sintaxe: variavel = input(“mensagem”)
-->R = input(“Forneca o valor de entrada: ")
Forneca o valor de entrada: 1
R =
1.
• Comando de saida: disp
Sintaxe: disp(“mensagem”) ou disp(variavel)
-->disp(" Hello World! ")
Hello World!
43. Operadores lógicos e
relacionais
Operador lógico Símbolo Operador relacional Símbolo
E & Igual ==
Ou | Diferente ~=
Não ~ Maior >
Menor <
Maior ou igual >=
Menor ou igual <=
1 ou T (true) – Verdadeiro
0 ou F (false) – Falso
44. Exercícios
--> 2 == 3
ans = F
--> 2 <= 3
ans = T
--> (2 == 3) & (2 <= 3)
ans = F
--> ~(2 == 3) & (2 <= 3)
ans = T
--> (2 ~= 3) & (2 <= 3)
ans = T
45. Controladores de fluxo
if: cria caminhos alternativos na execução de um script.
if expressao_1 if expressao_1
instrucoes_1 instrucoes_1
else elseif expressao_2
instrucoes_2 instrucoes_2
end else
instrucoes_3
end
48. Controladores de fluxo
for: permite que um grupo de instruções se repitam
por um número especificado de vezes.
for variavel = valor_inicial:passo:valor_final
instrucoes;
end
50. Controladores de fluxo
6, para i par e j ímpar
A (aij ) 9 9
2, para i ímpar e j par
3, para os demais índices
51. Controladores de fluxo
while: permite que um grupo de instruções se repitam
enquanto uma determinada expressão de controle for
verdadeira.
while (expressao de controle)
instrucoes;
end
52. Exercícios
Analisando o código acima, o while é executado enquanto que 1+EPS > 1. Conforme
podemos observar, EPS começa com o valor 2, e a cada laço de repetição do while, seu
valor é dividido por dois. Teoricamente, o valor de EPS tende a zero com infinitos laços
de repetição. Logo, a execução do SCRIPT nunca terminaria. Porém, após certa
quantidade de laços de repetição, o while encerra e o seu valor é mostrado no console.
Isso acontece porque o computador utiliza um utiliza número FINITO de dígitos para
representar os números. O SciLab usa 16 dígitos de precisão, nesse caso o valor de EPS é
da ordem de 10-16 (1.110D-16 ). Se formos no console e executarmos a operação lógica:
--> 1 + EPS == 1
ans = T
Veremos que EPS é entendido como ZERO para o SCILAB.
53. Controladores de fluxo
break: encerra a execução de um laço de repetição
(for ou while).
EPS = 1; EPS = 1;
for num = 1 : 1000 while (1+EPS) > 1
EPS = EPS / 2; EPS = EPS/2;
if ~((1+EPS) > 1) end
break disp(EPS)
end
end
disp(EPS)
Podemos representar um while por um for ou vice-versa.
for: o laço de repetição é executado enquanto uma variável é incrementada até um
valor máximo
while: o laço de repetição é executado enquanto uma condição é verdadeira
O comando break tem o poder de encerrar qualquer um desses dois tipos de laços.
54. Funções
• Scripts podem ser transformados em funções.
• Funções são um conjunto de instruções que
executam determinada tarefa.
• Uma função pode receber parâmetros de entrada
e retorna valores.
• Sintaxe:
function var_retorno = nome_da_funcao(pars_entrada)
instrucoes para obter variavel_retorno;
endfunction
57. Como aprender mais?
• Acessando sua documentação
– Comando help: help comando_do_scilab
– Exemplo:
--> help plot2d
• Acessando a documentação:
– ? > Ajuda do Scilab
– Ou aperte a tecla F1
• Acessando scripts demonstrativos
– Comando scilab_demos:
--> scilab_demos