Você está na página 1de 104

SCILAB

Software livre para clculo numrico e


simulao de sistemas fsicos

Utilizado nas reas de:




Controle e processamento de sinais

Automao industrial

Computao grfica

Matemtica

Fsica

Entre outras.

SCILAB


Disponvel como software livre desde 1994 pelo


site: www.scilab.org

Possui a maioria das funcionalidades do


concorrente MatLab.

Disponvel para diversas plataformas:




Linux

Windows

Solaris

Unix

SCILAB

SCILAB

SCILAB


Variveis que no podem ser modificadas




%s varivel complexa de polinmios


(Transformada de Laplace)

%z varivel complexa de polinmios


(Transformada z)

%T varivel booleana True ( verdadeiro)

%F varivel booleana False (falso)

%pi

valor de  (3,1415926...)

%e

nmero de Euler ( 2,7182818...)

%eps preciso da mquina (%eps+1=1)

%inf infinito

SCILAB


Declarao de variveis


Sensvel a maisculas e minsculas

Palavra nica

At 24 caracteres

No pode iniciar com nmero

Ex1.: a varivel que armazena o valor do custo de


produo de um produto pode ser custo_total

SCILAB Operaes bsicas




>a=2;b=3; //declarando as variaveis

>a+b //soma

ans =

5.

>ab //subtracao
ans =
1.

ans =

6.

>a^b /exponenciacao

ans =

8.

>a*b //multiplicacao

>a/b /divisao
ans =
0.6666667

O SCILAB atribui
varivel ans o valor do
resultado do clculo.

SCILAB Operaes bsicas




Ordem de avaliao entre os operadores.

SCILAB Operaes com


nmeros 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.
>a/b //divisao de complexos
ans =
0.1282051 + 0.3076923i

SCILAB Operaes com


nmeros complexos
Converso de retangular para polar (x,y) > (,)

Ex.: Se o nmero z = 4+3i;

mdulo =  = (42+32)

ngulo = = arctan(3/4)

A funo abs(x) calcula o mdulo do nmero complexo;


Utilizao da frmula de Euler:








Ex.: z = 5e0.6435011 (forma polar)


z = 4+3i

(forma retangular)

>z=5*%e^(0.6435011*%i)
z =
4. + 3.i

SCILAB Funes elementares




abs(x)

Retorna o valor absoluto (se x real) e o


mdulo ( 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 Funes elementares




Funo 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 Funes elementares











imag(x)
Mostra a parte imaginria 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 diviso de x por y

SCILAB Funes elementares




round(x)
Arredonda o valor de x para o inteiro mais prximo
floor(x)
Arredonda para o menor inteiro
ceil(x)
Arredonda para o maior inteiro
fix(x)
Devolve a parte inteira de um nmero
sqrt(x)
Calcula a raiz quadrada de x

SCILAB Formato de
visualizao de nmeros


O comando format() modifica a quantidade de


nmeros que so mostrados (at 25).
>format(5)
>sqrt(3)
ans =
1.73


Todos os nmeros sero vistos com 5 posioes,


incluindo o ponto decimal e um espao para o sinal

SCILAB Formato de
visualizao de nmeros


Notao cientfica


Utilizase format('e',<quantidade de caracteres>)

ex.:

>format('e',8)

>%pi






3.1D+00
>format('e',10)
>%pi
3.142D+00

Para voltar notao decimal,


utilizase format('v',<quantidade
de caracteres>)

SCILAB Formato de
visualizao de nmeros


Notao cientfica


Para escrever nmeros em notao cientfica,


utilizase D ou E.





a = 3.2e3
3200
B = 4.5d4
45000

SCILAB - String


String tipo de varivel utilizado por toda e


qualquer informao composta por caracteres
alfa numricos.

So declaradas utilizandose aspas simples ou


dupla.

SCILAB - String
>a = "abcd"
a=
abcd
>b = efgh
b=
efgh
>c = "Maria e Jose"
c=
Maria e Jose

Para no confundir com o


operador transposta, preferese
utilizar as aspas duplas na
definio de strings.

SCILAB - String


Operao mais comum com string a


concatenao.

>n = "Pedro"
>m = "Paulo"
>m + n

// Concatena Paulo com Pedro sem

ans =

// espao entre eles.

PauloPedro
>m + " e " + n

// Concatena Paulo com Pedro

ans =

// inserindo espaos entre eles.

Paulo e Pedro

SCILAB - String


Funoes com string




length() obtem o comprimento da string,


quantidade de caracteres.

>m="pedro"
m =
pedro
>length(m)
ans =
5.

SCILAB - String


Funoes com string




string() transforma um nmero em string.

>e = 10;
>a = "a camisa " + string(e)
a=
a camisa 10

SCILAB - String


Funoes com string




evstr() transforma uma string em nmero.

>e = 10;
>b = 20 + evstr(e)
b=
30

SCILAB Funes 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 monetrio necessrio para
se adquirir esses dois terrenos.


2 - O raio de uma circunferncia r igual a 2 m. Calcule o permetro desta


circunferncia, bem como, a rea do crculo.


3 A seo transversal de um cilindro tem raio 0,5 m e o comprimento do


mesmo 1,5 m. Calcule o volume e rea da seo transversal do mesmo.


4 Qual o resultado das seguintes expresses 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 Funes elementares

2. Considere as variveis A=11, B=5, C=4 e D=2. Calcule as


expressoes abaixo.
a) 3*modulo(A,3)C
b) 2^(2*abs(C))/8
c) (A/Bfix(A/B)+sign(C)+2.8)^(15/B)
d) sqrt(cos(A)^2+sin(A)^2) + sin(D*%pi/4)
e) (A+C)/A * round(sign(C)+D/4)fix(D/1.5)

SCILAB Funes elementares




Calcule as seguintes expresses:

SCILAB Funes elementares

SCILAB Funes elementares

SCILAB Funes elementares




6 Escrever um comando que mostre a tela


uma mensagem com o resultado do seguinte
clculo:


a=10

b=45

r=a^3+b/3

SCILAB - Polinmios


Formas de declarao

Ex.:

forma fatorada: p = (s 1)(s 2)








p = s2 3s +2

Usando a funo poly()


Pelas razes:
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 - Polinmios


Usando a varivel %s
p = %s^23*%s+2

Declarando um polinmio x
x = poly(0, 'x')
p = x^23*x+2

SCILAB - Polinmios
>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^23*x+2


p =
2
2 3x + x

SCILAB - Polinmios

A funo roots() calcula as razes da funo


polinmio
ex.: roots(p)
A funo horner() calcula o valor da funo
polinmio
ex.: horner(p,2)
A funo derivat() calcula a derivada do
polinmio
ex.: derivat(p)

SCILAB - Polinmios
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 - Polinmios


1 Calcular a soma das razes do seguinte


polinmio.


2s6 s3 + s2 10

2 Calcular os pontos de mximo ou mnimo


dos polinmios abaixo:


4s7 + 3s4 s2 + 33

10s5 3s3 s2 s + 1

SCILAB Vetores e Matrizes


Matriz agregado de dados dentro de uma mesma varivel,

Os dados tem sempre o mesmo tipo, numrico ou string

Vetores matrizes unidimensionais

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 vrgula) 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 so separados por ' , ' (vrgula) ou
espao
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


Cada item em um vetor pode ser acessado individualmente por
meio de um ndice.


>nota = [8.1 5.2 9.2 7.2 6.5 5.2 8.5 9.5 6.5 10.0];
>nota(1)
8.1

SCILAB Vetores e Matrizes

Transposio
A'
Ex.: >A=[1 2 3] //vetor linha
A =
1. 2. 3.
>A'
//vetor coluna
ans =
1.
2.
3.

SCILAB Vetores e Matrizes


Operaes com vetores

SCILAB Vetores e Matrizes

SCILAB Vetores e Matrizes


Operaes com matrizes

SCILAB Vetores e Matrizes


Formas de declarao

SCILAB Vetores e Matrizes




Os elementos da matriz so acessados por


meio de dois ndices.

>a = [2 3 4

>

// tecle enter aqui

4 5 2]

a=

2.

3.

4.

4.

5.

2.

>a(1,2)

ans =

3.

>a(2,3)

ans =

2.

a(linha,coluna)

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




Aplicao


Resoluo de equaoes de sistemas lineares

Dado o sistema

SCILAB Vetores e Matrizes




Este sistema pode ser escrito na forma


matricial.

SCILAB Vetores e Matrizes




Para resolver o sistema:




A.x = b

A.A1.X = b.A1

I.X = b.A1

No Scilab, esta operao efetuada utilizandose:

A \ b (operador diviso a esquerda)

SCILAB Vetores e Matrizes




Declarase as matrizes:

>A = [1 1 2; 1 1 6; 4 0 1]

>b = [5;0;5] ou b = [5 0 5]' (evita digitar o ;)

>A\b

ans =
1.09375
2.65625
0.625

SCILAB Vetores e Matrizes

Vejamos agora uma aplicao matemtica com vetores:

Calcular o valor da seguinte srie


para os seguintes valores de n:
n = 10
n = 20
n = 1000

Utilizar a funo sum()

SCILAB Vetores e Matrizes

Exerccio: elaborar o clculo do produto


vetorial de dois vetores no sistema xyz.

SCILAB Vetores e Matrizes




Resolver os seguintes sistemas de equaoes:

SCILAB Vetores e Matrizes

SCILAB - Grficos

SCILAB - Grficos

SCILAB - Grficos


Outras funcionalidades..

Colocar ttulos no grfico

xtitle(< titulo do grfico >", < ttulo do eixo x


>",<ttulo do eixo y");


t=(0:0.25:10);

s=2*t^22*t+1;

plot(t,s)

xtitle(linear motion,time(s),position(ft))

SCILAB - Grficos
Resultado....

SCILAB - Grficos

>> y=sin(x);
>> z=cos(x);
>> plot(x,y,x,z)
Vamos plotar um grfico do seno e do co-seno
simultaneamente. O resultado est no grfico da figura
abaixo.

SCILAB - Grficos


Para plotar grficos em janelas diferentes, utilizamos


o comando:
xset('window',n) onde n o nmero da janela grfica,
ex.:

>> y=sin(x);

>> xset('window',0)

>> plot(x,y)

>> z=cos(x);

>> xset('window',1)

>>plot(x,z)

SCILAB - Grficos

SCILAB - Grficos











>> y=sin(x);
>> plot(x,y);
Vamos plotar um grfico do seno e do coseno
simultaneamente.
>> z=cos(x);
>> plot(x,y,x,z)
Plotaremos agora o mesmo grfico anterior acrescido da
funo soma entre o seno e o coseno do ngulo.
>> u=sin(x)+cos(x);
>> plot(x,y,x,z,x,u)

SCILAB - Grficos
Estilos de Linha, Marcadores e Cores
Quando plotamos vrios grficos, podemos
diferenci-los utilizando cores e marcadores
diferentes.

SCILAB - Grficos

SCILAB - Grficos

SCILAB - Grficos
Podemos colocar em
uma mesma janela
grfica, grficos
separados.
Utilizamos para isso o
comando subplot()
subplot(n_linhas,
n_colunas, sequencia)

SCILAB - Grficos
plot2d([x,x],[sin(x) cos(x)],[1 2],leg=seno@cos)

SCILAB - Grficos

SCILAB - Grficos

SCILAB - Grficos
Exerccios:
1 Elaborar o grfico das funes:
exponencial positiva
exponencial negativa
ln
log10
(em reas separadas da janela grfica,
com ttulos, e legendas)
2 Elaborar o grfico da funo 3d
z = sen(x2+y2)

SCILAB - Programao

SCILAB - Programao

SCILAB - Programao

SCILAB - Programao


Arquivos de scripts


Os programas escritos no SciLab so gravados em


arquivos de scripts.

Utilizase o Scipad para escrever os programas.

Salvar com a extenso sce ou sci.

Para uma melhor organizao:





sce arquivos de programas


sci arquivos de funoes

Para executar ctrl+l

SCILAB - Programao
Ex1.: Elaborar um programa que avalia a mdia
das notas de um aluno e retorna a situao do
mesmo (aprovado ou reprovado)

SCILAB - Programao
Estrutura condicional

SCILAB - Programao
Estrutura condicional

SCILAB - Programao

SCILAB - Programao


Elaborar o programa do exemplo 1.

Para imprimir no console utilizar a funo:

printf(\n <texto>: %f",<varivel>)

O \n serve para pular uma linha no console.

SCILAB Entrada de dados




Para entrada de dados, utilizar a funo input

<variavel> = input(<string>);

Entrada de valores numricos:




>x = input("Digite um nmero")

Digite um nmero>10
x=
10.

SCILAB Entrada de dados




Para entrada de dados, utilizar a funo input

<variavel> = input(<string>,"s");

Entrada de string:


>a = input("Digite alguma coisa","s")

Digite alguma coisa>Ol


a =
Ol

SCILAB - Programao
Ex2.: Elaborar um programa para clculo do
fatorial de um nmero.

SCILAB - Programao
Estruturas repetitivas

SCILAB - Programao
Estruturas repetitivas

SCILAB - Programao


Elaborar o programa do exemplo 2.

SCILAB - Programao


Utilizando as estruturas de repetio e


condicionais....e

SCILAB - Programao
Funes
Funes internas
Sin(), tan(), sqrt(), bode(), entre outras.

Funes definidas pelo usurio


Utiliza a definio de funo
function y = nome_da_funo(argumentos)
< algortmo da funo >
endfunction

So gravadas em arquivos de script (.sce) utilizando um editor


de texto ascii qualquer.

SCILAB - Programao


Funoes


Para serem utilizadas, as funoes devem ser


carregadas na memria.

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 funoes.

SCILAB - Programao


Exerccios:


1 Escreva um programa Scilab para calcular a


distncia entre dois pontos (x1 , y1 ) e (x2 , y2 ) no
plano cartesiano. Os pontos so digitados pelo
usurio.

A distncia entre dois pontos dada por:

SCILAB - Programao


Exerccios:


2 Elabore um programa Scilab para calcular a


resistncia equivalente entre dois resistores R1 e
R2 em paralelo.

3 Dados os tres coeficientes a, b, c de uma


equao do segundo grau ax2 + bx + c = 0,
elaborar um algoritmo para calcular suas razes.

SCILAB Sistemas de controle




Existem diversas funes internas para


utilizao em sistemas de controle.








poly Escreve um polinmio,dados os coeficientes


em ordem crescente ou as razes do mesmo
roots Extra as razes de um polinmio
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 Simulao de um sistema linear, dado o tipo
de entrada U. Resposta no tempo
plot Desenha um grfico

SCILAB Sistemas de controle




Para determinar razes polinmios:


Exemplo: p(s)=7s3 +2s2+5s+1

Comando: (roots)
> p = poly ([1 5 2 7], ' s ',' coef ' );
> roots ( p );
As variveis s e z, so reconhecidas pelo
SCILAB, basta escrever: %s

SCILAB Sistemas de controle




Para utilizar a funo de transferncia




Definir o polinmio do numerador




Definir o polinmio do denominador




Ex.: num = poly([3 2 1],s,coeff)


Ex.: den = poly([2 3 1],s,coeff)

Definir a funo de transferncia




TF = num / den

SCILAB Sistemas de controle




Decomposio em fraes parciais

Decompor em fraes parciais a seguinte funes de


2
transferncia G2(s)=(5s+2)/(s+1)(s+2)

Comando: (pfss)

--> G2 = (5*%s+2) / ((%s+1)(%s+2)2 )


> pfss(tf2ss(G2))

SCILAB Sistemas de controle




Para extrair os plos 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 usurio.

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 funo senoidal","t


[s]","Deslocamento angular [rad]");

SCILAB Sistemas de controle




Grfico da resposta em frequncia.

Utilizado como exemplo a seguinte funo de


2
transferncia 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
contnuo no tempo
> bode(G)

SCILAB Sistemas de controle




Exerccio1:


Elaborar um programa que dada a funo de transferncia


de 1a ou 2a ordem, o mesmo apresente:









O tipo de resposta para o degrau (sub, super, criticamente


amortecido ou oscilatrio)
Encontre a frequncia natural e a taxa de amortecimento.
Calcule o tempo de pico, overshoot, tempo de subida, conforme o
caso.
Decomponha a equao de sada em fraes parciais.
Trace o grfico da resposta para uma entrada degrau
Trace o grfico de Bode.

Exerccio2:


Implementar a funo de transferncia que relaciona a


velocidade e a tenso em um motor cc e obter os grficos
da resposta para o impulso, degrau e senoidal.

Você também pode gostar