SCILAB


Software livre para cálculo numérico e
simulação de sistemas físicos
Utilizado nas áreas de:

Controle e processamento de sinais

Automação industrial

Computação gráfica

Matemática

Física

Entre outras.
SCILAB



Disponível como software livre desde 1994
pelo site: www.scilab.org
Possui a maioria das funcionalidades do
concorrente MatLab.
Disponível para diversas plataformas:

Linux

Windows

Solaris

Unix
SCILAB
SCILAB
SCILAB

Variáveis que não podem ser modificadas


%s ­ variável complexa de polinômios
(Transformada de Laplace)
%z ­ variável complexa de polinômios
(Transformada z)

%T ­ variável booleana True ( verdadeiro)

%F ­ variável booleana False (falso)

%pi
­ valor de π (3,1415926...)

%e
­ número de Euler ( 2,7182818...)

%eps ­ precisão da máquina (%eps+1=1)

%inf ­ infinito
SCILAB

Declaração de variáveis

Sensível a maiúsculas e minúsculas

Palavra única

Até 24 caracteres

Não pode iniciar com número

Ex1.: a variável que armazena o valor do custo de
produção de um produto pode ser custo_total
SCILAB – Operações básicas

­­>a=2;b=3; //declarando as variaveis

­­>a+b //soma

ans =

5.




­­>a­b //subtracao
ans =
­ 1.
ans =

6.


­­>a^b /exponenciacao

ans =

8.
­­>a*b //multiplicacao



­­>a/b /divisao
ans =
0.6666667

O SCILAB atribui à
variável ans o valor do
resultado do cálculo.
SCILAB – Operações com
números complexos













­­>a=3+2*%i; b=9­6*%i; //declarando as variaveis
­­>a+b //soma de complexos
ans =
12. ­ 4.i
­­>a­b //subtracao de complexos
ans =
­ 6. + 8.i
­­>a*b //multiplicacao de complexos
ans =
39.
­­>a/b //divisao de complexos
ans =
0.1282051 + 0.3076923i
SCILAB – Operações com
números complexos

Conversão de retangular para polar (x,y) ­> (ρ,θ)
Ex.: Se o número é z = 4+3i;

módulo = ρ = √(42+32)

Ângulo = θ= arctan(3/4)



A função abs(x) calcula o módulo do número complexo;
Utilização da fórmula de Euler:





Ex.: z = 5e0.6435011 (forma polar)
z = 4+3i
(forma retangular)
­­>z=5*%e^(0.6435011*%i)
z =
4. + 3.i
SCILAB – Funções elementares






abs(x)
Retorna o valor absoluto (se x é real) e o
módulo ( se x é complexo)
cos(x), sin(x), tan(x), cotg(x)
Retorna cosseno, seno, tangente ou
cotangente de x (x deve estar em radianos)
acos(x), asin(x), atan(x)*
Retorna o angulo (em radianos)
SCILAB – Funções elementares

Função atan(x), atan(x,y)

atan(x):





Calcula o arco tangente para os quadrantes
I e IV
[­/2, /2 ]
atan(x,y):
Calcula o arco tangente para todos os
quadrantes
[­, ]
SCILAB – Funções elementares








imag(x)
Mostra a parte imaginária de um complexo
real(x)
Mostra a parte real de um complexo
log(x), log10(x), log2(x)
Logaritmos natural, base 10 e base 2
modulo(x,y)
Mostra o resto da divisão de x por y
SCILAB – Funções elementares








round(x)
Arredonda o valor de x para o inteiro mais
próximo
floor(x)
Arredonda para o menor inteiro
ceil(x)
Arredonda para o maior inteiro
sqrt(x)
Calcula a raiz quadrada de x
SCILAB – Funções elementares
1 ­ Usando a linha de comando do SCILAB resolva o seguinte problema:

Um terreno A mede 5 m de largura por 30 m de comprimento. O outro terreno
B mede 8 m de largura por 40 de comprimento. Sabendo que o m2 de cada
terreno vale R$ 15,00, calcule a área total e o valor monetário necessário para
se adquirir esses dois terrenos.

2 - O raio de uma circunferência r é igual a 2 m. Calcule o perímetro desta
circunferência, bem como, a área do círculo.

3 ­ A seção transversal de um cilindro tem raio 0,5 m e o comprimento do
mesmo é 1,5 m. Calcule o volume e área da seção transversal do mesmo.

4 ­ Qual é o resultado das seguintes expressões segundo o SCILAB:


((5+3)*2^2+7)*2

(5+3*2^2+7)*2

(5+3*2^(4­1)*2)+(5­3*2)

(2*3)^(3­1)/(5­2)+6
SCILAB – Funções elementares
SCILAB - Polinômios

Formas de declaração

Ex.:

forma fatorada: p = (s – 1)(s – 2)






p = s2 – 3s +2
Usando a função poly()
Pelas raízes:
p = poly([ 1 2 ], 's')
Pelos coeficientes:
p = poly([ 2 ­3 1 ], 's' , 'coeff ' )
Obs.: os coeficientes devem ser digitados
do menor grau para o maior.
SCILAB - Polinômios

Usando a variável %s
p = %s^2­3*%s+2

Declarando um polinômio x
x = poly(0, 'x')
p = x^2­3*x+2
SCILAB - Polinômios
­­>p=poly([1 2],'s')
p =
2
2 ­ 3s + s
//pelas raizes
­­>p=poly([2 ­3 1],'s','coeff')
p =
2
2 ­ 3s + s
//pelos coeficientes
­­>x = poly(0, 'x');p = x^2­3*x+2
p =
2
2 ­ 3x + x
SCILAB - Polinômios
A função roots() calcula as raízes da função
polinômio
ex.: roots(p)
A função horner() calcula o valor da função
polinômio
ex.: horner(p,2)
A função derivat() calcula a derivada do
polinômio
ex.: derivat(p)
SCILAB - Polinômios
Ex.: p = s2 – 3s +2:
­­>p=poly([2 ­3 1],'s','coeff')
p =
2
2 ­ 3s + s
­­>roots(p)
//calcula raizes
ans =
1.
2.
­­>horner(p,2)
ans =
0.
//substitui s por 2 (uma raiz)
SCILAB – Vetores e Matrizes
Diz­se que x é um vetor de dimensão n em R se:
x= x 1, x 2, ... , x n 

Mas, ao invés de pensar em coordenadas, pode­se pensar em
matrizes­coluna:

SCILAB – Vetores e Matrizes

Declarando vetores (sequencias)
A = valor_inicial:incremento:valor_final
­­>A=0:2:10
//incrementa de 2 em 2
A =
0. 2. 4. 6. 8. 10.
­­>b=0:10
//incrementa de 1 em 1 (padrao)
b =
0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
­­>C=10:­2:0
//decresce de 2 em 2
C =
10. 8. 6. 4. 2. 0.
SCILAB – Vetores e Matrizes

Declarando vetores (vetor coluna)
Consideremos o vetor
. Seus elementos devem ser
separados por ' ; ' (ponto e vírgula) no Scilab.
Ex.: ­­>A=[4;5;6]
A =
4.
5.
6.
SCILAB – Vetores e Matrizes

Declarando vetores (vetor linha)
A = [a11,a12, a13] ou A=[a11 a12 a13]
Obs.: os elementos são separados por ' , ' (vírgula) ou
espaço
Ex.:
­­>A=[4,5,6]; B=[4 5 6]; //elementos separados por (,)
­­>A,B
A =
4. 5. 6.
B =
4. 5. 6.
SCILAB – Vetores e Matrizes

Transposição
A'
Ex.: ­­>A=[1 2 3] //vetor linha
A =
1. 2. 3.
­­>A'
//vetor coluna
ans =
1.
2.
3.
SCILAB – Vetores e Matrizes
Operações com vetores
SCILAB – Vetores e Matrizes
SCILAB – Vetores e Matrizes
Operações com matrizes
SCILAB – Vetores e Matrizes
Formas de declaração
SCILAB – Vetores e Matrizes
SCILAB – Vetores e Matrizes
Para calcular a inversa utiliza-se o comando inv().
Para calcular o determinante utiliza-se o comando det()
SCILAB – Vetores e Matrizes
SCILAB – Vetores e Matrizes
Vejamos agora uma aplicação matemática com vetores:

Calcular o valor da seguinte série
para os seguintes valores de n:
n = 10
n = 20
n = 1000
Utilizar a função sum()
SCILAB – Vetores e Matrizes
Exercício: elaborar o cálculo do produto
vetorial de dois vetores no sistema xyz.
SCILAB - Gráficos
SCILAB - Gráficos
SCILAB - Gráficos
• Outras funcionalidades..
SCILAB - Gráficos
• Outras funcionalidades..
SCILAB - Gráficos


Outra opção......
xtitle(“< titulo do gráfico >",“ < título do eixo x
>",“<título do eixo y");
SCILAB - Gráficos
•
•
•
•
>> y=sin(x);
>> z=cos(x);
>> plot(x,y,x,z)
Vamos plotar um gráfico do seno e do co-seno
simultaneamente. O resultado está no gráfico da figura
abaixo.
SCILAB - Gráficos


Para plotar gráficos em janelas diferentes, utilizamos
o comando:
xset('window',n) onde n é o número da janela gráfica,
ex.:

>> y=sin(x);

>> xset('window',0)

>> plot(x,y)

>> z=cos(x);

>> xset('window',1)

>>plot(x,z)
SCILAB - Gráficos
SCILAB - Gráficos








>> y=sin(x);
>> plot(x,y);
Vamos plotar um gráfico do seno e do co­seno
simultaneamente.
>> z=cos(x);
>> plot(x,y,x,z)
Plotaremos agora o mesmo gráfico anterior acrescido da
função soma entre o seno e o co­seno do ângulo.
>> u=sin(x)+cos(x);
>> plot(x,y,x,z,x,u)
SCILAB - Gráficos
• Estilos de Linha, Marcadores e Cores
– Quando plotamos vários gráficos, podemos
diferenciá-los utilizando cores e marcadores
diferentes.
SCILAB - Gráficos
SCILAB - Gráficos
SCILAB - Gráficos
• Podemos colocar em
uma mesma janela
gráfica, gráficos
separados.
• Utilizamos para isso o
comando subplot()
– subplot(n_linhas,
n_colunas, sequencia)
SCILAB - Gráficos
plot2d([x,x],[sin(x) cos(x)],[10 20],leg='seno@cos')
SCILAB - Gráficos
SCILAB - Gráficos
SCILAB - Gráficos
Exercícios:
1 – Elaborar o gráfico das funções:
exponencial positiva
exponencial negativa
ln
log10
(em áreas separadas da janela gráfica,
com títulos, e legendas)
2 – Elaborar o gráfico da função 3d
z = sen(x2+y2)
SCILAB - Programação
SCILAB - Programação
SCILAB - Programação
SCILAB - Programação
• Ex1.: Elaborar um programa que avalia a média
das notas de um aluno e retorna a situação do
mesmo (aprovado ou reprovado)
SCILAB - Programação
• Estrutura condicional
SCILAB - Programação
• Estrutura condicional
SCILAB - Programação
SCILAB - Programação

Elaborar o programa do exemplo 1.

Para imprimir no console utilizar a função:

printf('\n <texto>: %f",<variável>)

O \n serve para pular uma linha no console.
SCILAB - Programação
• Ex2.: Elaborar um programa para cálculo do
fatorial de um número.
SCILAB - Programação
• Estruturas repetitivas
SCILAB - Programação
• Estruturas repetitivas
SCILAB - Programação

Elaborar o programa do exemplo 2.
SCILAB - Programação

Utilizando as estruturas de repetição e
condicionais....e
SCILAB - Programação
• Funções
– Funções internas
• Sin(), tan(), sqrt(), bode(), entre outras.
– Funções definidas pelo usuário
• Utiliza a definição de função
– function y = nome_da_função(argumentos)
– < algorítmo da função >
– endfunction
• São gravadas em arquivos de script (.sce) utilizando um editor
de texto ascii qualquer.
SCILAB - Programação

Funções

Para serem utilizadas, as funçoes devem ser
carregadas na memória.
Utilizar o menu FILE ­> EXECUTE ou

Utilizar o comando getf, ex.:
getf('/home/manoel/Documentos/matlab/work_scilab/funcoes.sci');


Implementar os exemplos 1 e 2 em funções.
SCILAB – Sistemas de controle

Existem diversas funções internas para
utilização em sistemas de controle.






poly Escreve um polinômio,dados os coeficientes
em ordem crescente ou as raízes do mesmo
roots Extraí as raízes de um polinômio
ones Cria um vetor (ou matriz), onde o valor de
cada elemento do vetor vale 1. Vetor de 1.
Zeros Vetor (ou matriz) de zeros
csim Simulação de um sistema linear, dado o tipo
de entrada U. Resposta no tempo
plot Desenha um gráfico
SCILAB – Sistemas de controle

Para determinar raízes polinômios:
Exemplo: p(s)=7s3 +2s2+5s+1

Comando: (roots)
­­> p = poly ([1 5 2 7], ' s ',' coef ' );
­­> roots ( p );
As variáveis “s” e “z”, são reconhecidas pelo
SCILAB, basta escrever: %s
SCILAB – Sistemas de controle

Para utilizar a função de transferência

Definir o polinômio do numerador


Definir o polinômio do denominador


Ex.: num = poly([3 2 1],’s’,’coeff’)
Ex.: den = poly([2 3 1],’s’,’coeff’)
Definir a função de transferência

TF = num / den
SCILAB – Sistemas de controle



Decomposição em frações parciais
Decompor em frações parciais a seguinte funções de
2
transferência G2(s)=(5s+2)/(s+1)(s+2)
Comando: (pfss)
--> G2 = (5*%s+2) / ((%s+1)(%s+2)2 )
­­> pfss(G2)
SCILAB – Sistemas de controle

Para extrair os pólos e zeros


Utilizar o comando roots()
Para se obter a resposta do sistema


Utilizar o comando csim()
Deve ser definido o intervalo de tempo da resposta




t=0.1:0.1:10
c = csim('step',t,H)
plot(t,c)
O sinal de entrada pode ser step, impulse, ou
definido pelo usuário.
SCILAB – Sistemas de controle

deff('u=input(t)','u=(sin(t))')

plot2d([t',t'],[(csim(input,t,H))',0*t'])

plot(t,0.1*input(t))

xtitle("Resposta para função senoidal","t
[s]","Deslocamento angular [rad]");
SCILAB – Sistemas de controle



Gráfico da resposta em frequência.
Utilizado como exemplo a seguinte função de
2
transferência G2(s)=(5s+2)/(s+1)(s+2)
Comando: (bode)
--> G2 = (5*%s+2) / ((%s+1)(%s+2)2 )
--> G = syslin('c',G2) //'c' indica um sistema
contínuo no tempo
­­> bode(G)
SCILAB – Sistemas de controle

Exercício1:

Elaborar um programa que dada a função de transferência
de 1a ou 2a ordem, o mesmo apresente:







O tipo de resposta para o degrau (sub, super, criticamente
amortecido ou oscilatório)
Encontre a frequência natural e a taxa de amortecimento.
Calcule o tempo de pico, overshoot, tempo de subida, conforme o
caso.
Decomponha a equação de saída em frações parciais.
Trace o gráfico da resposta para uma entrada degrau
Trace o gráfico de Bode.
Exercício2:

Implementar a função de transferência que relaciona a
velocidade e a tensão em um motor cc e obter os gráficos
da resposta para o impulso, degrau e senoidal.
Download

Aula sobre o SciLab