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.

-->a-b //subtracao

ans =

- 1.

-->a*b //multiplicacao

ans =

6.

-->a/b /divisao

ans =

0.6666667

-->a^b /exponenciacao

ans =

8.

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

SCILAB - Operaes bsicas

Ordem de avaliao entre os operadores.



SCILAB - Operaes com
nmeros compIexos

-->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 - Operaes com
nmeros compIexos

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 eIementares

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 eIementares

Funo atan(x), atan(x,y)

atan(x):

Calcula o arco tangente para os quadrantes


e V

[- /2, /2 ]

atan(x,y):

Calcula o arco tangente para todos os


quadrantes

[- , ]

SCILAB - Funes eIementares

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 eIementares

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
visuaIizao 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
visuaIizao de nmeros

Notao cientfica

Utiliza-se format('e',<quantidade de caracteres>)

ex.:

-->format('e',8)

-->-%pi

- 3.1D+00

-->format('e',10)

-->-%pi

- 3.142D+00
Para voltar notao decimal,
utiliza-se format('v',<quantidade
de caracteres>)

SCILAB - Formato de
visuaIizao de nmeros

Notao cientfica

Para escrever nmeros em notao cientfica,


utiliza-se 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 utilizando-se 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, prefere-se
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 eIementares

1 - Usando a linha de comando do SCLAB 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 m
2
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 SCLAB:

((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 - Funes eIementares
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/B-fix(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 eIementares

Calcule as seguintes expresses:



SCILAB - Funes eIementares

SCILAB - Funes eIementares

SCILAB - Funes eIementares

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 - PoIinmios

Formas de declarao

Ex.: p = s2 3s +2

forma fatorada: p = (s 1)(s 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 - PoIinmios

Usando a varivel %s
p = %s^2-3*%s+2

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

SCILAB - PoIinmios

-->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 - PoIinmios
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 - PoIinmios
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 - PoIinmios

1 Calcular a soma das razes do seguinte


polinmio.

2s
6
s
3
+ s
2
10

2 Calcular os pontos de mximo ou mnimo


dos polinmios abaixo:

4s
7
+ 3s
4
s
2
+ 33

10s
5
3s
3
s
2
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 decIarao

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) a(linha,coluna)

ans =

3.

-->a(2,3)

ans =

2.

SCILAB - Vetores e Matrizes

SCILAB - Vetores e Matrizes
Para caIcuIar a inversa utiIiza-se o comando inv().
Para caIcuIar o determinante utiIiza-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.A
-1
.X = b.A
-1

.X = b.A
-1

No Scilab, esta operao efetuada utilizando-se:

A \ b (operador diviso a esquerda)



SCILAB - Vetores e Matrizes

Declara-se 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 apIicao matemtica com vetores:


CaIcuIar o vaIor da seguinte srie
para os seguintes vaIores de n:
n = 10
n = 20 UtiIizar a funo sum()
n = 1000

SCILAB - Vetores e Matrizes
Exerccio: eIaborar o cIcuIo do produto
vetoriaI 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 Iuncionalidades..

Colocar ttulos no grfico

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


>","<ttulo do eixo y");

t=(0:0.25:10);

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

plot(t,s)

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

SCILAB - Grficos

Resultado....

SCILAB - Grficos

~~ ysin(x);

~~ zcos(x);

~~ plot(x,y,x,z)

Vamos plotar um graIico do seno e do co-seno


simultaneamente. O resultado esta no graIico da Iigura
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 co-seno


simultaneamente.

>> z=cos(x);

>> plot(x,y,x,z)

Plotaremos agora o mesmo grfico anterior acrescido da


funo soma entre o seno e o co-seno 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
graIica, graIicos
separados.

Utilizamos para isso o


comando subplot()

subplot(nlinhas,
ncolunas, sequencia)

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

SCILAB - Grficos

SCILAB - Grficos

SCILAB - Grficos
Exerccios:
1 - EIaborar o grfico das funes:
exponenciaI positiva
exponenciaI negativa
In
Iog10
(em reas separadas da janeIa grfica,
com ttuIos, e Iegendas)
2 - EIaborar 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.

Utiliza-se 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 media


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 calculo do


Iatorial de um numero.

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 deIinidas pelo usuario

Utiliza a deIinio de Iuno

Iunction y nomedaIuno(argumentos)

algoritmo da Iuno ~

endIunction

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 FLE -> EXECUTE ou

Utilizar o comando getf, ex.:


getf('/home/manoel/Documentos/matlab/work_scilab/funcoes.sci');

mplementar 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 controIe

Existem diversas funes internas para


utilizao em sistemas de controle.

poIy Escreve um polinmio,dados os coeficientes


em ordem crescente ou as razes do mesmo

rootsExtra 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

pIot Desenha um grfico



SCILAB - Sistemas de controIe

Para determinar razes poIinmios:


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

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

SCILAB - Sistemas de controIe

Para utilizar a funo de transferncia

Definir o polinmio do numerador

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

Definir o polinmio do denominador

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

Definir a funo de transferncia

TF = num / den

SCILAB - Sistemas de controIe

Decomposio em fraes parciais

Decompor em Iraes parciais a seguinte Iunes de


transIerncia G
2
(s)(5s2)/(s1)(s2)
2

(pfss)
--~ G2 (5*s2) / ((s1)(s2)
2
)

--> pIss(tI2ss(G2))

SCILAB - Sistemas de controIe

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 controIe

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 controIe

Grfico da resposta em frequncia.

Utilizado como exemplo a seguinte Iuno de


transIerncia G
2
(s)(5s2)/(s1)(s2)
2

(bode)
--~ G2 (5*s2) / ((s1)(s2)
2
)
--~ G syslin('c',G2) //'c' indica um sistema
continuo no tempo
--> bode(G)

SCILAB - Sistemas de controIe

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:

mplementar 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