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
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
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...)
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
SCILAB – Operações básicas
>a=2;b=3; //declarando as variaveis >a+b //soma ans = 5. >ab //subtracao ans = 1. >a*b //multiplicacao ans = 6. >a/b /divisao ans = >a^b /exponenciacao ans = 8. 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=96*%i; //declarando as variaveis
>a+b //soma de complexos ans =
12. 4.i
>ab //subtracao de complexos ans =
6. + 8.i
>a*b //multiplicacao de complexos ans =
39.
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)
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)*
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
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)
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)
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^(41)*2)+(53*2) (2*3)^(31)/(52)+6
SCILAB - Polinômios
Formas de declaração
Ex.: p = s2 – 3s +2
forma fatorada: p = (s – 1)(s – 2) Usando a função poly()
Pelas raízes:
p = poly([ 1 2 ], 's') Pelos coeficientes:
p = poly([ 2 3 1 ], 's' , 'coeff ' )
SCILAB - Polinômios
Usando a variável %s p = %s^23*%s+2 Declarando um polinômio x x = poly(0, 'x') p = x^23*x+2SCILAB - Polinômios
>p=poly([1 2],'s') //pelas raizes p =
2 2 3s + s
>p=poly([2 3 1],'s','coeff') //pelos coeficientes p = 2 2 3s + s >x = poly(0, 'x');p = x^23*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
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) //substitui s por 2 (uma raiz) ans =
SCILAB – Vetores e Matrizes
Dizse 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, podese pensar em
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 =
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
SCILAB – Vetores e Matrizes
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
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 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
Outra opção...
xtitle(“< titulo do gráfico >",“ < título do eixo x
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
>> y=sin(x); >> plot(x,y);
Vamos plotar um gráfico do seno e do coseno 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 coseno do ângulo.
>> u=sin(x)+cos(x);
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
• Podemos colocar em uma mesma janela gráfica, gráficos separados.
• Utilizamos para isso o comando subplot()
– subplot(n_linhas,
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)
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
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>)
SCILAB - Programação
• Ex2.: Elaborar um programa para cálculo do fatorial de um número.
SCILAB - Programação
SCILAB - Programação
SCILAB - Programação
SCILAB - Programação
Utilizando as estruturas de repetição 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');
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
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
Ex.: num = poly([3 2 1],’s’,’coeff’)
Definir o polinômio do denominador
Ex.: den = poly([2 3 1],’s’,’coeff’)
Definir a função de transferência
SCILAB – Sistemas de controle
Decomposição em frações parciais
Decompor em frações parciais a seguinte funções de
transferência G 2(s)=(5s+2)/(s+1)(s+2) 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
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
SCILAB – Sistemas de controle
Gráfico da resposta em frequência.
Utilizado como exemplo a seguinte função de
transferência G
2(s)=(5s+2)/(s+1)(s+2) 2
Comando: (bode)
--> G2 = (5*%s+2) / ((%s+1)(%s+2)2 )
--> G = syslin('c',G2) //'c' indica um sistema contínuo no tempo
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