Vous êtes sur la page 1sur 74

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 /exponenciacao

­­>a­b //subtracao

ans =

ans =

8.

­ 1.

­­>a*b //multiplicacao

O SCILAB atribui à

ans =
variável ans o valor do

6. resultado do cálculo.

­­>a/b /divisao

ans =

0.6666667
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.: 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 ' )

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') //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^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) //substitui s por 2 (uma raiz)


ans =
0.
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 Utilizar a função sum()
n = 1000
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

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

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.

Vous aimerez peut-être aussi