Você está na página 1de 13

Automao

Apresentao

Automao

Apresentao - principais caractersticas


Ambiente poderoso para gerao de grficos bi e tridimensionais, inclusive com animaes; Manipulaes com matrizes so facilitadas por diversas funes implementadas nos toolboxes; Permite trabalhar com polinmios, funes de transferncia, sistemas lineares e grafos; Define funes facilmente; Permite acesso a rotinas escritas em FORTRAN e C; Pode ser acessado por programas de computao simblica, como o MuPad; Permite o desenvolvimento de toolboxes.

Disciplina: Automao

Criado em 1990 no INRIA Institut de Recherche en Informatique et en Automatique e do ENPC - cole Nationale des Ponts et Chausses.

Scilab

Desde 1994 est disponvel na Internet de forma gratuita, software com verses pr-compiladas para vrios sistemas operacionais e cdigo fonte, open source software.

Automao

Automao
Apresentao

Ambiente de programao numrica com duas formas de interao:

Automao
Apresentao

O ponto e vrgula:

Apresentao - principais caractersticas


Esto disponveis outras toolboxes gratuitas desenvolvidas por terceiros, como o ANN (Artificial Neural Network), o FISLAB (Fuzzy Logic Inference) e o FRACLAB (Fractal, Multifractal and Wavelet Analisys). Algumas funes do Scilab esto alocadas em toolboxes bem definidas, dadas as suas especificidades. Temos como exemplo:

diretamente no prompt, como calculadora ou como programao numrica

Um ponto e vrgula no final da linha - o aps o fim da execuo da linha de comando, fica pronto para receber outra linha. O resultado da operao fica mascarado para o usurio

prompt inicial - smbolo --> Permite calcular e compilar programas sem salvar as alteraes

Sem ponto e vrgula no final da linha - a quebra de linha denota o fim da execuo e a exibio do resultado ao usurio

Funes de lgebra Linear:

bibliotecas LINPACK, EISPACK, LAPACK e BLAS;

Scilab case sensitive

Funes para soluo de Equaes Diferenciais: bibliotecas ODEPACK e SLATEC;

Funes de Otimizao: biblioteca MINPACK.

Automao
Variveis

Regras:

Automao
Menus drop down

File: New Scilab, Exec, Open, Load, Save, Change Directory, Get Current Directory, Print Setup, Print e Exit. Edit: Select All, Copy, Paste, Empty Clipboard e History. Preferences: Language, Colors, Toolbar, Files Association, Choose Fonts, Clear History, Clear Command Window e Console. Control: Resume, Abort e Interrupt. Editor Applications: Scicos, Edit Graph, m2sci e Browser Variables. ?: Scilab Help, Configure, Scilab Demos, Web Links e About.

Automao
Valores/variveis pr-definidas

Podem ser acessadas pelo comando whos e who. Exemplos: %F valor booleano false (falso) %T valor booleano true (verdadeiro) %z Polinomial (varivel complexa) %s Polinomial (varivel complexa) %nan Constante (not a numeric) %inf Constante (infinito) COMPILER String %gtk Booleana %gui Booleana %pvm Booleana ans - contm o valor da ltima expresso no-atribuda

Palavra nica At 24 caracteres No pode iniciar com nmero (Nomes invlidos 1A , b%, .C), mas pode iniciar com letra, #, $, ?, _, % Case sensitive

Automao
Valores pr-definidos

Exemplos: %tk $ %t %f %eps %io %i %e %pi Booleana Polinomial Booleana Booleana Constante Constante valor constante (imaginrio 1 ) valor constante (no de Euler = 2,7182818...) valor constante ( = 3,1415926...)

Automao
Variveis para localizao de diretrios

No prompt de comandos

Automao
Armazenagem de variveis e comandos

save: armazena em arquivo variveis criadas durante os trabalhos no ambiente. Sintaxe: save(nome_do_arquivo.dat,variveis) load: carrega os valores das variveis do arquivo load(nome_do_arquivo,variveis) clear: limpa/apaga as variveis no protegidas do ambiente diary: cria uma memria de clculo, salvando os comandos digitados em um arquivo texto diary(nome_do_arquivo); diary(0) // Fecha o comando

SCI: diretrio onde o Scilab est instalado pwd: diretrio atual que est sendo usado pelo Scilab cd ou chdir: muda o diretrio de trabalho what() lista de primitivas do scilab whos: exibe os nomes de variveis correntes, seus tipos e memria utilizada who: mostra as variveis locais e globais who(local) who(global)

Automao
Armazenagem de variveis e comandos

Exemplo: -->a=2, b=3 -->save('dados.dat',a,b) -->clear -->a,b !--error 4 undefined variable : a -->load('dados.dat') -->a,b a= 2. b= 3.

Automao
Armazenagem de variveis e comandos

Exemplo: -->diary('meu_arquivo.txt') -->a=3;b=5; -->a+b ans = 8. -->diary(0)

Automao
Armazenagem de variveis e comandos

clear remove as variveis nomeadas do ambiente.

clear cancela todas as variveis, exceto as protegidas por predef. clear a cancela a varivel a

Normalmente, variveis protegidas so bibliotecas padres e variveis com o prefixo %. Note a sintaxe, clear a e no clear(a). Note tambm que a=[] no cancela a, mas define a como uma matriz vazia.

Automao
Comandos

O normal escrever uma instruo por linha Pode-se tambm:

Automao
Ambiente

o espao de trabalho no prompt de comando, podendose usar mais de um espao de trabalho para realizar operaes paralelas durante a execuo de um programa principal. Para adicionar um ambiente digite

Automao
Ambiente

Variveis declaradas no ambiente N so vlidas para os ambientes abaixo dele (N+1,N+2,N+3 etc.) Variveis declaradas no ambiente N so invlidas nos ambientes acima dele (N1, N2, N3 etc.)

colocar vrias instrues em uma mesma linha, desde que separadas por vrgula ou pelo ponto e vrgula, e distribuir um comando em vrias linhas, usando as reticncias (...) no final de cada linha (com exceo da ltima)

pause no workspace ou o atalho ctrlc Uma nova seta de prompt, acompanhada do cardinal correspondente hierarquia do ambiente surgir

abort interrompe a avaliao corrente e retorna ao prompt de comando clc limpa a tela, entradas e sadas, mas permite usar as setas para recuperar comandos exercutados. clc(nblines)

O retorno ao ambiente principal dado pelo comando abort e ao ambiente anterior, pelos comandos return ou resume

Automao
Operaes matemticas bsicas

Em geral, as variveis matemticas usadas no Scilab so vetores complexos. O nmero imaginrio denotado por %i e, seguindo a notao padro de um nmero complexo z = a+bi

Automao
Operaes matemticas 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.

Automao
Operaes matemticas potenciao
"(A:square)^(b:scalar) Se A uma matriz quadrada e b um
escalar, ento A^b a matriz A elevada potncia b.

"(A:matrix).^(b:scalar)"Se b um escalar e A uma matriz, ento


A.^b formada pelos elementos de A elevados potncia b (potenciao elemento a elemento). Se A um vetor e b um escalar, ento A^b e A.^b realizam a mesma operao (i.e., potenciao elemento a elemento).

Operadores de:

Soma + Subtrao Multiplicao * Diviso direita / Diviso esquerda \ Potenciao ^ ou **

"(A:scalar).^(b:matrix)" Se A um escalar e b uma matriz (ou


vetor) ento A^b e A.^b so as matrizes (ou vetores) formados por a^(b(i,j)).

Automao
Operaes matemticas potenciao "(A:matrix).^(b:matrix)" Se A e b so vetores (matrizes) de mesmo
tamanho A.^b o vetor A(i)^b(i) (matriz A(i,j)^b(i,j)).

Automao
Operaes matemticas com nos complexos
--> a=3+2*%i; b=96*%i; //declarando as variveis --> a+b //soma de complexos ans = 12. - 4.i --> a-b //subtrao de complexos ans = 6.+ 8.i --> a*b //multiplicao de complexos ans = 39. --> a/b //diviso de complexos ans = 0.1282051 + 0.3076923i --> sqrt(16) //raiz quadrada de nmero negativo ans = 4.i

Automao
Operaes matemticas com nos complexos
--> z=4+3*%i; //declarando a variavel complexa --> abs(z) //usando a funcao abs para calcular o modulo ans = 5. --> angulo_rad=atan(3,4) //funcao arcotangente retorna angulo_rad = //angulo em radianos 0.6435011 --> angulo_gr=angulo_rad*180/%pi //convertendo rad/graus angulo_gr = 36.869898

Para matrizes quadradas A^p computada por meio de sucessivas


multiplicaes de matrizes se p um nmero inteiro positivo e por diagonalizao se no for.

Exemplos:

A=[1 2;3 4]; A^3 A.^3 (1:10)^3 (1:10).^3 s=poly(0,'s') s^(1:10)

// matriz ao cubo = A*A*A // cada valor elevado ao cubo // cada valor elevado ao cubo // cada valor elevado ao cubo // polinmio de ordem 10

Automao
elementos bsicos - parnteses

Exemplos: 3^(-1) x=poly(0,"x"); // (x+10)/2 i3=eye(3,3) // a=[1 2 3;4 5 6;7 8 9],a(1,3),a([1 3],:),a(:,3) a(:,3)=[] a(1,$)=33 a(2,[$ $-1]) a(:,$+1)=[10;11;12]

Automao
elementos bsicos - colchetes

([,]) colchetes (brackets) esquerdo e direito. Notao j:k vetor [j, j+1,...,k] (vazio se j>k) j:d:k vetor [j, j+d, ..., j+m*d] Exemplos: A(:) vetor de todos os elementos de A considerados como uma nica coluna A(:,j) j-sima coluna de A A(j:k) corresponde a [A(j),A(j+1),...,A(k)] A(:,j:k) corresponde a [A(:,j),A(:,j+1),...,A(:,k)] A(:) = w preenche a matriz A com entradas de w (tomados coluna a coluna se w uma matriz)

Automao
elementos bsicos - vrgula

(,) vrgula (comma) separador de colunas, instrues e argumentos. Vrgulas so usadas para separar parmetros em funes, ou para separar entradas em vetores linhas. Espaos vazios podem ser usados para separar entradas em um vetor linha, mas prefervel que se use vrgulas. Tambm usada para separar instrues do Scilab. (Use ; para que o resultado no seja exibido na tela). Exemplos: a=[1,2,3;4,5,6]; a=1,b=1;c=2

Automao
operadores bsicos - dois pontos

(:) operador dois pontos (colon) [a11,a12,...;a21,a22,...;...] [s1,s2,...]=func(...) Onde: a11,a12,... qualquer matriz (de reais, polinmios, razes de polinmios, lista syslin...) com dimenses apropriadas s1,s2,... qualquer nome de varivel possvel

Automao

Automao
elementos bsicos - ponto

Exemplos: //ponto decimal 1.345 //usado como parte de um operador x=[1 2 3];x.^2 .*x // um espao requerido entre 2 e o ponto // usado como marcas de continuao T=[123,.. //primeiro elemento 456] //segundo elemento a= comeo um string aqui... //mas no quero continuar aqui - e aqui eu continuo. y=12.. 45

operadores bsicos - ponto


(.) ponto (comma) a. marca pontos (vrgulas) decimais em nmeros: 3.25 e 0.001 b. .<op> com os operadores (*, /, \, ^, '), forma outros. Operaes elemento a elemento so obtidas usando-se .* , .^ , ./ , .\ ou .' . Exemplo: C= A./B a matriz com elementos c(i,j) = a(i,j)/b(i,j). O produto de Kronecker notado por .*. . Se o ponto segue um nmero, sempre parte deste 2.*x avaliado como 2.0*x e 2 .*x (h um espao entre 2 e .) avaliado como (2).*x c. .. continuao. Dois ou mais pontos ao fim de linha (ou seguidos por comentrio) indicam que a prxima linha continuao

Usados para concatenar vetores e matrizes. Para denotar lado esquerdo mltiplo para a chamada de uma funo. Espaos vazios ou vrgulas significam "concatenao de colunas e pontos-e-vrgulas ou retornos de carro "concatenao de linhas".

Automao
elementos bsicos - parnteses

( ) parnteses (parents)

Automao
Controle de fluxo

Os comandos de laos e condies:

Automao
Controle de fluxo - for

O lao for para determinado ndice variando de um valor inicial at um valor final com determinado incremento, execute os comando sob o lao

Especificar ordem de avaliao dentro de expresses, Formar listas de argumentos do lado direito de uma funo. Dentro de lados direitos mltiplos, os argumentos devem ser separados por vrgula.

for while if Select

Selecionar elementos dentro de vetores, matrizes e listas. break palavra-chave para interromper um lao ("loop")

N=100; M=[]; for i=1:2:(N-1) M=[M (i+1)]; end disp (M)

Automao
Controle de fluxo - while

Os comandos so executados enquanto uma condio for satisfeita clc clear close s=5; N=0; while s > 1e-5 s=s/10; N=N+1; end

Automao
Operadores lgicos

Operadores:

Automao
Operadores relacionais

Operadores relacionais: == (igual a) < (menor que) > (maior que) <= (menor ou igual) >= (maior ou igual) <> ou ~= (diferente) a==b a<b a>b a<=b a>=b a~=b ou a<>b

e (&) ou (| - barra vertical) no ~

Automao
Operadores relacionais

Comparaes de igualdade e desigualdade: a==b, a~=b (ou de modo equivalente a<>b). Estes operadores se aplicam a quaisquer tipos de operandos.

Automao
Operadores relacionais

Se a e b so avaliados como arrays do mesmo tipo e dimenses idnticas, a comparao realizada elemento a elemento e o resultado um array de booleanos da comparao. Se a e b so avaliados como arrays do mesmo tipo, mas a ou b um array 1 por 1, o elemento comparado com cada elemento do outro array. O resultado um array de booleanos com o tamanho do operando no-escalar. Em outros casos, o resultado o booleano %f Se os tipos de dados dos operandos so diferentes, mas "compatveis", como pontos flutuantes e inteiros, uma converso de tipo realizada antes da comparao.

Automao
Operadores relacionais

Exemplos: //comparaes elemento a elemento (1:5)==3 (1:5)<=4 (1:5)<=[1 4 2 3 0] 1<[] list(1,2,3)~=list(1,3,3) //comparaes objeto a objeto (1:10)==[4,3] 'foo'==3 1==[] list(1,2,3)==1 isequal(list(1,2,3),1) isequal(1:10,1)

Comparaes de ordem: a<b, a<=b, a>b,a>=b. Estes operadores se aplicam apenas a arrays de pontos flutuantes reais e inteiros.

Automao
Operadores relacionais

Exemplos: //comparao com converso de tipo int32(1)==1 int32(1)<1.5 int32(1:5)<int8(3) p=poly(0,'s','c') p==0 p/poly(1,'s','c')==0

Automao
Operadores - prioridades

Automao
Controle de fluxo - if
O lao if caso a condio seja verdadeira, execute os comandos. Considere o exemplo, para separar os nmeros pares dos mpares N = 100; P = []; I = []; de 1 a 100 for i = 1:N if modulo(i,2)==0 P = [P i]; end if modulo(i,2)==1 I = [I i]; end end disp(P)

Automao
Controle de fluxo - if

O lao if com elseif e else if condicao_1 then sequencia_1 else sequencia_2 end N=100; P=[]; I=[]; for i=1:N if modulo(i,2)==0 P=[P i]; else I=[I i]; end end

Automao
Controle de fluxo - if

O lao if com elseif e else. Exemplo: separar os mltiplos de 7 alm dos nmeros pares e os mpares N=100; S=[]; P=[]; I=[]; for i=1:N if modulo(i,7)==0 S=[S i]; elseif modulo(i,2)==0 P=[P i]; else I=[I i]; end end

Automao
Controle de fluxo - select

Sintaxe: select expresso0, case expresso1 then instrues1, case expresso2 then instrues2, ... case expresson then instruesn, [else instrues], end

if condicao_1 then sequencia_1 elseif condicao_2 sequencia_2 else sequencia_3 end

Automao
Controle de fluxo - select

Exemplo: while %t do n=round(10*rand(1,1)) select n case 0 then disp(0) case 1 then disp(1) else break end end

Automao
Polinmios

poly funo para definir polinmios. Se p=poly(a, x, ["flag"]) com o a matriz ou nmero real o x string at 4 caracteres, o nome da varivel simblica

Automao
Polinmios

Polinmios sob a mesma varivel podem ser somados, subtrados, multiplicados e divididos entre si e por nmeros complexos. O scilab disponibiliza duas variveis polinomiais especiais que NO podem ser modificadas:

Especificao de um polinmio por: 1. suas razes: P=poly([a b],'s') P=poly([a b], 's', 'r') P=poly([a b], 's', 'roots') 2. seus coeficientes: P=poly([c d], 's', 'c') P=poly([c d], 's', 'coeff') 3. s=poly(0,"s") a fonte para definir polinmios com smbolo "s"

%s varivel complexa de polinmios (Transformada de Laplace) %z varivel complexa de polinmios (Transformada z)

Automao
Polinmios

Dado o polinmio p = s 3s +2 = (s 1)(s 2) --> p = poly([ 1 2 ], 's') // declarando pelas razes --> p = poly([ 2 -3 1 ], 's' , 'coeff ' ) // declarando pelos coeficientes --> p = %s^2-3*%s+2 // declarando usando a varivel s Declarando um polinmio x --> x = poly(0, 'x'); p = x^2-3*x+2 s=poly(0,"s"); p=1+s+2*s^2; A=rand(2,2); poly(A,"x") //fraes racionais h=(1+2*%s)/poly(1:4,'s','c')

Automao
Polinmios

A funo roots(P) calcula as razes da funo polinmio P. A funo horner(P, N) calcula o valor numrico da funo polinmio P Se a diviso de polinmios no for exata, obtem-se o resto e o quociente com o comando pdiv: [r q]=pdiv(P, Q); --> s=poly(0,'s'); M=[s,1/s]; --> horner(M,1) --> horner(M,%i) --> horner(M,1/s)

Automao
Polinmios

A funo coeff(P, n) retorna o coeficiente do polinmio P associado ao termo de grau n. O comando clean zera na matriz todos os elementos que so menores que a tolerncia definida pelo usurio. A sintaxe: Q=clean(P,ta,tr)

Os parmetros ta e tr so, respectivamente, as tolerncias absoluta e relativa, abaixo das quais os termos sero zerados

os coeficientes devem ser digitados do menor grau para o maior

Automao
Polinmios

Exemplo: Criando um polinmio a partir das suas razes

Automao
Polinmios
--> 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. --> P=poly(1:3,'x') --> horner(P,[1 2 5]) --> horner(P,[1 2 5]+%i)

Automao
Polinmios
--> p = poly([2 -3 1],'s','coeff'); // p = s 3s + 2 --> q = poly([1 0 2],'s','coeff'); // q= 2s + 1 --> p/q // no divide, apenas gera frao racional ans = 2 2 3s + s --------------2 1 + 2s -->[r,q] = pdiv(p,q) // divide calculando o r=resto q=quociente q= 0.5 r= 1.5 3s

q1 = poly ([1 2], z)

Exemplo: Criando um polinmio a partir de seus coeficientes q2 = poly ([2 -3 1], z, c)

Exemplo: calculando as razes de um polinmio roots (q2)

Operaes com os polinmios q3 = q1 + q2 q4 = q1 q2

q5 = q1 * q2 q6 = q1 / q2 pdiv(p, q)

Automao
Polinmios

Calcular o valor de um polinmio em um ponto especfico Pv = freq(num, den, v)

Automao
Polinmios

C // The "coeff" function returns a vector containing the // coefficients of a given polynomial.

Automao
Polinmios

compute the derivative of the polynomial with the "derivat" function, which returns the derivative of the given polynomial or rational polynomial.

Onde pv a resposta, num, o polinmio numerador, den o polinmio denominador e v a faixa de valores nos quais deseja-se a avaliao do polinmio

p10=derivat(p1) coeff1=coeff(p1) p10 = 2 11 - 12x + 3x

Automao
Polinmios

Compute numerically the roots of one given polynomial with the "roots" function, which returns the vectors of roots. >> >>theroots=roots(p1)

Automao
Polinmios

The companion matrix is so that its characteristic polynomial is p. >> >>comp1=companion(p1) comp1 = 6. - 11. 1. 0. 0. 1. 6. 0. 0.

Automao
Polinmios

can check that the eigenvalues of the companion matrix of p1 are the roots of p1. >> >>roots1=spec(comp1) roots1 = 3. 2. 1.

Automao
Polinmios

One can factor a given polynomial with the "factor" function. Here the p1 polynomial can be written p1=g*(x-1)*(x-2)*(x-3) >> >>// with "g" the gain. >> >>[lnum,g]=factors(p1)

Automao
Polinmios

Rational polynomials can be defined as well. >> >>p9=(1+2*x+3*x^2)/(4+5*x+6*x^2) p9 = 2 1 + 2x + 3x ----------------2 4 + 5x + 6x

Automao
Polinmios

The derivative can be computed with "derivat", as as regular polynomial. >>p11=derivat(p9) p11 = 2 3 + 12x + 3x -------------------------2 3 4

16 + 40x + 73x + 60x + 36x

Automao
Polinmios

Notice that polynomials and rational polynomials do not have the same type. >>typeof(p1) ans =

Automao
Polinmios

The numerator and denominator polynomials of the rational polynomial can be extracted with the "numer" and "denom" functions. numer(p9) ans = 2 1 + 2x + 3x denom(p9) ans = 2 4 + 5x + 6x

Automao
Polinmios

Rational polynomials can be simplified with the "simp" function, which returns the numerator and denominator of the given couple of polynomials.

>>[n,d]=simp((x+1)*(x+2),(x+1)*(x-2)) d = -2+x n = 2+x

polynomial

>>typeof(p9) ans = rational

Automao
Vetores

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.

Automao
Vetores
--> A=[4;5;6] // vetor coluna A= 4. 5. 6. --> A=[4,5,6]; B=[4 5 6]; //vetor linha --> A,B A= 4. 5. 6. B= 4. 5. 6.

Automao
Vetores

A funo length(x) retorna a dimenso de um vetor.

Transposio --> A=[1 2 3] //vetor linha A= 1. 2. 3. --> A' // transposta conjugada, vetor coluna ans = 1. 2. 3.

Automao
Vetores

ones(NumLinhas, NumCol) Gera vetor com todos os elementos iguais a 1. --> A= ones (4,1)

Automao
Matrizes

Declarao (3 Formas apresentadas) --> M=[1 2 3; 4 5 6; 7 8 9] --> M=[1, 2, 3; 4, 5, 6; 7, 8, 9] --> M=[ 1 2 3 <enter> --> 4 5 6 <enter> --> 7 8 9] --> D=[1 2;3 4]; E=[5 6;7 8]; --> F=[D E] // composio a partir de outras matrizes --> G=[D;E] // composio a partir de outras matrizes

Automao
Matrizes

Declarao --> a=[1 2 3;4 5 6] //definindo matriz 2x3 a= 1. 2. 3. 4. 5. 6. --> b=matrix(a,1,6) //modificando matriz a para 1x6 b= 1. 4. 2. 5. 3. 6. --> c=matrix(a,3,2) //modificando matriz a para 3x2 c= 1. 5. 4. 3. 2. 6.

zeros(NumLinhas, NumCol) Gera vetor com todos os elementos iguais a 0. --> B= zeros (4,1)

Automao
Matrizes

A funo size() retorna o nmero de linhas e colunas da matriz ( ' ) aspas (quote) usado para a transposta conjugada de uma matriz ( .' ) usado para a transposta no-conjugada de uma matriz Funes para gerao de matrizes: ones (m,n) matriz com todos os elementos iguais a 1 zeros(m,n) matriz nula eye(m,n) matriz identidade Onde:

Automao
Equaes diferenciais

funo dae() resolve equaes diferenciais algbricas A funo dae uma porta construda sobre as funes dassl e dasrt designada para equaes diferenciais implcitas Sintaxe y=dae(initial,t0,t,res) [y [,hd]]=dae(initial,t0,t [,rtol, [atol]],res [,jac] [,hd]) [y,rd]=dae("root",initial,t0,t,res,ng,surface) [y ,rd [,hd]]=dae("root",initial,t0,t [,rtol, [atol]],res [,jac], ng, .. surface [,hd])

Automao
Equaes diferenciais
initial vetor coluna. Pode ser igual a x0 or [x0;xdot0], onde x0 o valor de estado no tempo inicial t0 e ydot0 o valor da derivada do estado inicial ou uma estimativa dela (ver abaixo). t0 nmero real, o tempo inicial t escalar real ou vetor. Fornece instantes para os quais voc deseja uma soluo. Voc pode obter solues para cada ponto de passo de dae fazendo %DAEOPTIONS(2)=1.

Automao
Equaes diferenciais
rtol escalar real ou vetor coluna com o mesmo tamanho que x0. A tolerncia do erro relativo da soluo. Se rtol for um vetor, as tolerncias so especificadas para cada componente do estado. atol escalar real ou vetor coluna com o mesmo tamanho que x0. A tolerncia do erro absoluto da soluo. Se atol for um vetor, as tolerncias so especificadas para cada componente do estado.

Automao
Equaes diferenciais

res uma funo externa (external). Computa o valor de g(t,y,ydot). Pode ser:

Automao
Equaes diferenciais

res uma funo externa (external). Computa o valor de g(t,y,ydot). Pode ser:

Uma funo do Scilab sua seqncia de chamamento pode ser [r,ires]=res(t,x,xdot) e res deve retornar o resduo r=g(t,x,xdot) e o indicador de erro ires. ires = 0 se res obtiver sucesso ao computar r, = 1 se o resduo indefinido localmente para (t,x,xdot), = 2 se os parmetros esto fora do intervalo admissvel.

Uma lista Esta forma utilizada para passar parmetros funo. Deve ser como segue: list(res,p1,p2,...) Onde a seqncia de chamamento da funo res agora r=res(t,y,ydot,p1,p2,...) res ainda retorna o valor residual como uma funo de (t,x,xdot,x1,x2,...), e p1,p2,... so parmetros da funo.

Automao
Equaes diferenciais

res uma funo externa (external). Computa o valor de g(t,y,ydot). Pode ser:

Automao
Equaes diferenciais

res uma funo externa (external). Computa o valor de g(t,y,ydot). Um string Deve se referir ao nome subrotina C ou Fortran. A seqncia de chamamento em C deve ser C2F(<r_name>)(double *t, double *x, double *xdot, double *res, integer *ires, double *rpar, integer *ipar) onde t o valor de tempo corrente x o array de estados xdot o array das derivadas dos estados res o array de resduos ires o indicador de execuo rpar o array de valores de parmetros em ponto flutuante, necessrio, mas no pode ser definido pela funo dae

Automao
Equaes diferenciais

res uma funo externa (external). Computa o valor de g(t,y,ydot). Um string Deve se referir ao nome subrotina C ou Fortran. A seqncia de chamamento em C deve ser C2F(<r_name>)(double *t, double *x, double *xdot, double *res, integer *ires, double *rpar, integer *ipar) onde ipar o array de valores de parmetros inteiros, necessrio, mas no pode ser definido pela funo dae

Um string Deve se referir ao nome subrotina C ou Fortran. Supondo que <r_name> i o nome dado. A seqncia de chamamento em Fortran deve ser <r_name>(t,x,xdot,res,ires,rpar,ipar) double precision t,x(*),xdot(*),res(*),rpar(*) integer ires,ipar(*)

Automao
Sistema linear

syslin [sl]=syslin(dom,A,B,C [,D [,x0] ]) [sl]=syslin(dom,N,D) [sl]=syslin(dom,H) dom string ('c', 'd'), ou [] ou um escalar. A,B,C,D matrizes em representao de espao de estados (D opcional com valor padro matriz nula). para sistemas imprprios, D uma matriz de polinmios. x0 vetor (estado inicial; valor padro 0) N, D matrizes de polinmios H matriz de razes de polinmios ou representao de espao de estados linear sl tlist (lista "syslin") representando o sistema linear

Automao
Sistema linear

syslin define um sistema linear como uma lista e verifica a consistncia dos dados onde:

Automao
Sistema linear

Representao por FT sl=syslin(dom,N,D) sl=syslin(dom,H) A sada de syslin uma lista da seguinte forma: sl=tlist(['r','num','den','dt'],N,D,dom) ou sl=tlist(['r','num','den','dt'],H(2),H(3),dom).

dom especifica o domnio de tempo do sistema, podendo ser:

dom='c' para um sistema de tempo contnuo, dom='d' para um sistema de tempo discreto, n para um sistema amostrado com perodo de amostragem n (em segundos). dom=[] se o domnio de tempo indefinido.

Automao
Sistema linear

Exemplo s=poly(0,'s'); D=s; H1=(1+2*s)/s^2, S1bis=syslin('c',H1) H2=(1+2*s+s^3)/s^2, S2bis=syslin('c',H2)

Automao
Lugar das razes

evans(H [,kmax]) lugar geomtrico das razes Evans onde:

Automao
Lugar das razes

evans(H [,kmax]) exemplos: --> H=syslin('c',352*poly(-5,'s')/poly([0,0,2000,200,25,1],'s','c')); --> evans(H,100) --> P=3.0548543 - 8.8491842*%i; //P=ponto selecionado --> K = 1/real(horner(H,P)); --> Ns=H('num'); Ds=H('den');

H lista (sistema linear syslin) kmax real (ganho mximo desejado para o esboo)

Para obter o ganho em dado ponto do lugar geomtrico, execute a seguinte instruo e clique no ponto desejado sobre lugar geomtrico das razes --> k=-1/real(horner(h,[1,%i]*locate(1))

--> roots(Ds+K*Ns) //contm P como raiz particular

Automao
Lugar das razes

evans(H [,kmax]) exemplos: --> clf(); --> s=poly(0,'s'); n=1+s; d=real(poly([-1 -2 -%i %i],'s')); --> evans(n,d,100); // --> clf(); n=real(poly([0.1-%i 0.1+%i,-10],'s')); evans(n,d,80);

Automao
Definio de sistema

>>// SYSTEM DEFINITION

Automao
Definio de sistema

>>w=tf2ss(h); a == b ss2tf(w) ans = 1 ------------------ 2.500D-15 + s 1 - 8.974D-16s -------------------1.106D-14 + s + s 2 1 ----1+s 1 - 4.895D-16s -----------------2 4 + 4s + s

>>s=poly(0,'s'); >>h=[1/s,1/(s+1);1/s/(s+1),1/(s+2)/(s+2)] h = 1 s 1 ----2 s+s 1 ----1+s 1 --------2 4 + 4s + s

>> >>w=tf2ss(h);

10

Automao
Resposta temporal 2 ordem

EXAMPLE: SECOND ORDER SYSTEM ANALYSIS sl=syslin('c',1/(s*s+0.2*s+1)) sl = 1 ----------2 1 + 0.2s + s >>instants=0:0.05:20; // step response: >>y=csim('step',instants,sl); >>my_handle = scf(100001);clf(my_handle,"reset"); >>plot2d(instants,y)

Automao
Resposta temporal com atraso

deff('[in]=u(t)','if t<3 then in=0;else in=1;end'); y1=csim(u,instants,sl);plot2d(instants,y1);

Automao
Resposta temporal com atraso

>>// Impulse response;

>> >>yi=csim('imp',instants,sl);clf();plot2d(instants,yi); >>yi1=csim('step',instants,s*sl);plot2d(instants,yi1);

Automao
Resposta temporal com atraso

Discretization >>dt=0.05; >>sld=dscr(tf2ss(sl),0.05); >>// Step response

Automao
Resposta temporal com atraso

// >> >>u=0*ones(instants);u(1)=1/dt; >>yy=flts(u,sld); >>my_handle = scf(100001);clf(my_handle,"reset"); >>plot(instants,yy); >>clear u; Impulse response

Automao
Resposta temporal com atraso

// system interconnexion >>w1=[w,w]; >>clean(ss2tf(w1)) ans = 1 s 1 ----2 s+s

>>u=ones(instants); >>yyy=flts(u,sld); >>my_handle = scf(100001);clf(my_handle,"reset"); >>plot(instants,yyy); >>clear u;

1 ----1+s

1 s

1 ----1+s

1 1 1 ------------- --------2 2 2 4 + 4s + s s + s 4 + 4s + s

Automao
Resposta temporal com atraso

// system interconnexion (continuao)

Automao
Grficos bidimensionais

So constitudos de dois eixos, sendo necessrio dois argumentos (vetores com a mesma dimenso) de entrada para a execuo. As funes responsveis pela plotagem 2D so plot, plot2d, fplot2d e contour2d.

Automao
Grficos bidimensionais

O comando plot2d plota uma curva bidimensional. Aceita quatro especificaes (para um eixo x definido de 0 a 5): plot2d1: plotagem padro (linear) clc clear close x=0:.01:5; y=sin(x.^2); plot2d1(x,y)

w2=[w;w]; clean(ss2tf(w2)) ans =


1 s 1 ----2 s+s 1 s 1 ----2 s+s 1 ----1+s 1 --------2 4 + 4s + s 1 ----1+s 1 --------2 4 + 4s + s

Um eixo funo do outro, todas as operaes devem ser realizadas elemento a elemento.

11

Automao
Grficos bidimensionais

O comando plot2d plota uma curva bidimensional. Aceita quatro especificaes (para um eixo x definido de 0 a 5): plot2d2: plotagem discreta (histograma ou degraus) clc clear close x=0:.1:5; y=sin(x.^2); plot2d2(x,y)

Automao
Grficos bidimensionais

O comando plot2d plota uma curva bidimensional. Aceita quatro especificaes (para um eixo x definido de 0 a 5): plot2d3: plotagem em barras verticais clc clear close x=0:.05:5; y=sin(x.^2); plot2d3(x,y)

Automao
Grficos bidimensionais

O comando plot2d plota uma curva bidimensional. Aceita quatro especificaes (para um eixo x definido de 0 a 5): plot2d4: plotagem em setas clc clear close x=0:.05:5; y=sin(x.^2); plot2d4(x,y)

Automao
Grficos bidimensionais

fplot2d plota uma funo definida por function ou deff. clc clear close deff("x=s(t)",["x=2*sin(.3*t)"]); t=0:.1:16*%pi; fplot2d(t,s)

Automao
Grficos bidimensionais

polarplot plota as variveis em coordenadas polares clc clear close t= 0:.01:2*%pi; polarplot(sin(2*t),cos(5*t));

Automao
Grficos bidimensionais

Comando plot mais geral, permitindo definir vrias propriedades POSIO DOS EIXOS x=0:0.1:4*%pi; plot(x,sin(2*x)) a=gca(); // definio da janela de plotagem a.y_location ="right";// left, middle a.x_location ="top"; // bottom, origin a.isoview='on'; //posio centralizada na janela

Automao
Grficos bidimensionais

Comando plot POSIO x=0:0.1:4*%pi; DOS EIXOS plot(x,sin(2*x)) : :

Automao
Grficos bidimensionais

Comando plot POSIO DOS EIXOS x=0:0.1:4*%pi; plot(x,sin(2*x)) a=gca(); // definio da janela de plotagem a.y_location ="right; : :

Automao
Grficos bidimensionais

Comando plot POSIO DOS EIXOS x=0:0.1:4*%pi; plot(x,sin(2*x)) a=gca(); // definio da janela de plotagem a.y_location ="right";// left, middle a.x_location ="top"; // bottom, origin

12

Automao
Grficos bidimensionais

Comando plot mais geral, permitindo definir vrias propriedades x=0:0.1:4*%pi; POSIO plot(x,sin(2*x)) DOS EIXOS a=gca(); // definio da janela de plotagem a.y_location ="right";// left, middle a.x_location ="top"; // bottom, origin a.isoview='on'; //posio centralizada na janela

Automao
Grficos bidimensionais

Comando plot . PROPRIEDADES DE TRAO MARCADOR -: -. r g b c m y k w + SIGNIFICADO Solid line (default) Dashed line Dotted line Dash-dotted line Red Green Blue Cyan Magenta Yellow Black White Plus sign

Automao
Grficos bidimensionais

Comando plot. PROPRIEDADES DE TRAO MARCADOR o * . x 'square' or 's' 'diamond' or 'd' ^ v > < 'pentagram' 'none' SIGNIFICADO Circle Asterisk Point Cross Square Diamond Upward-pointing triangle Downward-pointing triangle Right-pointing triangle Left-pointing triangle Five-pointed star (pentagram) No marker (default)

Automao
Grficos bidimensionais

Comando plot. PROPRIEDADES DE TRAO. Exemplo x=0:0.1:2*%pi; plot(x,sin(2*x),'rpentagram') a=gca(); // definio da janela de plotagem a.y_location ="middle"; // left, middle a.x_location ="middle"; // bottom, origin

Automao
Grficos bidimensionais

Comando plot. PROPRIEDADES DE TRAO. Exemplo x=0:0.1:2*%pi; plot(x,sin(2*x),'rpentagram)

Automao
Grficos bidimensionais

Comando plot. PROPRIEDADES DE TRAO. Exemplo x=0:0.1:2*%pi; plot(x,sin(2*x),'rpentagram') a=gca(); // definio da janela de plotagem a.y_location ="middle"; // left, middle a.x_location ="middle"; // bottom, origin

Automao
Grficos tridimensionais

Comando plot3d o mais utilizado clc clear close t=[0:0.1:2*%pi]'; z=(sin(t).*exp(t))*cos(t'); plot3d(t,t,z) size(t)

13