Prof. Botter USJT - 2015 Pgina 1
Captulo 01 Introduo ao Scilab
1 Introduo
A matemtica a linguagem comum de grande parte das cincias e da
Engenharia. Matrizes, equaes diferenciais, conjuntos de dados, grficos e diagrama so
os blocos bsicos tanto da matemtica aplicada quanto do Scilab. justamente a base
matemtica que torna o Scilab acessvel.
O Scilab tanto um ambiente quanto uma linguagem de programao. Um
de seus aspectos o fato de que a linguagem Scilab permite-lhe construir suas prprias
ferramentas reutilizveis. Voc pode facilmente criar suas prprias funes e programas
(conhecidos como arquivos sce ) em linguagem Scilab.
A seguir faremos uma breve introduo ao Scilab.
As principais janelas acessveis a partir do ambiente de trabalho do Scilab
so:
A Janela do Console
A Janela de Histrico de Comandos
A Janela do Navegador de Variveis
A Janela do Console
A principal janela do ambiente de trabalho do Scilab a Janela do Console.
Ela nos permite digitar comandos interativamente com o Scilab atravs do prompt ( ---> ),
os quais sero executados ao pressionarmos a tecla .
A Janela de Histrico de Comandos
A Janela de Histrico de Comandos exibe uma lista dos comandos que voc
executou na Janela do Console at serem deletados.
Prof. Botter USJT - 2015 Pgina 2
A Janela do Navegador de Variveis
A Janela do Navegador de Variveis exibe uma lista das variveis criadas,
bem como suas caractersticas (Nome, Dimenses, Tipo e Visibilidade).
Prof. Botter USJT - 2015 Pgina 3
1.1 Conceitos Bsicos
Ajuda
O comando help
O comando help a maneira mais simples de se conseguir ajuda, bastando
para isto, digitar o comando help seguido do tpico que voc necessita de informaes.
Exemplo:
O Ponto e Vrgula
A ausncia ou a presena do ponto e vrgula ao final de um comando do
Scilab permite ou no visualizar o resultado de um clculo.
Exemplos:
-->a=0
ans =
0.
-->b=3;
Prof. Botter USJT - 2015 Pgina 4
1.2 Operaes matemticas
Da mesma forma que sua calculadora, o Scilab capaz de executar
matemtica elementar, conforme indica a tabela a seguir.
Operao Smbolo Exemplo
Adio + 5 + 3
Subtrao _ 23 12
Multiplicao * 3.14 * 0.85
Diviso matricial / 12/4 = 12*(4-1
)
Diviso esquerda \ (12-1
)*4
Potenciao ^ 2^2
A ordem na qual essas operaes so executadas em uma dada expresso
dada pelas regras de precedncia que est mencionada a seguir:
As expresses so calculadas da esquerda para a direita com a operao de
potenciao tendo a maior ordem de precedncia, seguida da multiplicao e
diviso (ambas tendo a mesma ordem de precedncia), por sua vez seguidas da
adio e da subtrao (ambas tendo a mesma ordem de precedncia).
Para alterarmos esta ordem devemos usar o artifcio de parnteses. Neste
caso, o clculo inicia-se nos parnteses mais internos e procede de dentro para fora. Para
ilustrar esses conceitos, acompanhe os exemplos abaixo:
Exemplos:
-->3^2-5-6/3*2
ans =
0.
-->3^2-5-6/(3*2)
ans =
3.
Prof. Botter USJT - 2015 Pgina 5
1.3 Variveis
Nomeando variveis
Para variveis o Scilab tambm tem regras.
Regra Exemplos
So sensveis a maisculas e minsculas fruta, Fruta e FRUTA so diferentes
Podem conter at 24 caracteres os caracteres alm dovigsimo quarto so
ignorados
Excluindo variveis
Para excluir uma varivel devemos utilizar o comando clear seguido do
nome da varivel que se deseja excluir, ou simplesmente clear para excluir todas as
variveis que esto sendo usadas pelo SCILAB no momento.
Exemplos:
clear exclui todas as variveis
clear frutas exclui a varivel frutas
clear frutas lixo exclui as variveis frutas e lixo
Limpando a Janela do Console do Scilab
Para limpar a janela do console do Scilab e posicionar o cursor na primeira
linha da mesma, podemos utilizar o comando clc.
Prof. Botter USJT - 2015 Pgina 6
1.4 Funes Matemticas
A tabela a seguir apresenta algumas funes matemticas.
Funo Significado
abs(x) mdulo de x
acos(x) arco co-seno de x
asin(x) arco seno de x
atan(x) arco tangente de x
ceil(x) arredondamento de x na direo de zero
cos(x) co-seno de x
exp(x) exponencial de x
fix(x) arredondamento de x para menos infinito
log(x) logartmo neperiano de x
log10(x) logartmo na base 10 de x
round(x) arredondamento para um nmero inteiro mais
prximo
sin(x) seno de x
sqrt(x) raiz quadrada de x
tan(x) tangente de x
1.5 Manipulando Matrizes
Existem vrios tipos de matrizes:
quadradas nmeros de linhas igual ao nmero de colunas;
retangulares nmero de linhas diferentes do nmero de colunas;
unidimensional onde o nmero de linhas igual ao nmero de colunas e ambos
iguais a um.
Prof. Botter USJT - 2015 Pgina 7
Construindo matrizes
As matrizes podem ser adicionadas de vrias formas, contudo a mais
simples, descrita a seguir:
devemos delimitar a matriz por colchetes ([ ]);
cada elemento da matriz deve ser separado por um espao;
para indicar o final de uma linha, devemos inserir um ponto-e-vrgula (;)
Exemplos:
Matriz tipo Insero e Resultado
Unidimensional -->A =
2
Linha --> A = [1 2 3]
A =
1. 2. 3.
Coluna -->A = [1; 2; 3]
A =
1.
2.
3.
Quadrada -->A = [1 2 3; 4 5 6; 7 8 9]
A =
1. 2. 3.
4. 5. 6.
7. 8. 9.
Retangular -->A = [1 2 3; 4 5 6]
A =
1. 2. 3.
4. 5. 6.
Prof. Botter USJT - 2015 Pgina 8
Matrizes Especiais
Existem algumas matrizes especiais umas de uso geral, enquanto outras de
carter especfico.
Matriz tipo Insero e Resultado
Quadrada de zeros -->A=zeros(2,2)
A =
0. 0.
0. 0.
Retangular de zeros -->A=zeros(1,3)
A =
0. 0. 0.
Quadrada de uns -->A=ones(2,2)
A =
1. 1.
1. 1.
Retangular de uns -->A=ones(1,3)
A =
1. 1. 1
Quadrada e Randmicas entre zero e um -->A=rand(2,2)
A =
0.2113249 0.0002211
0.7560439 0.3303271
Retangular e randmicas entre zero e um -->A=rand(1,3)
A =
0.6653811 0.6283918 0.8497452
Matriz identidade quadrada -->A=eye(2)
A =
1. 0.
0. 1.
Prof. Botter USJT - 2015 Pgina 9
Endereamento de Matrizes
Acessando um nico elemento
Podemos acessar um elemento especfico de uma determinada matriz
informando a linha e a coluna do elemento que se deseja acessar.
Exemplo:
-->A = [1 2 3; 4 5 6]
A =
1. 2. 3.
4. 5. 6.
-->A(2,3)
ans =
6.
Acessando um bloco de elementos adjacentes
Podemos acessar um bloco de elementos adjacentes pertencentes a uma
matriz informando a linha inicial e a linha final e em seguida a coluna inicial e a coluna
final do bloco que se deseja acessar.
Exemplo:
-->A = [1 2 3; 4 5 6]
A =
1. 2. 3.
4. 5. 6.
-->A(1,2:3)
ans =
2. 3.
Prof. Botter USJT - 2015 Pgina 10
-->A(1:2,2:3)
ans =
2. 3.
5. 6.
-->A(1:2,2)
ans =
2.
5.
-->A(:,2:3)
ans =
2. 3.
5. 6.
-->A(1,:)
ans =
1. 2. 3.
Obs.: Os dois pontos no penltimo exemplo acima quer dizer que sero selecionadas todas
as linhas. E no ltimo que sero consideradas todas as colunas.
Prof. Botter USJT - 2015 Pgina 11
Operaes com Matrizes
Operaes Matriz-Escalar
Operao Insero e Resultado
Multiplicao por escalar -->A = [1 2 3; 4 5 6]
A =
1. 2. 3.
4. 5. 6.
-->B=2*A
B =
2. 4. 6.
8. 10. 12.
Soma/Subtrao por escalar -->C=A-2
C =
- 1. 0. 1.
2. 3. 4.
Potenciao por escalar -->C=A.^2
C =
1. 4. 9.
16. 25. 36.
Operaes Matriz-Matriz
-->A=[1 2; 4 5]
A =
1. 2.
4. 5.
-->B = [1 -2; -4 5]
B =
1. - 2.
- 4. 5.
Prof. Botter USJT - 2015 Pgina 12
-->C=[1 2; 3 4;5 6]
C =
1. 2.
3. 4.
5. 6.
-->D=[1 -2 0; -3 1 2]
D =
1. - 2. 0.
- 3. 1. 2.
Operao Insero e Resultado
Soma/Subtrao -->E=A-B
E =
0. 4.
8. 0.
Multiplicao elemento por elemento -->E=A.*B
E =
1. - 4.
- 16. 25.
Multiplicao entre matrizes (nmero de
colunas da primeira deve ser igual ao
nmero de linhas da segunda)
-->E=C*D
E =
- 5. 0. 4.
- 9. - 2. 8.
- 13. - 4. 12.
Matriz elevada a matriz -->E=A.^B
E =
1. 0.25
0.0039063 3125.
Matriz transporta -->F=A'
F =
1. 4.
2. 5.
Prof. Botter USJT - 2015 Pgina 13
Matriz inversa -->F=inv(A)
F =
- 1.6666667 0.6666667
1.3333333 - 0.3333333
Determinante de uma matriz -->F=det(A)
F =
-3.
Dimenso de matrizes
Podemos obter a informao sobre a dimenso de uma matriz atravs do
comando size.
Exemplo:
-->A=[1 2 3; 4 5 6]
A =
1. 2. 3.
4. 5. 6.
-->[a,b]=size(A)
b =
3.
a =
2.
Prof. Botter USJT - 2015 Pgina 14
No caso de termos um vetor poderemos tambm utilizar o comando length.
Exemplo:
-->B=[1 2 3]
B =
1. 2. 3.
-->[a,b]=size(B)
b =
3.
a =
1.
-->c=length(B)
c =
3.
Comparao de matrizes
Em determinadas ocasies, podemos necessitar comparar duas matrizes.
Exemplo:
-->A=[1 2 3; 4 5 6]
A =
1. 2. 3.
4. 5. 6.
-->B=[1 2 -3; 4 5 6]
B =
1. 2. - 3.
4. 5. 6.
Prof. Botter USJT - 2015 Pgina 15
Operao Insero e Resultado
Verificar se duas matrizes so iguais -->isequal(A,A)
ans =
T
-->isequal(A,B)
ans =
F
1.6 Polinmios
Representando polinmios
Sejam dois polinmios: p1 = x4 12x
3 + 25x + 116 e p2 = x + 1. Para
entrarmos com estes polinmios no SCILAB deveremos represent-los na forma vetorial.
Exemplo:
-->p1=[1 -12 0 25 116]
p1 =
1. - 12. 0. 25. 116.
-->p2=[1 1]
p2 =
1. 1.
-->p3=[3 5]
p3 =
3. 5.
Prof. Botter USJT - 2015 Pgina 16
Operaes com polinmios
A seguir encontram-se tabeladas as operaes bsicas com polinmios.
Operao Insero e Resultado
Razes -->a=roots(p1)
a =
11.747283
2.7028207
- 1.2250518 + 1.467208i
- 1.2250518 - 1.467208i
Parte real e parte imaginria -->imag(a)
ans =
0.
0.
1.467208
- 1.467208
-->real(a)
ans =
11.747283
2.7028207
- 1.2250518
- 1.2250518
Soma/subtrao (os polinmios tem que se
de mesmo tamanho)
-->p4=p2+p3
p4 =
4. 6.
Multiplicao -->p5=conv(p1,p2)
p5 =
1. - 11. - 12. 25. 141. 116.
Prof. Botter USJT - 2015 Pgina 17
1.7 Comandos de entrada de dados
Em algumas situaes podemos necessitar solicitar dados do usurio via
teclado.
Exemplo:
-->a=input('Entre com o valor da varivel a = ')
Entre com o valor da varivel a = 0
a =
0.
1.7 Comandos de sada de dados
Em algumas situaes podemos precisar visualizar textos/dados/resultados
na janela do console do Scilab.
Exemplos:
-->disp('O resultado da operao matemtica = ')
O resultado da operao matemtica =
-->printf('O resultado da operao matemtica = ')
O resultado da operao matemtica =
Obs.: O comando disp s coloca texto na janela do console do Scilab. Caso necessitarmos
colocar junto com texto uma varivel, necessitamos transformar a varivel em texto.
Exemplos:
-->a=14;
-->disp('O resultado da operao matemtica = ' + string (a) )
O resultado da operao matemtica = 14
Prof. Botter USJT - 2015 Pgina 18
-->a=3;
-->b=-7;
-->disp('O resultado da operao matemtica = ' + string (a+b) )
O resultado da operao matemtica = -4
-->a=14;
-->printf('O resultado da operao matemtica = %g\n',a)
O resultado da operao matemtica = 14
Prof. Botter USJT - 2015 Pgina 19
1.9 Estruturas de Seleo
As estruturas de seleo so teis quando necessitamos realizar certas aes
mediante certas condies.
Exemplo:
nota1=input('Entre com a nota do primeiro semestre ')
disp('')
nota2=input('Entre com a nota do segundo semestre ')
disp('')
media=0.4*nota1+0.6*nota2;
printf('Sua mdia %g\n',media)
if media>=6 then
disp('Parbens, voc foi aprovado em CNCOMP')
else
disp('Infelizmente voc vai precisar fazer a Prova Substitutiva')
end
Entre com a nota do primeiro semestre 4
Entre com a nota do segundo semestre 3.5
Sua mdia 3.7
Infelizmente voc vai precisar fazer a Prova Substitutiva
Prof. Botter USJT - 2015 Pgina 20
1.10 Estruturas de Repetio
As estruturas de repetio so teis quando necessitamos repetir certas aes
mediante certas condies.
Exemplo:
iteracao=1;
while iteracao
Prof. Botter USJT - 2015 Pgina 21
1.11Trabalhando com grficos bidimensionais
Grficos
Usando o comando plot
O comando mais freqentemente usado para plotar um grfico bidimensional
o comando plot.
Exemplo:
x = linspace(0,2*3.1415,40) ; // cria um vetor linearmente espaado com 40 pontos entre 0 e
2*pi
y=sin(x); // calcula o seno de x
plot(y); // plota o vetor y
Prof. Botter USJT - 2015 Pgina 22
Adicionando grades, ttulo e rtulos no grfico
Podemos tambm inserir grades num grfico, bem como ttulo para o grfico
e rtulos (nomes) para os eixos.
Exemplo:
x = linspace(0,2*3.1415,40) ;
y=sin(x);
plot(x,y); // plota o grfico de y em funo de x
xgrid // insere uma grade no grfico
title('seno(x)') // insere um ttulo para o grfico
ylabel('amplitude') // insere um rtulo par o eixo y
xlabel('tempo') // insere um rtulo par o eixo x
Prof. Botter USJT - 2015 Pgina 23
Estilo de linhas, marcadores e cores de um grfico
Podemos num grfico, alterar algumas de suas caractersticas, tais como: as
linhas, suas cores e seus marcadores. A tabela a seguir menciona as caractersticas
alterveis na configurao de um grfico
Smbolo Cor Smbolo Marcador Smbolo Tipo de linha
y amarela . ponto - linha contnua
m magenta o crculo : linha pontilhada
c ciano x x-marca -. trao-ponto
r vermelha + mais - - linha tracejada
g verde * asterisco
b azul s quadrado
w branca v tringulo para baixo
k preta ^ tringulo para cima
< tringulo para a esquerda
> tringulo para a direita
p pentagrama
h hexagonal
Exemplo:
x = linspace(0,4*3.1415,40) ;
y=sin(x);
plot(x,y,'r*--')
Prof. Botter USJT - 2015 Pgina 24
As caractersticas (propriedades) de um grfico (figura) podem ser alteradas
aps a confeco dos mesmos, bastando para isso clicarmos na barra de menu na opo
Propriedades da figura, e nas opes seguintes a essa segundo ilustramos a seguir:
Alteraes das caractersticas relativas aos eixos e titulo.
Prof. Botter USJT - 2015 Pgina 25
Alteraes das caractersticas relativas as linhas dos grficos.
Adicionando Legendas
Quando traamos dois ou mais grficos em uma mesma janela e nos mesmos
eixos, possvel definir legendas de maneira a identificarmos cada curva.
Exemplo:
x = linspace(0,4*3.1415,40) ;
plot(x,sin(x),x,cos(x));
legend('sin(x)','cos(x)')
Prof. Botter USJT - 2015 Pgina 26
Plotando dois ou mais grficos na mesma janela e nos mesmos eixos
A- Informando as cores dos grficos
Exemplo:
x = linspace(0,4*3.1415,40) ;
y=sin(x);
plot(x,y,'b');
z=cos(x);
plot(x,z,'r');
B- Usando um plot s (a mudana de cor automaticamente feita pelo Scilab)
Exemplo:
x = linspace(0,4*3.1415,40) ;
plot(x,sin(x),x,cos(x));
Prof. Botter USJT - 2015 Pgina 27
Plotando dois ou mais grficos na mesma janela e em eixos diferentes
Exemplos:
x = linspace(0,4*3.1415,40) ;
y=sin(x);
subplot(2,1,1); plot(x,y,'b');
z=cos(x);
subplot(2,1,2); plot(x,z,'r');
x = linspace(0,4*3.1415,40) ;
subplot(2,2,1);plot(x,sin,'b');
subplot(2,2,2);plot(x,cos(x),'r');
subplot(2,2,3);plot(x,x.*sin(x),'k');
subplot(2,2,4);plot(x,x.*cos(x),'g');
x = linspace(0,4*3.1415,40) ;
subplot(2,2,1);plot(x,sin,'b');
subplot(2,2,2);plot(x,cos(x),'r');
subplot(2,1,2);plot(x,sin(x)+cos(x),'k');