Você está na página 1de 16

Mauricio Oscar Prez Lisboa 1

Introduo ao Scilab com aplicaes de engenharia eltrica


1) Instalao do programa 1. No Windows: baixar o programa de http://www.scilab.org .A ltima verso a 4.0 1. Rodar o arquivo de instalao scilab-4.0.exe e seguir as instrues de instalao concordando com a licena e as extenses que sero utilizadas pelo programa. 2. No Linux: duas formas 1. Baixar o cdigo fonte e compilar o programa 2. Baixar o binrio http://www.scilab.org/download/stable/scilab-4.0.bin.linux-i686.tar.gz , descompactar o programa (tar -zxvf scilab-xx.tar.gz) no diretrio de instalao. Po exemplo utilizar os seguintes comandos como root: 1. # cd /usr/local 2. # tar xzf <path-do-download>/scilab-4.0.bin.linux-i686.tar.gz 3. # cd scilab-4.0 4. # make 2) Como rodar o programa 1. No Windows: 1. Iniciar >> Programas >> scilab-4.0 2. cone do scilab no Desktop 2. No Linux: 1. $ /usr/local/scilab-4.0/bin/scilab4.0 2. $ scilab, se foi efetuado um link simblico, como normalmente realizado.

Iniciando no Scilab. O Scilab um ambiente utilizado no desenvolvimento de programas para a resoluo de problemas numricos. Criado e mantido por pesquisadores pertencentes ao Institut de Recherche en Informatique et en Automatique, INRIA, atravs do Projeto METALAU (Methods, algorithmes et logiciels pour l'automatique) e a Ecole Nationale des Ponts et Chauss ees, ENPC, o Scilab gratuito (Free software) e distribudo com o cdigo fonte (Open Source software). O Scilab um ambiente de programao numrica bastante flexvel. Suas principais caractersticas so: 1. um software de distribuio gratuita, com cdigo fonte disponvel. Sua linguagem simples e de fcil aprendizado;

Mauricio Oscar Prez Lisboa 2 2. um ambiente poderoso para gerao de grficos; 3. Implementa diversas funes para manipulao de matrizes. As operaes de concatenao, acesso e extrao de elementos, transposio, adio e multiplicao de matrizes so facilmente realizadas; 4. Permite trabalhar com polinmios, funes de transferncia, sistemas lineares e grafos; 5. Apresenta facilidades para a definio de funes. As funes podem ser passadas para outras funes como argumento de entrada ou de sada; 6. Permite interface com rotinas escritas nas linguagens FORTRAN, C ou Maple1; 7. Suporta o desenvolvimento de conjuntos de funes voltadas para aplicaes especficas (os chamados toolboxes). O Scilab possui um ambiente de programao e uma interface grfica. Na verso 4.0 h uma srie de melhorias em relao s verses anteriores (3.0, 2.7 e 2.6). Basicamente possvel operar o scilab de duas formas. A primeira executar os comandos no prompt do programa, ambiente do Scilab. A segunda utilizar um arquivo que possui os comandos a serem executados. Inicialmente tomaremos contato com o programa para isto rode o Scilab. Aparecer a tela de inicializao do Scilab como ilustrado na figura a seguir. A tela de inicializao do scilab apresenta menus e o prompt de comandos.

Fig. 1 Tela de inicializao do Scilab

Mauricio Oscar Prez Lisboa 3

O menu apresenta as seguintes opes: File , Edit, Preferences, Control, Editor, Applications, ?. Descreveremos a seguir algumas funes bsicas. 1) File, temos as seguintes opes: 1. New Scilab: carrega outro programa 2. Exec: Permite executar um arquivo (script) do tipo *.sci 3. Open: Abre um arquivo de simulao e permite sua edio 4. Load e Save: Carrega e salva um programa 5. Change Directory: Muda de diretrio de trabalho 6. Get Currente Directory: Inforam o diretrio de trabalho 7. Print setup: Configura a impressora 8. Print: Imprime 9. Exit: Sai do Scilab 2) O menu Edit: possui funes para edio. 3) O Preferences permite personalizar o ambiente do Scilab. 4) O Control , permite parar, abortar, e interromper a execuo de um script 5) O Editor, carrega o editor de script do Scilab 6) O Applications, Carrega as ferramentas do Scilab: 1. scicos, ambiente de blocos do scilab 2. m2sci, conversor de Matlab para Scilab. 7) O ? menu de helps 1. Scilab help: carrega o help 2. Configure: permite configuraes 3. Scilab Demos: Carrega exemplos Vamos verificar alguns funes que o programa permite realizar. Para isto carregue o Scilab Demos e siga as instrues do programa, so mostradas algumas funes bsicas por exemplo >> a=1 . definido o valor de a como sendo 1. uma constante real. Verifique algumas operaes utilizando a tecla Enter Para Abortar a execuo do help v ate o menu Control >> Interrupt Crtl-C Novamente v at o help ? e carregue o Scilab Help Verifique as diversas funes que o

Mauricio Oscar Prez Lisboa 4 programa possui. Aps esta primeira impresso vamos a conhecer algumas operaes bsicas. Seja a seguinte equao y=2x -3x . Vamos verificar como podemos simular isto para x variando de 0 a 10 e depois realizar um grfico do resultado. --> x=0:10; -->plot(x,y) --> xgrid() \\este comando cria um vetor x de 0 a 10 com passos de 1. \\ realiza o grfico dos valores de x e y \\ inclui grades no grfico; -->y=2 .*x -3 .*x^2; \\ o vetor y criado com os valores da equao.

O resultado est ilustrado na figura a seguir.

Mauricio Oscar Prez Lisboa 5

Funes Bsicas do Scilab


O Scilab possui uma srie de funes bsicas que so chamadas de primitivas. Algumas destas funces so: 1. Funes elementares : sum, prod, sqrt, diag, cos, max, round, sign, fft; 2. Funes para ordenao : sort, gsort, find; 3. Matrizes espec cas : zeros, eye, ones, matriz, empty; 4. Funes de algebra linear : det, inv, qr, svd, bdiag, spec, schur; 5. Polinmios : poly, roots, coeff, horner, clean, freq; 6. Sistemas lineares : syslin; 7. Nmeros aleatrios (randmicos) : rand 8. Funes de programao : function, deff, argn, for, if, end, while, select, warning, erro, break, return; 9. Smbolos de comparao : ==, >=, = &, |, <=, >, <; 10.Execuo de arquivos : exec; 11.Depurao : pause, return, abort; 12.Splines, interpolao : splin, interp, interpln; 13.Manipulao de strings : string, part, evstr, execstr; 14.Grficos : plot, xset, driver, plot2d, xgrid, locate, plot3d; 15.Resoluo de equaes diferenciais : ode, dassl, dassrt, odedc; 16.Otimizao : optim, quapro, linpro, lmitool; 17.Sistemas dinmicos : scicos e 18.Rotinas C ou FORTRAN : link, fort, addinter, intersi. O programa tambm possui vrias funes especiais (variveis). Elas so protegidas e no podem ser apagadas. Algumas destas variveis so prefixadas com o caracter % e podem ser vistas atravs do comando who. A varivel %i representa sqrt(-1), %pi e a varivel que representa = 3.1415926. . . , e %e e a varivel que representa a constante de Euler e = 2.7182818. . . . Uma outra varivel pr-definida e %eps que representa a preciso da mquina na qual o Scilab est instalado (%eps e o maior nmero para o qual 1+%eps = 1). So pr-definidas, ainda, as variveis %inf que significa Infinito". A varivel %s e definida pela funo s = poly(0, 's'). Forma de operar O scilab possui basicamente duas formas de operar. Uma atravs da digitao dos comandos no prompt do programa a outra atravs do arquivo com os comando e utilizando o comando exec

Mauricio Oscar Prez Lisboa 6 para carregar e executar todos os comandos no arquivo. A seguir veremos algumas aplicaes. Para isto siga as instrues a seguir:
-->A = 1 --> A=1; -->b = 2; -->A + b ans = 3. // atribui o valor de 1 constante A e mostra o valor. // Atribuindo a A o valor 1, mas o ; no mostra o resultado // Atribuindo a b o valor 2 // Soma de A e b

No Scilab tambm as grandezas podem ser complexas. Realize a seguinte operao: A=5 + 2i e B=-2 +i. O resultado dever ser:
-->A = 5 + 2 * %i A= 5. + 2.i -->B = -2 + %i // Atribuindo a B o valor -2 + i B= - 2. + i // Atribuindo a A o valor 5 + 2i

A figura a seguir ilustra estes comandos na tela do Scilab.

Efetue algumas operaes matemticas com estas duas variveis e responda a seguir. c= A*B d=A + B ; resp.= ; resp.=

Mauricio Oscar Prez Lisboa 7 e=A/B f=B/A Polinmios Os polinmios so criados no Scilab atravs da utilizao da funo poly. Sendo que polinmios de mesma varivel podem ser somados, subtrados, multiplicados e divididos entre si. Por exemplo, o polinmio p = s -3s +2, que possui raizes em 1 e 2, podem ser criados da seguinte forma
-> p=poly([1 2], s) p= 2 - 3s + s

; rep.= ; resp.=

Podemos obter as raizes com a funo roots, assim.


-->roots(p) ans = ! 1. ! ! 2. !

Um polinmio tambm pode ser criado a partir da especificao de seus coeficientes. Por exemplo, o polinmio q = 2s + 1 e criado atravs do comando.
-->q = poly([1 2], 's', 'coeff') q= 1 + 2s

Obtenha as raizes de q e efetue as seguintes operaes raizes de q resp.= p*q q+q p/q q/p , resp.= , resp.= , resp.= , resp.=

Mauricio Oscar Prez Lisboa 8 Vetores As grandezas vetoriais so criadas colocando-se seus componentes entre colchetes, [ ]. Os componentes de um vetor podem ser separados por espao, vrgula ou por ponto-e-vrgula. Importante observar que elementos entre [ ], separados por espao ou por vrgula, do origem a vetores linha. Quando separados por ponto-e-vrgula do origem a vetores coluna. Por exemplo digite
-->v = [2, -3+%i, 7] v = ! 2. - 3. + i 7. ! -->w= [2 ; -1 +%i ; -5] // Vetor coluna w= 1. 2. +i -5. -->v' ans = ! 2. ! ! - 3. - i ! ! 7. ! // Vetor transposto // Vetor linha

A figura a seguir ilustra os comandos acima executados.

Mauricio Oscar Prez Lisboa 9 Matrizes: As matrizes so construdas utilizando vrias linhas e colunas. Os elementos so separados por espao ou vrgula e as colunas por ponto e vrgula. Por exemplo construa as matrizes a seguir.

1 2 3 Z= 4 5 6 3 7 8

] [
,

1 1 0 Y= 2 3 1 2 3 5

] [ ]
e

1 2 3 X= 2 4 6 3 6 9

--> Z=[1 2 -3; -4 5 6 ; -3 7 8] Z = 1. 2. - 3. - 4. 5. 6. - 3. 7. 8. --> Y=[1,1,0;2,3,1;-2,3,5] Y = 1. 1. 0. 2. 3. 1. - 2. 3. 5. --> X=[1 2 3; 2 4 6; 3 6 9] X = 1. 2. 3. 2. 4. 6. 3. 6. 9.

Utilizaremos algumas funes do Scilab para resoluo sistemas de equaes. Por exemplo dado o seguinte sistema linear:

10 x y=11 5x3y=2
--> A= [ 10 1; 5 -3]; --> a1=[11; 2]; --> y=-linsolve(A,a1) y = 1. 1. --> >z=inv(A) * a1 z = 1. 1.

2 x9y=47 x20y=101
\\ resolve sistema linear utilizando a equao A*x+b=0 .

\\ calcula a matriz inversa e multiplica pelo vertor a1

Mauricio Oscar Prez Lisboa 10

--> B=[2 -9 ; -1 20]; --> b=[-47 ; 101]; -->y1=inv(B)*b y1 = - 1. 5.

Utilizaremos os comandos at agora estudados para resolver os seguintes problemas de circuitos eltricos. O primeiro circuito corresponde ao equivalente de Thevenin de um circuito qualquer e o segundo um circuito onde ser utilizado a anlise de malhas.
R1=4 R4=3

Rth=2,5

2V

+ +
V2 R5=10

R6=1

Vth

+ Vo

10V

R3=3 R2=2

1) Escreva o script que realize a simulao do equivalente de Thevenin considere a resistncia variando de 0,5 a 10 ohm. 1. Calcule a tenso na carga (Vo) 2. Calcule a corrente na carga 3. Calcule a potncia na carga 4. Grafique o resultados para a corrente, tenso e potncia. 2) Resolva o circuito por anlise de malha 1. Monte as equaes das malhas 2. Utilize a resoluo de equaes lineares para encontrar as correntes nas malhas.

V3=10V

RL 0,510

V1=5V

Mauricio Oscar Prez Lisboa 11 Grficos H vrios comando para realizar grficos. Os mais simples so o comando plot e o comando plot2d a seguir veremos algumas aplicaes. Para isto carregue o scilab e digite no prompt do simulador as seguintes instrues:
--> x=[0:0.1:2*%pi]; --> plot(sin(x)) --> clf() --> plot(x,sin(x))

Este comandos permitiram cria um vetor com valores de 0 a 2* com passo de 0.1. Depois foi realizado um grfico (funo plot) onde o eixo x o nmero de pontos e o eixo y o valor do sin(x) . Posteriormente o grfico foi realizado sendo o eixo x os valores da varivel x e o eixo y com os valores de sin(x). Por ltimo a funo clf() limpa a tela. O scilab permite repetir qualquer comando utilizando as teclas de direo. Verifique isto refazendo os comandos acima. A figura a seguir ilustra estes comandos e o resultado deles.

Uma outra foram de realizar grficos utilizar no mesmo grfico (tela) vrios vetores ao mesmo tempo. Mas cuidado o vetor deve ser coluna. Por exemplo tente executar o seguinte comando.
--> clf() --> plot(x,[sin(x) sin(2*x) sin(3*x)])

Mauricio Oscar Prez Lisboa 12 Deve indicar um erro de dimenso. Para ajustar isto realize:
--> a=x' ; --> plot(a,[sin(a) sin(2*a) sin(3*a) cos(a)])

Refaa o circuito do equivalente de Thevenin utilizando os comandos acima descritor para no mesmo grfico incluir ao vrios vetores. Um exemplo dos comandos podem estes a seguir:
--> rl=0:.5:10; -->vth=10; --> rth=2.5; -->vo=vth .*rl ./(rl+rth); --> io=vth ./(rl+rth); --> po=io .*vo; --> plot(rl,vo,rl,io,rl,po)

O resultado ser o mostrado na figura a seguir.

Fig. Resultado da simulao do equivalente de Thevenin, grfico e script. H outros comandos de grficos, veremos somente o plot2d. Ele permite graficar vrias curvas no mesmo grfico da seguinte forma. plot2d(x,y1,1) , plot2d(x,y2,2) e plot2d(x,y3,3) . Isto indica que ser realizado um grfico com a mesma varivel x e com vrios valores de y. No primeiro casso a varivel y1 ser graficada com a cor 1 (preto), a varivel y2 com a cor 2 (verde) e a varivel y3 com a cor 3 (azul).

Mauricio Oscar Prez Lisboa 13 Os comandos a seguir realizaram os grficos para o circuito equivalente de Thevenin.
-->clf() -->plot2d(rl,vo,1) -->plot2d(rl,io,2) -->plot2d(rl,po,3) -->xgrid()

Outros parmetros importantes que podem ser utilizados so: .- xgrid() . esta funo inclui linha de grade (grid) no grfico. .- legend() .Esta funo permite incluir legendas no grfico da seguinte forma: Por exemplo o seguinte comando incluir legenda no grfico --> legend([Tenso vo; Corrente io; Potencia Po]) Maiores informaes no help do Scilab. Outra opo importante dos comandos de grficos fazer vrios grficos com escalas diferentes na mesma tela. Isto implementado com a funo subplot() da forma: subplot(m,n,p) ou subplot(mnp) Onde mnp representam nmeros inteiros, sendo uma matriz de m x n de sub-grficos e p representa uma sub-diviso do grfico atual, sendo m as linhas, n as colunas e p o elemento da matriz. Por exemplo para realizar um dois grficos, podemos utilizar os seguintes comandos:
--> x=[0:0.1:2*%pi]; -->subplot(2,1,1) --> plot(x,sin(x)) --> subplot(2,1,2) --> plot(x,cos(x))

Desta forma temos dois grficos com escalas diferentes. Isto est ilustrado na figura a seguir

Mauricio Oscar Prez Lisboa 14

Podemos realizar vrios grficos alterando o parmetro p somente por exemplo os comando as seguir implementam isto:
--> subplot(2,2,1) --> plot(x,sin(x)); --> subplot(2,2,2) --> plot(x,cos(x)); --> subplot(2,2,3); --> plot(x,sin(2*x)); --> subplot(2,2,4) --> plot(x,cos(2*x));

O resultado est ilustrado na figura a seguir.

No entanto a diviso dos subplot pode ser mais genrica da forma como ilustrado na figura a seguir:
subplot(3,2,1) subplot(3,2,2)

subplot(3,3,4)

subplot(3,3,5)

subplot(3,3,6)

subplot(3,1,3)

Mauricio Oscar Prez Lisboa 15

Para finalizar utilizaremos circuitos de filtros passivos para apresentar os grficos em escalas logartmicas. A figura a seguir ilustra os circuitos dos filtros RC passa baixa e passa alta respectivamente.

As respostas para os filtros passa baixa e passa alta so do tipo:

Vo 1 = para um filtro passa baixa e Vi 1 j R C


Vo = Vi 1 1 j 1 para um filtro passa alta RC

Escreva o script para realizar a simulao dos filtros acima para frequncia de 100Hz a 100kHz com fc=500Hz para o filtro passa baixa e com fc=15 kHz para o filtro passa alta. A funo grfico em escala log no eixo x plot2d("oln",x,y). listado a seguir:
f=100:50:10E3; w=2*%pi .*f; wc=2*%pi*500; // passa baixa subplot(2,1,1) vo_pb=1 ./(1 + %i .*w/wc); plot2d("oln",f,real(vo_pb),1); plot2d("oln",f,abs(vo_pb),2); plot2d("oln",f,imag(vo_pb),3); legend(["Parte real"; "Modulo"; "Fase"]) xgrid()

Um exemplo de script esta

Mauricio Oscar Prez Lisboa 16

// passa alta subplot(2,1,2) vo_pa= 1 ./(1-%i*wc ./w); plot2d("oln",f,real(vo_pa),1); plot2d("oln",f,abs(vo_pa),2); plot2d("oln",f,imag(vo_pa),3); legend(['Parte real'; 'Modulo'; 'Fase']) xgrid()

A figura a seguir ilustra o resultado.

Você também pode gostar