Академический Документы
Профессиональный Документы
Культура Документы
Sum
ario
1 Introdu
c
ao
2 Introdu
c
ao a Programa
c
ao Computacional
2.1 Pequena Historia do Hardware . . . . . . . . . . . . . . . . . . .
2.2 Algoritmos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.3 Pequena historia da Linguagem de Programac
ao: u
ltimos 50 anos
2.4 Construcao de um Algoritmo . . . . . . . . . . . . . . . . . . . .
2.5 Propriedades de um Algoritmo . . . . . . . . . . . . . . . . . . .
2.5.1 A Estrutura Geral de um Algoritmo . . . . . . . . . . . .
2.6 Estruturas de Controle de Fluxo para a Programac
ao em Scilab .
2.7 Aspectos Basicos para a Programac
ao em Scilab . . . . . . . . .
2.8 Definicoes Basicas . . . . . . . . . . . . . . . . . . . . . . . . . .
3 O Ambiente do SCILAB
3.1 Interface Grafica do Ambiente Scilab . . . . .
3.2 Iniciando o Uso do Scilab . . . . . . . . . . .
3.3 Aspectos Basicos . . . . . . . . . . . . . . . .
3.3.1 Comentarios e escalares . . . . . . . .
3.3.2 Expressoes e Variaveis . . . . . . . . .
3.3.3 Dados do tipo list . . . . . . . . . . .
3.3.4 Arquivo diary . . . . . . . . . . . . . .
3.3.5 Operadores para Matrizes . . . . . . .
3.3.6 Funcoes . . . . . . . . . . . . . . . . .
3.4 Scilab: Primeiros Passos . . . . . . . . . . . .
3.4.1 Carregando variaveis . . . . . . . . . .
3.4.2 Operacoes de entrada/leitura de dados
3.4.3 Operacoes de sada/escrita de dados .
3.4.4 Operacoes Simbolicas no Scilab . . . .
3.5 Programacao . . . . . . . . . . . . . . . . . .
3.5.1 Funcoes . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
2
. 2
. 3
. 4
. 5
. 5
. 7
. 8
. 12
. 13
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
15
15
18
20
20
20
20
22
22
23
24
24
28
30
37
38
39
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
41
42
43
46
48
48
55
55
57
66
66
69
73
74
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
5 Aspectos Complementares
78
5.1 Sistemas de Controle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
5.1.1 Representacao de Modelos Lineares no Scilab . . . . . . . . . . . . . . . . . . 79
6 Conclus
ao
84
Ap
endice A - RESUMO INCOMPLETO DAS FUNC
OES
DO SCILAB
86
Ap
endice B - Licen
ca do Scilab
100
Refer
encias Bibliogr
aficas
104
ii
Lista de Figuras
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
.
.
.
.
.
.
6
9
10
15
16
16
.
.
.
.
.
.
.
.
.
.
.
.
.
.
18
19
19
29
34
36
52
60
61
67
75
76
78
79
.
.
.
.
.
.
.
.
8
13
37
49
57
58
59
60
Lista de Tabelas
1
2
3
4
5
6
7
8
Problema 1: Pseudo-codigo . . . . . . . . . . . . .
Operadores de Uso Comum . . . . . . . . . . . . .
Funcoes graficas basicas do Scilab . . . . . . . . . .
Exemplo de utilizacao da func
ao fsolve . . . . . .
Exemplo de utilizacao da func
ao ode . . . . . . . .
Exemplo 2 de utilizacao da func
ao ode . . . . . . .
Exemplo 3 de utilizacao da func
ao ode: Retrato de
Exemplo 4 de utilizacao da func
ao fchamp . . . .
iii
. . .
. . .
. . .
. . .
. . .
. . .
fase
. . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
1 Introdu
c
ao
Introduc
ao
Algebra
Linear
Polinomios e Funcoes Racionais
Integracao: Equacoes Diferencias Ordinarias (ODEPACK) e Equacoes Algebrico-Diferenciais
(DASSL)
Modelagem e Simulacao (Scicos)
Controle Classico e Robusto
Otimizacao (Inequacoes Matriciais Lineares -LMI, Otimizacao Diferenciavel e Nao Diferenciavel
Processamento de Sinais
Processamento de Imagens
Grafos e Redes (Metanet)
Scilab para Arquitetura Paralela
Estatstica
Rede Neuronal
Logica Nebulosa (Fuzzy Logic)
Controle Otimo
Discreto
Interfaces com Softwares de Computacao Simb
olica (Mapler , MuPAD)
1
Pron
uncia em sintaxe fonetica internacional e sailb.
Veja detalhes da licenca no Apendice I.
3
Desde 16 de maio 2003, com um time de especialistas dedicados pertencentes a um cons
orcio de instituico
es e
empresas que ser
a respons
avel pelo desenvolvimento, evoluca
o e promoca
o do Scilab. Informaco
es adicionais est
ao
disponveis em http://www-rocq.inria.fr/scilab/.
2
2 Introdu
c
ao a Programa
c
ao Computacional
Introduc
ao a Programac
ao Computacional
2.1
Pequena Hist
oria do Hardware
1200 dc Abaco
chines 1614 Bastoes de Napier (logaritmos)
1633 Regua de Calculo (Oughtred )
2.2
Algoritmos
2.2
Algoritmos
2.3
Pequena hist
oria da Linguagem de Programa
c
ao: u
ltimos 50 anos
2.3
Pequena hist
oria da Linguagem de Programac
ao: u
ltimos 50 anos
2.4
Constru
c
ao de um Algoritmo
2.4
Constru
c
ao de um Algoritmo
2.5
Propriedades de um Algoritmo
Cada operacao deve ser bem definida. Deve ser perfeitamente claro o que deve ser feito.
4
5
Criaca
o de Cons
orcio para Desenvolvimento em 2003.
http://www.octave.org
2.5
Propriedades de um Algoritmo
Problema
Muito
Simples
Problema
Simples
Problema
Muito
Simples
Problema
Muito
Simples
Problema
Complexo
Problema
Simples
Soluo
Soluo
Soluo
Problema
Muito
Simples
Soluo
Problema
Muito
Simples
Soluo
Soluo
Completa
2.5
Propriedades de um Algoritmo
2.6
[// Apresentac
ao do Algoritmo]
[// informac
oes sobre o codigo e sua utilizac
ao]
[// Detalhes do seu desenvolvimento]
[//Pr
e-processamento]
Especificac
ao de vari
aveis internas do Scilab
Carregamento de bibliotecas para a memoria
[//Fun
c
oes]
Declarac
ao das func
oes
[ // Incio]
Corpo do algoritmo
[//Fim]
importante salientar que as instruc
E
oes apresentadas entre [] sao opcionais. A nomenclatura
adotada e consistente com `aquela do proprio Scilab que usa (//) para denominac
ao de coment
arios.
Veja como ficaria por exemplo um algoritmo para a avaliac
ao da media final e do resultado para um
aluno em uma disciplina com duas avaliac
oes de igual peso. Considere como resultado aprovado se
a media for maior ou igual a 6, 0.
Etapa
1
2
3
Comentario
Definicao do problema e dos objetivos
Compreensao do Problema
Construcao do Algoritmo
Status
OK!
Media = (Nota1+Nota2)/2
Media 6, 0 7 Aprovado!
Veja Figura 2 e Tabela 1
A Figura 2 apresenta o fluxograma para o problema acima e a Tabela 1 apresenta o pseudocodigo para o mesmo problema.
Incio
Ler Nota1,Nota2
Media (Nota1+Nota2)/2
Se (Media < 6) Ent
ao
Imprime Nao Passou
Senao
Imprime Passou
Fim Se
Fim.
Tabela 1: Problema 1: Pseudo-codigo
2.6
2.6
Incio
Nota1
Nota2
Mdia=(Nota1+Nota2)/2
Mdia<6?
No
Passou
Passou
Fim
Figura 2: Problema 1: Fluxograma
Estrutura logica
Se (Condicao) Ent
ao
Executar comandos
da alternativa verdadeira
Senao
Executar comandos
da alternativa falsa
Fim Se
Comando Scilab
if (Condic
ao) then
Executar comandos
da alternativa verdadeira
else
Executar comandos
da alternativa falsa
end
No esquema acima, a condicao representa a expressao logica (booleana) e alternativa representa a seq
uencia de comandos (varios comandos sao possveis).
Alem disso, as estruturas condicionais podem ocorrer em ninhos (nest). Observe a Figura 3
para a verificacao das estruturas validas e inv
alidas: A representac
ao de estruturas condicionais encadeadas e dada por:
2.6
Vlido
Vlido
10
Invlido
Se (Condicao 2) Entao
Senao
Fim Se
Senao
Se (Condicao 3) Entao
Senao
Fim Se
Fim Se
Comando Scilab
if (Condicao 1) then
if (Condicao 2) then
else
end
else
if (Condicao 3) then
else
end
end
Senao
Fim Se
Comando Scilab
if (Condicao 1) then
else
end
Estruturas Repetitivas
As estruturas repetitivas, lacos ou loops podem ser de varios tipos:
Controlados por contador: Uma variavel e fornecida com o no. de vezes que sera repetido
o laco.
2.6
11
(Comandos)
[Senao]
[(Comandos)]
[ ]
Fim Enquanto
Comando Scilab
while (Condic
ao) then
(Comandos)
[else]
[(Comandos)]
[ ]
end
(Comandos)
end
Exemplo 2
for a=[7, 9, -1, 8, 12] do
(Comandos)
end
Exemplo 3
for k=list(1,2,exemplo) do
(Comandos)
end
Estrutura de Condi
c
ao
A estrutura de condicao e equivalente a um ninho de estruturas condicionais (Se-Ent
aoSenao), a sua sintaxe e dada por:
8
2.7
Aspectos B
asicos para a Programa
c
ao em Scilab
12
select express
ao,
case expressao1 then instruc
oes1,
case expressao2 then instruc
oes2,
2.7
Aspectos B
asicos para a Programac
ao em Scilab
Operadores L
ogicos para Condi
c
oes Compostas
Negacao NAO:
((condic
ao)): nega a condic
ao, de verdadeiro passa para falso (F) e
vice-versa.
Para ilustrar a utilizacao dos operadores logicos acima, apresenta-se a tabela verdade das
suas operacoes. Sejam as proposic
oes logicas p e q, ent
ao sabe-se que:
p
V
V
F
F
q
V
F
V
F
p&q
V
F
F
F
p|q
V
V
V
F
p
F
F
V
V
2.8
Defini
c
oes B
asicas
13
2.8
Defini
c
oes B
asicas
sinal
+
exemplo
2+3
34
25
5/2
2 3
2 3
a0
2.8
Defini
c
oes B
asicas
14
representa
1
= 3.1415927.....
constante e = 2, 7182818, base dos logaritmos naturais
constante representando a precisao da maquina, 1 + %eps = 1
nao e um n
umero (not a number )
infinito
e o polinomio y(s) = s, s=poly(0,s).
constante logica para VERDADEIRO (true), ex. 1 == 1
constante logica para FALSO (false), ex. %t.
3. Vari
avel: Entidade que armazena dados e pode mudar de valor durante a execuc
ao de um
algoritmo. Possui apenas um valor num determinado instante. Possui um nome e um tipo.
Constitui boa pratica a escolha de nomes que indicam a func
ao da vari
avel no algoritmo11 .
Ao inves de S = (a b)/2.0 recomenda-se: Area = (Base Altura)/2.0, pois e bem mais
compreensvel.
A escolha dos nomes de variaveis deve utilizar dos seguintes criterios:
Deve comecar com uma letra.
O restante pode ser letra ou dgito ou algum caracter especial permitido.
Vari
avel Global e Local: Vari
aveis locais sao conhecidas apenas no subalgoritmo que as
define, portanto desconhecidas para o algoritmo principal. As vari
aveis globais sao conhecidas
por todos as funcoes do algoritmo12 .
oes: Forma de manipular vari
aveis, definindo operac
oes sobre elas.
4. Express
5. Opera
c
ao de Atribui
c
ao: Especifica que uma vari
avel recebe determinado valor. Em
pseudo-linguagem e usualmente indicada pelos smbolos: ou =.
Observacao 1: Uma variavel so pode receber valores do tipo em que ela foi definida. Exemplo:
Variaveis reais so recebem valores reais: X 5.6;
Variaveis Tipo Caracter: N ome 0 M aria0 ;
Tipo Booleano: Condicao F also
Forma geral:
variavel expressao
ou
variavel = expressao.
Observacao 2: Variaveis do lado direito nao sofrem alterac
ao. Toda vari
avel usada no lado
direito deve possuir um valor antes da expressao ser avaliada.
11
3 O Ambiente do SCILAB
15
Instrues
................
Usa funo
. ..............
Instrues
ta
cu
Ex
Funo
Instrues
................
Fim
Retorna
O Ambiente do SCILAB
3.1
Interface Gr
afica do Ambiente Scilab
O Scilab possui uma interface grafica facilmente personalizada. A Figura 5 apresenta o janela
de interface do Scilab com o usuario.
O menu File: As seguintes opc
oes estao disponveis:
New Scilab: use-o para abrir outro ambiente do Scilab.
Exec ...: use-o para executar um arquivo (script) do Scilab.
13
No Scilab os subalgoritmos s
ao chamados de funco
es.
3.1
Interface Gr
afica do Ambiente Scilab
16
3.1
Interface Gr
afica do Ambiente Scilab
17
No modo de pausa o Scilab cria um novo prompt, nesse modo pode-se entrar comandos do Scilab sem afetar os
c
alculos do modo principal do Scilab, indicado pelo prompt -n->. Pode-se ter v
arios nveis do modo de pausa, para
sair de um modo de pausa e retornar para o superior, entre <resume>, para subir dois nveis use o comando <abort>
ou <quit>, esse u
ltimo comando quando executado fora do modo de pausa forcar
a a finalizaca
o da seca
o do Scilab.
3.2
18
3.2
Essa declaraca
o sup
oe que o ambiente Scilab esteja funcionando com mode(0), caso esteja em mode(-1) o Scilab
omitir
a o eco dos comandos. Para detalhes veja a funca
o mode.
3.2
19
3.3
Aspectos B
asicos
3.3
Aspectos B
asicos
3.3.1
20
Coment
arios e escalares
Express
oes e Vari
aveis
A lista (list) e uma colecao de objetos nao necessariamente do mesmo tipo, podendo conter
outros objetos (inclusive funcoes e outras listas). As listas sao muito u
teis para a definic
ao de
outros estruturas de dados. Existem dois tipos de listas: (a) listas ordinarias e (b) listas com tipo
definido (typed-list).
1. A lista list: lista ordinaria e definida no Scilab atraves do comando list, com sintaxe:
list(a1,....an)
que cria uma lista com elementos arbitrarios. list() define uma lista vazia. As operac
oes mais
comuns com as listas sao:
extracao [x, y, z...] = L(v), onde v e o vetor de ndices; [x, y, z] = L(:) extrai todos os
elementos.
3.3
Aspectos B
asicos
21
insercao: L(i) = a
remocao: L(i) = null() remove o e-esimo elemento da lista L.
Exemplos para listas ordinarias (list) :
>L=list(1,w,ones(2,2));<return>
A lista acima possui tres elementos: L(1) = 1, L(2) =0 w0 e L(3) = ones(2, 2), sendo que
cada elemento da lista pode ser acessado diretamente atraves da invocac
ao da sua posic
ao na
lista, exemplo:
>L(1)<return>
ans =
1.
>L(3)<return>
ans =
! 1. 1. !
! 1. 1. !
Pode-se ter acesso direto aos componentes de um elemento de uma lista, exemplo:
>L(3)(2,2)<return>
ans =
1.
2. A lista tlist: As listas tlist possuem um primeiro elemento especfico. Esse primeiro elemento
deve ser uma string de caracter (o tipo) ou um vetor de caracteres (com o primeiro elemento
definindo o tipo e os elementos seguintes os nomes dados `as entradas da lista). A lista tlist
e definida no Scilab atraves do comando tlist, com sintaxe:
tlist(tipo,a1,....an)
que cria uma lista com elementos arbitrarios apos o primeiro elemento, tipo, que e uma string
de caracter ou vetor de string de caracter. As operac
oes de extrac
ao, inserc
ao e remoc
ao de
list tambem sao validas para tlist, alem disso se o tipo especificar os nomes dos campos,
entao pode-se referir diretamente aos mesmos. Um importante aspecto de listas tlist e que
pode-se definir operadores que agem nos mesmos (overloading), assim pode-se definir por
exemplo a multiplicacao L1 L2 de duas listas tlist L1 e L2.
Exemplos para listas (typed-list) :
>L=tlist([Nome;Professor;Vetor],Lus Claudio,[2 3]);<return>
L=
L(1)
! N ome
!
!
!
! P rof essor !
!
!
! V etor
!
L(2)
Lu
s Cl
audio
L(3)
3.3
Aspectos B
asicos
22
! 2. 3. !
>L.Professor
ans =
Lus Claudio
>L(2)
ans =
Lus Claudio
>L.Vetor(2) // Equivalente a L(3)(1,2)
ans =
3.
3.3.4
Arquivo diary
Um arquivo diary e simplesmente um arquivo texto que contem os comandos do Scilab bem
como as suas respostas de uma secao do Scilab. Para se ativar o arquivo diary utiliza-se o comando
diary. Conforme indicado abaixo:
comando
diary(c:\arquivo.txt)
diary(0)
resultado
inicia arquivo diary para arquivo c:\arquivo.txt
finaliza arquivo diary
Alem dos operadores ja definidos na Tabela (2), o Scilab possui os seguintes operadores para
matrizes:
3.3
Aspectos B
asicos
Operador
[]
;
()
()
0
\
/
.
.\
./
.
..
./.
.\.
3.3.6
23
Funcao
definicao de matriz e concatenac
ao
separador de linhas
extracao de elemento
insercao de elemento
transposta
adicao
subtracao
multiplicac
ao
divisao a esquerda
divisao a direita
potenciac
ao
multiplicac
ao elemento a elemento
divisao `a esquerda elemento a elemento
divisao `a direita elemento a elemento
potencia elemento a elemento
produto de kronecker
divisao de kronecker a direita
divisao de kronecker a esquerda
m = a(k)
a(k) = m
Fun
c
oes
Scilab proporciona um n
umero bastante grande de func
oes elementares. Algumas func
oes, para
aumentar eficiencia, sao construdas internamente (built-in) ao Scilab. Mas, func
oes inexistente
podem ser adicionadas atraves de programac
ao da mesma como scripts, que quando carregados na
memoria podem ser diretamente executados. A Tabela abaixo apresenta as func
oes basicas mais
simples disponveis no Scilab.
Fun
c
oes B
asicas do SCILAB
clc - limpa tela de comandos
chdir - muda diretorio padrao
exec - executa funcao
getf - carrega funcoes na memoria
help - ajuda
spec - calcula valores caractersticos
rank - calcula posto de matriz
trace - calcula traco de matriz
abs - valor absoluto
conj - conjugado
diag - matriz diagonal
eye - matriz identidade
floor - arredondamento para baixo
imag - parte imaginaria
integrate - integracao por quadratura
interp - interpolacao
interpln - interpolacao linear
intersect - retorna um vetor com valores comuns entre dois vetores
linspace - vetor linearmente espacado
3.4
24
3.4
Nessa secao apresentam-se algumas atividades no ambiente calculadora, na proxima secao aspectos de programacao serao introduzidos.
3.4.1
Carregando vari
aveis
3.4
25
M=hypermat(dims [,v])
com dims sendo o vetor of dimens
oes e v (opcional) o vector elementos (valor default e dado por zeros(prod(dims),1))
3.4
26
Exemplos:
A funcao zeros cria matriz de elementos nulos,
>A = zeros(3,2)<return>
A=
! 0. 0. !
! 0. 0. !
! 0. 0. !
A funcao ones cria matriz com todos elementos iguais a 1,
>B = ones(3,2) <return>
B=
! 1. 1. !
! 1. 1. !
! 1. 1. !
A funcao eye cria matriz identidade. A func
ao eye utiliza as seguintes sintaxes:
X=eye(m,n)
X=eye(A)
X=eye( )
? O comando
e aplic
avel mesmo quando a matriz desejada n
ao e uma matriz quadrada.
Aten
ca
o: eye(10) e interpretado como eye(A) e A=10, ou seja, retorna uma matriz identidade de dimens
ao 1.
As dimens
oes ser
ao definidas quando a matriz for adicionada a uma matriz com dimens
oes fixas.
A funcao ceil produz um valor inteiro imediatamente superior ao argumento fornecido, por exemplo,
>ceil(4.35) <return>
ans =
5.
Por outro lado a funcao floor fornece o inteiro imediatamente menor que o argumento fornecido,
>floor(3.15)<return>
ans =
3.
A funcao round e uma funcao que arredonda os n
umeros do argumento para o seu inteiro mais
proximo, assim, round(3.15) fornecera a resposta igual a 3. e round(3.65) fornecera a resposta igual
a 4.
Para arredondar para baixo pequenos n
umeros, por exemplo o caso da matriz A abaixo utiliza-se
a funcao clean,
>A=[1 1e-15; 1e-10 2];<return>
>B=clean(A)<return>
B=
! 1. 0. !
! 0. 2. !
A funcao rand e usada para gerar vetores de n
umeros randomicos igualmente espacados na faixa
de [0, 1]. Para exemplificar, a geracao de um vetor linha com 5 n
umeros randomicos e dada por,
>rand(1,5)<return>
ans =
! .2113249 .7560439 .0002211 .3303271 .6653811 !
O Scilab possui uma biblioteca significativa para o calculo polinomial. Veja por exemplo como se
define um polinomio usando a funcao poly,
3.4
27
C D
C. D
C\D
funcao
gera faixa de n
umeros de a ate c de b em b
refere-se a toda linha ou toda coluna
u
ltimo ndice de matriz ou vetor
operador transposto conjugado
operador para multiplicac
ao de matrizes C e D
operador para multiplicac
ao de matrizes C e D, elemento a elemento.
divisao `a esquerda. Equivale a inv(C) D
Exemplos:
> [1:2:6]<return>
ans =
!1 3 5!
> A(:,$) <return>
ans =
! 3. !
! 6. !
! 0. !
>D=B <return>
D=
! 1.
2.
5. 2. !
! 1.
3.
7. 0. !
! 1. 1. 2. 0. !
>A*D<return>
ans =
3.4
28
! 6.
5. 13. 2. !
! 15. 17. 43. 8. !
! 0. 1. 2. 2. !
>D.*D <return>
ans =
! 1. 4. 25. 4. !
! 1. 9. 49. 0. !
! 1. 1. 4.
0. !
importante ressaltar que o operador () refere-se a operac
E
ao transposta conjugada,
>A=[1+2*%i 2; 0 3+4*%i] <return>
A=
! 1. + 2.i 2. !
! 0 3. + 4.i !
>A <return>
ans =
! 1. 2.i 0 !
! 2. 3. 4.i !
3.4.2
Opera
c
oes de entrada/leitura de dados
Sintaxe
[x]=input(mensagem,[string])
ler dados formatados via teclado
leitura de dados formatados via teclado
r=x dialog(labels,valor inicial)
[ok,x1,..,x14]=getvalue(Ttulo,labels,tipos,inicial)
r=x mdialog(titulo,labels,valor default inicial)
[n]=x message(strings [,botoes])
[n]=x choose(items,titulo [,botao])
r=x choices(titulo,items)
[r]=x matrix(label,matriz-inicial)
Exemplo:
>x=input(Forneca n
umero de elementos?)<return>
Forneca n
umero de elementos? >2
x=
2.
No exemplo anterior ao se fornecer o valor 2, ele e atribudo a vari
avel x18 .
Exemplo:
>x=input(Forneca seu nome?,s)<return>
18
Para a vers
ao 2.7 do Scilab, a funca
o input apresenta uma mensagem de warning, para se retirar a mesma deve-se
executar o comando funcprot(0) na seca
o do Scilab ou acrescentar o comando funcprot(0) no arquivo .scilab para
processamento autom
atico do comando. Esse problema j
a foi resolvido na vers
ao Scilab 3.0.
3.4
29
3.4
30
Exemplo de x mdialog/evstr:
>txt=[magnitude;frequencia;fase ];<return>
>s=x mdialog(Forneca sinal senoidal,txt,[1;10;0]) <return>
>mag=evstr(s(1));<return>
>freq=evstr(s(2));<return>
>fase=evstr(s(3));<return>
Exemplo de x message:
>r=x message([Sistema Quadratico; <return>
> Continua?],[Sim,Nao])<return>
Exemplo de x choose:
>n=x choose([item1;item2;item3],[that is a comment],Return) <return>
Exemplo de x choices:
>l1=list(Opcao 1,1,[c1,c2,c3]);<return>
>l2=list(Opcao 2,2,[d1,d2,d3]); <return>
>l3=list(Opcao 3,3,[e1,e2]); <return>
>r=x choices(Menu de Escolha,list(l1,l2,l3)); <return>
Que retornara o vetor r com o item de escolha das opc
oes, Ex:
r=
! 1. 2. 2.!
Exemplo de x matrix/evstr:
>m=evstr(x matrix(Forneca matriz 3x3,zeros(3,3))) <return>
No exemplo acima a matriz e inicializada com valores zeros atraves da func
ao zeros(3,3).
Leitura de arquivo
A tabela a seguir apresenta um conjunto de func
oes essenciais para a leitura de dados de arquivos:
Sintaxe
Func
ao
[fd,err]=mopen(file [, mode, swap ]) abre arquivo, compatvel com fopen da linguagem C
err=mclose([fd]) ou mclose(all)
fecha arquivo aberto com mopen
read(arquivo,m,n,[formato])
leitura de matriz de dados linha apos linha
fscanf (arquivo,formato)
leitura de dados de arquivo
3.4.3
Opera
c
oes de sada/escrita de dados
O Scilab possui varias formas de apresentar resultados na janela de comandos. O forma mais
simples e a execucao de comando sem o ponto-e-vrgula (;). Alem dessas formas pode-se apresentar
resultados com as funcoes:
Comando
;
disp
file
write(%io(2),....)
print(%io(2),....)
printf (formato,valor1,..,valorn)
mprintf (formato,a1,...,an);
mfprintf (fd,formato,a1,...,an);
str=msprintf (formato,a1,...,an);
finalidade
inibe apresentac
ao de resultado apos execuc
ao de instruc
ao
mostra objeto na tela do Scilab
seleciona unidade logica e gerencia arquivo
escreve resultados formatados na janela do Scilab
escreve resultados formatados na janela do Scilab
emula a func
ao printf da linguagem C
converte, formata e escreve dados na janela do Scilab
converte, formata e escreve dados para arquivo
converte, formata e escreve dados em uma string
3.4
31
finalidade
seleciona unidade logica e gerencia arquivo
escreve resultados formatados na janela do Scilab
escreve resultados formatados na janela do Scilab
converte, formata e escreve dados para arquivo
converte, formata e escreve dados para arquivo
significado
arquivo nao pode existir (default)
arquivo deve existir
status desconhecido
arquivo a ser apagado no final da sec
ao
significado
fecha o(s) arquivo(s) representado(s) pela unidade logica associada
coloca o ponteiro para o incio do arquivo
coloca o ponteiro para o incio do u
ltimo registro
coloca o ponteiro apos o u
ltimo registro
significado
acesso seq
uencial (default)
acesso direto
Sada em forma gr
afica
O Scilab possibilita apresentar resultados em varios formatos de graficos, imprimir, formatar, salvar
figuras em varios formatos graficos (Xfig, GIF, PS, EPS). As func
oes graficas basicas na Scilab19
estao apresentadas na Tabela 3.
Exemplos 1
>x=0:0.1:2*%pi; <return>
>plot(x,sin(x),seno,tempo,faz grafico de seno)<return>
>xbasc()<return>
>plot([sin(x);cos(x)]) <return>
>// Faz campo de direcoes de ODE
19
3.4
32
>deff([xdot] = derpol(t,x),..
>[xd1 =x(2);..
> xd2 = -x(1) + (1 - x(1)**2)*x(2);..
>xdot = [ xd1 ; xd2 ]])
>xf= -1:0.1:1;
>yf= -1:0.1:1;
>fchamp(derpol,0,xf,yf)
Exemplos 2
>deff([y]=f(x),y=sin(x)+cos(x))
>x=[0:0.1:10]*%pi/10;
>fplot2d(x,f)
Exemplos 3
>// cria figura n
umero 3
>h=figure(3);
>// cria figura n
umero 1 e coloca texto
>uicontrol( h, style,text, ...
> string,Isto e uma figura, ...
> position,[50 70 100 100], ...
> fontsize,15);
>// Cria figura 1 e coloca texto
>figure();
>uicontrol( style,text, ...
> string,Outra figura, ...
plot(y)
plot(x,y)
plot(x,y,+)
plot(x,y,o)
plot(x,y,-)
plot(x,y,)
plot(x,y,-.)
hold()
semilogx(x,y)
semilogy(x,y)
loglog(x,y)
plot(x1,y1,x2,y2,x3,y3)
semilogx(x1,y1,x2,y2,x3,y3)
semilogy(x1,y1,x2,y2,x3,y3)
loglog(x1,y1,x2,y2,x3,y3)
legend(leg1,leg2,leg3)
subplot(m,n,k)
plot3(x,y,z)
z=feval(x,y)
mesh(x,y,z)
mesh(x,y,f)
surf(x,y,z)
surf(x,y,f)
surfl(x,y,z)
surfl(x,y,f)
Apresenta gr
afico do vetor y contra seus ndices
Apresenta gr
afico de valores do vetor x e y, ambos do mesmo comprimento
Apresenta gr
afico de x contra y usando + como smbolo
Apresenta gr
afico de x contra y usando o como smbolo
Apresenta gr
afico de x contra y usando linha contnua
Apresenta gr
afico de x contra y usando linha tracejada (dashed )
Apresenta gr
afico de x contra y usando linha tracejada-ponto (dash-dot)
Mantem ou libera janela gr
afica ativa para gr
aficos adicionais
Gr
afico com escala logartmica no eixo-x
Gr
afico com escala logartmica no eixo-y
Gr
afico com escala logartmica em ambos eixos
Gr
afico de conjunto de dados (x1,y1), (x2,y2) etc.
Gr
afico de conjunto de dados com escala logartmica no eixo-x
Gr
afico de conjunto de dados com escala logartmica no eixo-y
Gr
afico de conjunto de dados com escala logartmica em ambos eixos
Apresenta caixa de legendas
Define janela matricial e seleciona gr
afico n
umero k na janela de m linhas e n colunas
Apresenta gr
afico 3D dos vetores x,y,z com coordenadas de pontos
Gera matriz de z(i,j) = f(x(i),y(j)), x,y s
ao vetores
Superfcie (mesh) definida pelos vetores x,y e matriz z
Superfcie (mesh) definida pelos vetores x,y e funca
o f [f(x,y)]
Superfcie s
olida definida pelos vetores x,y e matriz z
Superfcie s
olida definida pelos vetores x,y e funca
o f [f(x,y)]
Superfcie com sombra (lightened ) definida pelos vetores x,y e matriz z
Superfcie com sombra (lightened ) definida pelos vetores x,y e funca
o f [f(x,y)]
3.4
33
atributo
crculo vazio,
sinal,
triangulo, 5
sinal,
losango vazio,
losango preenchido,
asterisco, *
sinal, x
sinal, +
pontilhado, .
argumento
1
2
3
4
5
6
7
8
9
..
.
32
atributo
curva preta
curva azul
curva verde claro
curva azul claro
curva vermelha tonalidade 1
curva magenta
curva amarela tonalidade 2
curva branca
curva azul escuro
..
.
curva dourada
A vers
ao do Scilab para Linux apresenta essa cor como vermelha.
Observacoes:
3.4
34
1. Para se fazer uma curva com uma cor diferente da cor preta, deve-se mudar a cor padrao
da paleta de cores do Scilab usando o comando xset(color,valor), porem, para se mudar
apenas a cor dos pontos pode ser usar as func
oes get() e set().
Exemplo: Deseja-se fazer uma curva com os losangos preenchidos na cor magenta (cor=6).
> clf()// limpa janela grafica
> x=[-.2:0.1:2*%pi]; // cria vetor x
> plot2d(x-.3,sin(x-1),[6] ); // Faz grafico
> a=get(current_axes); // Ler dados do eixo
> p1=a.children.children(1);
> set(p1,mark_style,4);
2. Para se exportar uma figura em formato para inclusao em Latex, basta proceder conforme
indicado na Figura (11).
3.4
35
clf()
set(figure_style,new) //cria uma figura
a=get(current_axes)//recebe manipulador (handler) do novo eixo criado
a.axes_visible=on; // torna os eixos vis
veis
a.font_size=3; //configura o tamanho da fonte para os labels dos tics
a.x_location=top; //configura a posi
c~
ao do eixo x
a.data_bounds=[-7,-2;7,2]; //configura os tamanhos limites dos eixos x, y
a.sub_tics=[5,0];
a.labels_font_color=5;
a.grid=[2,2];
a.box=off;
x=-2*%pi:0.1:2*%pi;
plot2d(x-.3,sin(x)*7+.2,16);
da=gda(); // recebe manipulador do modelo do eixo
da.thickness = 2; // Espessura da linha dos eixos
da.foreground = 6; // cor das linhas dos eixos
// t
tulo
da.title.text=Meu Titulo@Principal // T
tulo em m
ultiplas linhas
da.title.foreground = 12;
da.title.font_size = 4;
// x labels default
da.x_label.text=x;
da.x_label.font_style = 8;
da.x_label.font_size = 2;
da.x_label.foreground = 5;
da.x_location = middle;
// y labels default
da.y_label.text=y;
da.y_label.font_style = 3;
da.y_label.font_size = 5;
da.y_label.foreground = 3;
da.y_location = right;
Para que se entenda o potencial dessas func
oes apresenta-se a seguir as propriedades padroes
de um eixo. E que sao portanto factveis a configurac
ao.
-->set(figure_style,new)
-->a=get(current_axes)
a=
Handle of type Axes with properties:
======================================
parent: Figure
children: []
visible = on
axes_visible = off
grid = [-1,-1]
x_location = bottom
y_location = left
title: Label
3.4
-7
-5
36
-3
Meu Titulo
Principal
-1
1
y7
9
7
5
3
1
-1
-3
-5
-7
3.4
background
foreground
clip_state
clip_box =
37
= -2
= -1
= off
[]
Comando utilizacao
driver
seleciona driver grafico
xclear
limpa janela grafica
xpause
pausa em milisegundos
xbasc
limpa janela grafica
clf
limpa janela grafica
xclick
aguarda click de mouse
xbasr
refaz grafico de janela grafica
xinit
inicializa device gr
afico (arquivo)
xend
encerra sec
ao grafica
xset
define propriedades de grafico
xget
recebe propriedades do grafico corrente
plot2d
faz grafico linear por partes(*)
plot2d2
faz grafico constante por parte (degrau)(*)
plot2d3
faz grafico de barras verticais(*)
plot2d4
faz grafico com setas (flechas)(*)
subplot
divide janela grafica em matriz de sub-janelas
xtitle
adiciona ttulo `a janela grafica e eixos X e Y
xgrid
adiciona grid em grafico 2D
champ
faz grafico de campo vetorial 2D
fchamp
faz campo de direc
oes de uma ODE 2D de 1a. ordem
xsave
salva grafico para arquivo
xload
leitura de grafico salvo com xsave
figure
cria pagina grafica tksci
close
fecha janela grafica tksci
uicontrol cria objeto GUI
uimenu
cria menu ou submenu em figura
xselect
seleciona (se existente) ou cria janela grafica
(*)Para verificar demonstrativo execute a func
ao sem argumentos, Ex.: plot2d3().
Tabela 3: Func
oes graficas basicas do Scilab
3.4.4
Opera
c
oes Simb
olicas no Scilab
3.5
Programa
c
ao
addf
subf
mulf
ldivf
rdivf
cmb lin
eval
evstr
trianfml
solve
38
adicao simbolica
subtracao simbolica
multiplicacao simbolica
divisao simbolica `a esquerda
divisao simbolica `a direita
com 4 argumentos, a, x, b e y, cria combinac
ao linear a x + b y
avalia expressao simb
olica
avalia expressao simb
olica
produz matriz triangular superior de uma matriz simb
olica
obtem solucao de sistema simb
olico Ax = b, A e matriz triangular superior
Para resolver simbolicamente o sistema linear Ax = b em que a matriz A nao e uma matriz
triangular superior pode-se seguir o seguinte procedimento:
1. Cria-se uma matriz aumentada Aaum = [A|b]
2. Usa-se a funcao trainfml na matriz aumentada para se produzir uma matriz triangular
superior, Aaum2
3. Extrai-se uma matriz triangular superior com as mesmas dimensoes de A de Aaum2, A1
4. Faca a u
ltima coluna em Aaum2 igual a um vetor b1
5. A solucao do sistema Ax = b e obtida utilizando-se a func
ao solve com argumentos A1 e
b1
Alem dessas funcoes o Scilab possui um conjunto de func
oes para manipulac
ao simb
olica de
expressoes polinomiais, conforme apresentado no Apendice.
clean
coeff
coffg
degree
denom
derivat
determ
detr
factors
horner
invr
numer
pdiv
residu
roots
3.5
Programa
c
ao
O Scilab possui uma serie de ferramentas para desenvolvimento de programas incluindo operadores de comparacao, repeticoes condicionais, func
oes e criac
ao de novos ambientes.
3.5
3.5.1
Programa
c
ao
39
Fun
c
oes
Funcoes sao colecoes de comandos que podem ser criadas e executadas de varias formas no
Scilab. Elas podem passar argumentos e podem ser elementos em listas. O formato geral de uma
funcao e:
function [y1 ,y2 ,. . .,yn ]=nome func(x1 ,x2 ,. . . ,xm )
endfunction
onde xi sao os m argumentos de entrada para a func
ao nome func e yj sao os argumentos de
sada. Os parametros de entrada e sada podem ser qualquer objeto Scilab, inclusive func
oes.
Cada funcao deve ser finalizada com o comando endfunction. Quando as func
oes sao definidas
em arquivo como scripts, elas devem ser carregadas no Scilab atraves dos comandos getf (carrega
funcao na memoria) e exec (carrega para a memoria e executa). A boa pratica de programac
ao
em Scilab e usar as extensoes:
extensao
.sce
.sci
uso
arquivo para execuc
ao direta
arquivo de func
oes para carregar em memoria
3.5
Programa
c
ao
40
3.14
3.56
0.23
8.41
4.56
7.89
5.43
6.23
41
4.1
Sistemas de Equa
c
oes Alg
ebricas Lineares
4.1
Sistemas de Equa
c
oes Alg
ebricas Lineares
42
2x + 3y 5z = 7
6x 2y + z = 5
x + 3y z = 4
Esse sistema pode ser escrito na forma matricial como A w = b, com a matriz A definida por:
>A=[2 3 -5; 6 -2 1; 1 3 -1]
A=
! 2. 3. 5. !
! 6. 2. 1. !
! 1. 3. 1. !
e o vetor b dado por:
>b=[-7;5;4]
b=
! 7. !
! 5. !
! 4. !
A solucao do sistema e o vetor coluna w = [x; y; z], que pode ser calculado nas formas abaixo:
1. Atrav
es de w = A1 b, fun
c
ao inv
>w=inv(A)*b
w=
! 1. !
! 2. !
! 3. !
Para se verificar a solucao pode-se usar:
>A*w
ans =
! 7.!
! 5.!
! 4.!
que e igual ao vetor b. Assim a solucao esta correta.
2. Atrav
es do operador de divis
ao `
a esquerda (\)
>w = A\b
w=
! 1. !
! 2. !
! 3. !
3. Utilizando-se a fun
c
ao linsolve
A funcao linsolve calcula todas as soluc
oes do problema A x + c = 0. Observe que o vetor c e
igual ao vetor b. Assim, pode-se resolver o problema acima fazendo-se,
>w=linsolve(A,-b)
w=
4.2
43
! 1. !
! 2. !
! 3. !
A funcao linsolve possui outros argumentos, a sintaxe completa da func
ao e dada por:
[x0,kerA]=linsolve(A,c [,x0])
Nesse caso:
x0
kerA
4.2
dx
1 2
=
x
2 1
dt
com as condicoes iniciais: x(0) = xo . Esse estudo pode ser feito analise do problema de valor
caracterstico associado, assim determinando-se os valores caractersticos do problema associado
e pode-se, pela Teoria de Lyapunov, avaliar a estabilidade do sistema linear conforme o sinal da
parte real dos mesmos:
<() < 0 sistema estavel
4.2
44
Utilizacao:
evals=spec(A)
[evals,X] =spec(A)
evals=spec(A,E)
[al,be] = spec(A,E)
[al,be,Z] = spec(A,E)
[al,be,Q,Z] = spec(A,E)
(*)Os valores caractersticos sao
2. Utilizando-se as fun
c
oes para c
alculo simb
olico
A determinacao dos valores caractersticos do problema de valor caracterstico: Ax = x, exige-se
que se encontre as razes da equacao caracterstica: det(A I) = det(I A) = 0.
3. Utilizando-se a fun
c
ao bdiag
A funcao bdiag implementa uma diagonalizac
ao em bloco da matriz A, a sua sintaxe e dada por:
[Ab [,X [,bs]]]=bdiag(A [,rmax])
Com os parametros:
4.2
45
A
matriz quadrada
rmax controla o condicionamento de X, default e norma l1 de A(*)
Ab
matriz quadrada
bs
fornece a estrutura de blocos (dimensao dos blocos)
X
e a mudanca de base, matriz nao singular
(*) Para se obter uma forma diagonal (se existente) escolhe-se elevados
valores para rmax, ex. rmax=1/%eps.
A funcao bdiag pode ser utilizada diretamente para a determinac
ao dos valores caractersticos de
sistemas que possuem valores caractersticos reais.
Exemplo: Usando spec
>A=[1,2;-2,1]; <return>
>spec(A) <return>
ans =
! 1. + 2.i !
! 1. 2.i !
Assim, como <() > 0 o sistema e instavel.
Exemplo: Usando fun
c
oes simb
olicas
>x=poly(0,x); <return>
>pol=det(x*eye()-A); <return>
>roots(pol) <return>
ans =
! 1. + 2.i !
! 1. 2.i !
o que conforma que o sistema e instavel.
Exemplo: Usando a fun
c
ao bdiag
>A=[1 2 3; 3 2 1; 2 1 3];
>spec(A)
ans =
!
6.
!
! 1.4142136 !
!
1.4142136 !
>[S,X]=bdiag(A);
>clean(inv(X)*A*X)
ans =
! 1.4142136 0.
0.
!
!
0.
6.
0.
!
!
0.
0. 1.4142136 !
Com os valores caractersticos da matriz A na diagonal.
4.3
Sistemas de Equa
c
oes Alg
ebricas N
ao Lineares
4.3
Sistemas de Equa
c
oes Alg
ebricas N
ao Lineares
46
A resolucao de sistemas de equacoes algebrica nao lineares pode ser feita atraves da utilizac
ao
da funcao fsolve. A funcao fsolve utiliza uma modificac
ao do metodo hbrido de powell e a
fornecimento do jacobiano e opcional. A sintaxe da func
ao fsolve e dada por:
[x [,v [,info]]]=fsolve(x0,fct [,fjac] [,tol])
Os termos entre colchetes sao opcionais. A tabela abaixo descreve os parametros sa func
ao fsolve.
parametros
x0
fct
fjac
tol
x
v
info
0
1
2
3
4
descricao
vetor de estimativa inicial
funcao ou lista de string (external)
funcao da matriz jacobiana ou lista de string (external)
tolerancia, default: tol=1.e-10
vetor com valor final estimado
vetor com valor da func
ao em x
indicador de termino
parametros de entrada inadequados
erro relativo e no maximo igual a tol
n
umero de chamadas a func
ao excedido
tol e muito pequeno. Nao se pode melhorar soluc
ao
interacao nao leva a convergencia
Exemplo 1
>a=[1,7;2,8];b=[10;11];
>deff([y]=fsol1(x),y=a*x+b);
>deff([y]=fsolj1(x),y=a);
>[xres]=fsolve([100;100],fsol1,fsolj1,1.e-7);
>//verificacao da solucao
>xres
>a*xres+b
Exemplo 2
Para a solucao do sistema:
x2
f1 (x1 , x2 ) = 12 sin(x1 x2 ) 4
x21 = 0
1
f2 (x1 , x2 ) = (1 4
)(e2x1 e) + sx2 2ex1 = 0
Para a solucao do sistema pode-se preparar o script abaixo e salva-lo no arquivo nssim.sci:
function [f]=fun(x)
f(1)=1/2*sin(x(1)*x(2))-x(2)/4/%pi-x(1)/2;
f(2)=(1-1/4/%pi)*(exp(2*x(1))-%e)+%e*x(2)/%pi-2*%e*x(1);
endfunction
Para a execucao da funcao fsolve pode-se fazer:
>[xres,v,info]=fsolve([0.4;3],fun)
4.3
Sistemas de Equa
c
oes Alg
ebricas N
ao Lineares
47
info =
1.
v=
1.0E-15 *
! .6383782!
! .4440892!
xres =
!.2994487!
!2.8369278!
ou,
>[xres]=fsolve([-0.2;0.6],fun)
xres =
! .2605993!
!.6225309!
mudando a estimativa inicial para a soluc
ao:
>[xres]=fsolve([0.6;3],fun)
xres =
!.5!
!3.1415927!
Observa-se que o problema possui varias soluc
oes (multiplicidade de soluc
oes).
Exemplo 3
Solucao do sistema de reacao na forma adimensionalizada:
(
)
=0
f1 (x1 , x2 ) = 1 x1 1 + exp( E
x2
4.3
Sistemas de Equa
c
oes Alg
ebricas N
ao Lineares
48
inclui opcoes:
ierr=exec(path,errcatch [,mode])
ou
ierr=exec(fun,errcatch[,mode])
com os parametros:
path
mode
0
-1
1
2
3
4
7
fun
ierr
Aplica
c
oes `
a Engenharia Qumica
4.3.2
C
alculo do Volume pela Equa
c
ao de Estado de Redlich-Kwong
RT
a
V b V (V + b) T
com:
Variavel
P
V
T
R
Tc
Pc
Significado
pressao
volume molar
temperatura
Constante Universal dos gases
temperatura crtica
pressao crtica
Unidade
atm
L/g-mol
K
R=0.08206 atm L/(g-mol K)
K
atm
(4.1)
4.3
Sistemas de Equa
c
oes Alg
ebricas N
ao Lineares
49
mode(-1);
// Template para resolu
c~
ao de Fun
c~
oes no SCILAB
// Exemplo de solu
c~
ao de sistema n~
ao linear
// Formato de utiliza
c~
ao da fun
c~
ao fsolve:
// [x [,v [,info]]]=fsolve(x0,fct [,fjac] [,tol])
// info : indicador de final de execu
c~
ao
//
=
0 : par^
ametros de entrada n~
ao adequados
//
=
1 : erro relativo entre x e a solu
c~
ao
e no m
aximo igual a tol
//
=
2 : n
umero de chamadas da fun
c~
ao foi atingido
//
=
3 : toler^
ancia, tol,
e muito pequena
//
=
4 : N~
ao converge
// Valor default para tol
e tol=1.e-10
//
// Defini
c~
oes das fun
c~
oes
function [f]=fun(x)
f(1)=1/2*sin(x(1)*x(2))-x(2)/4/%pi-x(1)/2;
f(2)=(1-1/4/%pi)*(exp(2*x(1))-%e)+%e*x(2)/%pi-2*%e*x(1);
endfunction
// Programa principal
txt=[x(1);x(2)];
valor=x_mdialog(Forne
ca estimativa inicial,txt,[ ; ])
x0(1)=evstr(valor(1));
x0(2)=evstr(valor(2));
[x,fv, iflag]=fsolve(x0,fun);
if iflag==1 then
printf(Solu
c~
ao:\n);
disp(x);
end
Tabela 4: Exemplo de utilizac
ao da func
ao fsolve
e,
5/2
R2 Tc
a = 0.42747
Pc
RTc
b = 0.08664
Pc
!
(4.2)
(4.3)
1. Calcule o volume molar e fator de compressibilidade para amonia gasosa `a uma pressao de
P = 56atm e temperatura T = 450K
2. Como o fator de compressibilidade varia com a Pr = P/Pc na faixa de 0, 1 ate 10.
Sabe-se que z = PRTV , Tc = 405, 5K e pc = 111.3atm. Soluc
ao: A equac
ao (4.1) pode ser resolvida
como uma equacao nao linear no volume. A utilizac
ao da func
ao fsolve pode ser aplicada definindo-
4.3
Sistemas de Equa
c
oes Alg
ebricas N
ao Lineares
se:
f=
RT
a
P
V b V (V + b) T
50
(4.4)
4.3
Sistemas de Equa
c
oes Alg
ebricas N
ao Lineares
// Equa
c~
ao de Estado de RK
clear
clc
mode(-1);
// Defini
c~
ao da fun
c~
ao
function [f]=fun(V,P,T,Tc,Pc)
R=0.08206;
a=0.42747*R^2*Tc^(5/2)/Pc;
b=0.08664*R*Tc/Pc;
f=R*T/(V-b)-a/V/(V+b)/sqrt(T)-P;
endfunction
//---------------------------------// Programa principal
//---------------------------------// Dados
Tc=405.5; Pc=111.3; T=450;Pr=0.1:0.1:10;Pt=Pr.*Pc;sol=[];
h=figure(1);
uicontrol( h, style,text,...
string,Favor aguardar. Calculando..., ...
position,[1 180 200 20], ...
fontsize,15);
x0=0.08206*T/Pt(1);
for i=1:length(Pt)
//Estimativa para a solu
c~
ao
flist=list(fun,Pt(i),T,Tc,Pc);
[x,fv,iflag]=fsolve(x0,flist);
select iflag,
case 0 then
printf(Par^
ametros de entrada n~
ao adequados!\n), abort
case 1 then
z=Pt(i)*x/0.08206/T;
sol=[sol;x z Pr(i)];
x0=x;
case 2 then
printf(N
umero m
aximo de chamadas da fun
c~
ao atingido!\n),abort
case 3 then
printf(Valor da vari
avel tol
e muito pequeno!\n), abort
case 4 then
printf(N~
ao converge para P=%f!\n,Pt(i)), abort
end
end
close(h);
// Gr
afico com algumas fun
c~
oes do novo estilo
xset(window,0);
clf() // limpa janela gr
afica
xset(font size,12);xset(thickness,2);
xset(mark size,1);
plot2d(sol(:,3),sol(:,2),5);
a=get(current_axes); // Ler dados do eixo
p=a.children.children;
set(p,mark_style,5);
xtitle(z x Pr, Pr, z); xselect();
51
4.3
Sistemas de Equa
c
oes Alg
ebricas N
ao Lineares
52
Figura 13: Comportamento do fator de compressibilidade (z) com a Pressao reduzida (Pr )
para as varias areas dos metodo numericos. Para exemplificar, apresenta-se a seguir alguns scripts
simples para a solucao de equacoes nao lineares:
// C
odigo que implementa o m
etodo da bissec
c~
ao
// LCOL, Ag/2004
// UFU/FEQUI/NUCOP
// Pr
e-processamento
clear
clc
mode(-1)
//
function [sol,erro,fc,kit]=bisseccao(fun,a,b,delta)
//
ya=feval(a,fun);
yb=feval(b,fun);
20
4.3
Sistemas de Equa
c
oes Alg
ebricas N
ao Lineares
53
4.3
Sistemas de Equa
c
oes Alg
ebricas N
ao Lineares
c=b-dx;
ac=c-a;
yc=feval(c,fun);
if yc==0, break;
elseif yb*yc>0
b=c;
yb=yc;
else
a=c;
ya=yc;
end
dx=min(abs(dx),ac);
if abs(dx) < delta,
break, end
if abs(yc) < epsilon, break, end
end
sol=c;
erro=abs(b-a)/2;
fc=feval(c,fun);
endfunction
// M
etodo de Newton --------------------------------------function [x,erro,kit,fc]=newton(fun,dfun,x0,delta,epsilon,itmax)
kit=0;
for k=1:itmax
kit=kit+1;
x=x0-feval(x0,fun)/feval(x0,dfun);
erro=abs(x-x0);
erro_rel=2*erro/(abs(x)+delta);
x0=x;
fc=feval(x0,fun);
if (erro <delta) | (erro_rel < delta) | (abs(fc)<epsilon), break,end
end
endfunction
//---------------------------------------------------------// Programa Principal
// Uso da fun
c~
ao bissec
c~
ao
deff([f]=funcao(x),f=x*sin(x)-1);
[sol,erro,fc,it]=bisseccao(funcao,0,2,1e-7);
printf(
Solu
c~
ao pelo M
etodo da bissec
c~
ao de Bolzano:\n);
printf( x = %f\n,sol);
printf( Erro = %e\n,erro);
printf( Fun
c~
ao = %e\n,fc);
printf( Itera
c~
oes = %d\n,it);
// Uso da fun
c~
ao regula
[sol,erro,fc,it]=regula(funcao,0,2,1e-7,1e-8,100);
printf(
Solu
c~
ao pelo M
etodo Regula-Falsi: \n);
printf( x = %f\n,sol);
printf( Erro = %e\n,erro);
printf( Fun
c~
ao = %e\n,fc);
54
4.4
Sistemas de Equa
c
oes Diferenciais Ordin
arias(EDO)
55
printf( Itera
c~
oes = %d\n,it);
// Uso da fun
c~
ao newton
deff([f]=funcao2(x),f=x^3-3*x+2);
deff([df]=deriva(x),df=3*x^2-3);
x0=1.2;
delta=1e-8;
epsilon=1e-10;
itmax=40;
[x,erro,it,fc]=newton(funcao2,deriva,x0,delta,epsilon,itmax)
printf(
Solu
c~
ao pelo M
etodo de Newton: \n);
printf( x = %f\n,x);
printf( Erro = %e\n,erro);
printf( Fun
c~
ao = %e\n,fc);
printf( Itera
c~
oes = %d\n,it);
4.4
Sistemas de Equa
c
oes Diferenciais Ordin
arias(EDO)
Uma grande variedade de problemas da Engenharia Qumica pode ser formulada em termos de
equacoes diferencias ordinarias (EDOs). A equac
ao diferencial ordinarias e a equac
ao envolvendo
uma relacao entre uma funcao desconhecida e e uma ou mais de suas derivadas. Equac
oes envolvendo derivadas com somente uma vari
aveis independente sao chamadas de equac
oes diferencias
ordinarias. As EDOs podem ser classificadas como problema de valor inicial (PVI) e problema de
valor no contorno (PVC). A diferenciac
ao do PVI e do PVC deve-se a localizac
ao das condic
oes
extras na formulacao do problema e seguem a seguinte especificac
ao:
avel independente.
PVI: as condicoes sao dadas para o mesmo valor da vari
PVC: as condicoes sao dadas para valores distintos da vari
avel independente.
A forma generica de expressar um sistema de EDOs PVI e:
dy
= f (x, y),
dx
4.4.1
y(xo ) = yo
(4.5)
4.4
Sistemas de Equa
c
oes Diferenciais Ordin
arias(EDO)
y0
t0
t
f
tipo
rtol,atol
jac
w,iw
ng
g
k0
kvect
56
dy
= 21.6y, y(0) = 1;
(4.6)
dx
A equacao acima e bem simples e possui soluc
ao analtica dada por: y = exp(21.6x). A implementacao com a funcao ode pode ser feita conforme a Tabela 5.
Exemplo 2: Seja o sistema reacional.
k
A 1 B
k
B + C 2 A + C
(4.7)
k3
2B C + B
que resulta no sistema de EDOs,
dCA
dt
dCB
dt
dCC
dt
k1 CA + k2 CB CC
= k1 C A k2 C B C C k3 C 2
B
2
k3 C B
dx
1 2
=
x
2 1
dt
com as condicoes iniciais: x(0) = xo .
4.4
Sistemas de Equa
c
oes Diferenciais Ordin
arias(EDO)
57
mode(-1);
// Template para resolu
c~
ao de EDOs PVI no SCILAB
// Formato de utiliza
c~
ao da fun
c~
ao ode:
// [y,rd,w,iw]=ode(root,y0,t0,t [,rtol [,atol]],f [,jac],ng,g [,w,iw])
//
Valor default:rtol=1.e-5 e atol=1.e-7
//
Valor default para rfk e fix: rtol=1.e-3 e atol=1.e-4
// Defini
c~
oes das fun
c~
oes
// dy/dt=-21.6*y, y(0)=1
//
function [f]=fun1(x,y)
f=-21.6*y;
endfunction
function [f]=fun2(x)
f=exp(-21.6*x);
endfunction
// Programa principal
txt=[xo=;yo=;x=];
valor=x_mdialog(Forne
ca informa
c~
oes,txt,[0;1;0:0.01:1])
x0=evstr(valor(1)); y0=evstr(valor(2)); x=evstr(valor(3));
y=ode(y0,x0,x,fun1);
xbasc();
subplot(211),plot2d(x,y), xtitle(Solu
c~
ao Num
erica);
subplot(212),fplot2d(x,fun2), xtitle(Solu
c~
ao Anal
tica);
xselect()
Tabela 5: Exemplo de utilizac
ao da func
ao ode
4.4
Sistemas de Equa
c
oes Diferenciais Ordin
arias(EDO)
58
mode(-1);
// Template para resolu
c~
ao de EDOs PVI no SCILAB
// Formato de utiliza
ca
~o da fun
c~
ao ode:
// [y,rd,w,iw]=ode(root,y0,t0,t [,rtol [,atol]],f [,jac],ng,g [,w,iw])
//
Valor default:rtol=1.e-5 e atol=1.e-7
//
Valor default para rfk e fix: rtol=1.e-3 e atol=1.e-4
// Defini
c~
oes das fun
co
~es
//
function [f]=fun(t,y)
k=[0.08;2e4; 6e7];
f(1)=-k(1)*y(1)+k(2)*y(2)*y(3);
f(2)=k(1)*y(1)-k(2)*y(2)*y(3)-k(3)*y(2)^2;
f(3)=k(3)*y(2)^2;
endfunction
// Programa principal
txt=[to=;yo=;t=];
valor=x_mdialog(Forne
ca informa
c~
oes,txt,[0;[1;0;0];[0:0.1:10]])
t0=evstr(valor(1));
y0=evstr(valor(2)); t=evstr(valor(3));
//%ODEOPTIONS=[itask,tcrit,h0,hmax,hmin,jactyp,mxstep,maxordn,maxords,ixpr,ml,mu]
%ODEOPTIONS=[1,0,0,%inf,0,2,500,12,5,1,-1,-1]; // printevel=1;
y=ode(y0,t0,t,fun);
xbasc();
subplot(311),plot2d(t,y(1,:));
subplot(312),plot2d(t,y(2,:));
subplot(313),plot2d(t,y(3,:));
xselect()
Tabela 6: Exemplo 2 de utilizac
ao da func
ao ode
4.4
Sistemas de Equa
c
oes Diferenciais Ordin
arias(EDO)
59
mode(-1);
// An
alise de diagrama de fase
function fun=funcao(t,x)
fun(1)=x(1)+2*x(2);
fun(2)=-2*x(1)+x(2);
endfunction
// Programa Principal
t=[0:0.01:20]; t0=0;
x0=[-3;3];[x1] = ode(x0,t0,t,funcao);
x0=[-2;3];[x2] = ode(x0,t0,t,funcao);
x0=[-1; 3];[x3] = ode(x0,t0,t,funcao);
x0=[1; 3];[x4] = ode(x0,t0,t,funcao);
x0=[2; 3];[x5] = ode(x0,t0,t,funcao);
x0=[3; 3];[x6] = ode(x0,t0,t,funcao);
x0=[-3; -3];[x7] = ode(x0,t0,t,funcao);
x0=[-2; -3];[x8] = ode(x0,t0,t,funcao);
x0=[-1; -3];[x9] = ode(x0,t0,t,funcao);
x0=[1; -3];[x10] = ode(x0,t0,t,funcao);
x0=[2; -3];[x11] = ode(x0,t0,t,funcao);
x0=[3; -3];[x12]=ode(x0,t0,t,funcao);
xbasc();xset(font size,12)
plot2d(x1(1,:),x1(2,:));plot2d(x2(1,:),x2(2,:));
plot2d(x3(1,:),x3(2,:));plot2d(x4(1,:),x4(2,:));
plot2d(x5(1,:),x5(2,:));plot2d(x6(1,:),x6(2,:));
plot2d(x7(1,:),x7(2,:));plot2d(x8(1,:),x8(2,:));
plot2d(x9(1,:),x9(2,:));plot2d(x10(1,:),x10(2,:));
plot2d(x11(1,:),x11(2,:));plot2d(x12(1,:),x12(2,:));
xtitle(Plano de Fase);xselect();
Tabela 7: Exemplo 3 de utilizac
ao da func
ao ode: Retrato de fase
4.4
Sistemas de Equa
c
oes Diferenciais Ordin
arias(EDO)
60
ipar
todos pontos no contorno devem ser pontos na malha em todas malhas usadas,
veja descri
c~
ao de ipar(11) e fixpnt abaixo.
: Um vetor de inteiros com dimens~
ao de no m
nimo 11. A lista de par^
ametros
em ipar e seus significados s~
ao renomeados em bvode; seus novos nome s~
ao
dados em par^
enteses.
ipar(1)
= 0 se o problema
e linear, 1 se o problema
e n~
ao linear
4.4
Sistemas de Equa
c
oes Diferenciais Ordin
arias(EDO)
61
= n
umero de pontos de coloca
c~
ao por subintervalo (= k) onde
max m(i) <= k <= 7 .
Se ipar(2)=0 ent~
ao bvode faz
k = max ( max m(i)+1, 5-max m(i) )
ipar(3)
= n
umero de subintervalos na malha inicial (= n).
Se ipar(3) = 0 ent~
ao bvode arbitrariamente faz n = 5.
ipar(4)
= n
umero de toler^
ancias para solu
c~
oes e derivadas.
(= ntol) exige-se 0 < ntol <= mstar.
ipar(5)
= dimens~
ao de fspace (= ndimf) um vetor real de trabalho.
Sua dimens~
ao representa uma restri
c~
ao sobre nmax.
escolha ipar(5) de acordo com a f
ormula: ipar(5)>=nmax*nsizef
onde:
nsizef=4+3*mstar+(5+kd)*kdm+(2*mstar-nrec)*2*mstar .
ipar(6)
= dimens~
ao de ispace (= ndimi) um vetor inteiro de trabalho.
Sua dimens~
ao representa restri
c~
ao sobre nmax, o n
umero m
aximo de
subintervalos. Escolha ipar(6) de acordo coma formula:
ipar(6)>=nmax*nsizei
onde:
nsizei=3+kdm com kdm=kd+mstar; kd=k*ncomp;
nrec=n
umero de condi
c~
oes de contorno a direita.
ipar(7) controle de sa
da de resultados (= iprint)
= -1 para impress~
ao completa de diagn
ostico
= 0 para impress~
ao restrita
= 1 para nenhuma impress~
ao
4.4
Sistemas de Equa
c
oes Diferenciais Ordin
arias(EDO)
ipar(8)
62
(= iread)
= 0 faz bvode gerar malha inicial uniforme.
= xx Outros valores ainda n~
ao implementados no Scilab
= 1 Se a malha inicial
e fornecida pelo usu
ario. Ela
e definida em
fspace como segue: a malha ocupar
a fspace(1), ..., fspace(n+1).
O usu
ario necessitar
a suprir apenas os pontos interiores
fspace(j) = x(j), j = 2, ..., n.
= 2 se a malha inicial
e fornecida pelo usu
ario com ipar(8)=1, e nenhuma
sele
c~
ao de malha adaptativa
e feita.
ipar(9)
(= iguess )
= 0 se nenhuma estimativa para a solu
c~
ao
e fornecida.
= 1 se estimativa inicial
e fornecida pelo usu
ario na subrotina guess.
= 2 se uma malha inicial e coeficientes de solu
c~
ao aproximados s~
ao
fornecidos pelo usu
ario em fspace. (o primeiro e novo mesh s~
ao
os mesmos).
= 3 se a malha inicial e os coeficientes de solu
c~
ao aproximada s~
ao
fornecidos pelo usu
ario em fspace, e a nova malha
e para ser
tomada duas vezes mais robusta; i.e., a cada segunda ponto da
malha inicial.
= 4 se al
em da malha inicial e dos coeficientes de solu
c~
ao aproximada,
uma nova malha
e fornecida em fspace. (veja descri
c~
ao de sa
da
para outros detalhes sobre iguess = 2, 3, e 4.)
ipar(10)
= 0 se o problema
e regular
= 1 se o primeiro fator de relaxamento
e =rstart, e a intera
c~
ao n~
ao
linear n~
ao se baseia em converg^
encia passada (use somente para
problemas n~
ao lineares extra sens
veis).
= 2 se deseja-se retornar imediatamente ap
os (a) duas situa
c~
oes de
n~
ao converg^
encia sucessivas, ou (b) ap
os obter estimativa de erro
pela primeira vez.
ipar(11) = n
umero de pontos fixos na malha al
em de aleft e aright.
(= nfxpnt, a dimens~
ao de fixpnt)
o c
odigo requer que todas as outras condi
c~
oes de contorno, al
em de
aleft e aright,
(veja descri
c~
ao de zeta) sejam inclu
das como pontos fixos em fixpnt.
ltol um vetor de dimens~
ao ipar(4). ltol(j)=l especifica que a j-
esima toler^
ancia
em tol controla o erro no l-
esimo componente de z(u). Tamb
em requer que:
1 <= ltol(1) < ltol(2) < ... < ltol(ntol) <= mstar
tol um vetor de dimens~
ao ipar(4). tol(j)
e a toler^
ancia do erro no ltol(j)-
esimo
componente de z(u).
Assim, o c
odigo tenta satisfazer y para j=1:ntol em cada subintervalo
abs(z(v)-z(u))
<=
tol(j)*abs(z(u))
+tol(j)
ltol(j)
ltol(j)
se v(x)
e o vetor de solu
c~
ao aproximada.
fixpnt um vetor de dimens~
ao ipar(11). Ele cont
em os outros pontos al
em de aleft e
aright, que devem ser inclu
dos em cada mesh.
externals as fun
c~
oes fsub,dfsub,gsub,dgsub,guess s~
ao externos ao Scilab
(veja sintaxe abaixo) ou o nome de uma subrotina Fortran
4.4
Sistemas de Equa
c
oes Diferenciais Ordin
arias(EDO)
63
A interface da fun
c~
ao em Fortran com bvode s~
ao especificadas no
arquivo fcol.f, dispon
vel na distribui
c~
ao Scilab.
fsub
nome de uma subrotina para avalia
c~
ao. [f]=fsub(x,z) onde f
e o vetor
contendo o valor de fi(x,z(u)) no i-
esimo componente
dfsub nome da subrotina para avalia
c~
ao do Jacobiano de f(x,z(u)) no ponto x.
[df]=dfsub (x, z) onde z(u(x))
e definida analogamente aquele para
fsub e a matriz df com dimens~
ao (ncomp ) por (mstar) deve conter as
derivadas parciais de f, para uma chamada calcula-se
df(i,j) = dfi / dzj, i=1,...,ncomp
j=1,...,mstar.
gsub nome de subrotina para avalia
c~
ao do i-
esimo componente de
g(x,z(u(x)))=g(zeta(i),z(u(zeta(i)))) no ponto x=zeta(i) onde 1<=i<=mstar.
[g]=gsub(i,z) onde z(u)
e id^
entico aquele de fsub, e i e g=gi s~
ao como acima.
Note que diferentemente de f em fsub, aqui somente um valor por chamada
retorna em g.
dgsub nome da subrotina para avalia
c~
ao da i-
esima linha do Jacobiano de g(x,u(x)).
[dg]=dgsub (i, z) onde z(u)
e o memso de fsub, i
e id^
entico a gsub e o vetor
dg de dimens~
ao mstar possui derivadas parciais de g.
guess nome de subrotina para avaliar aproxima
c~
ao inicial para z(u(x)) e para
dmval(u(x))= vetor de mj-
esima derivadas de u(x). [z,dmval]= guess(x).
Note que essa subrotina
e usada somente se ipar(9) = 1 ent~
ao todos os mstar
componentes de z e ncomp componentes de dmval devem ser especificados para
qualquer x, aleft <= x <= aright.
O script a seguir aplica esse codigo para a resoluc
ao do problema:
deff(df=dfsub(x,z),df=[0,0,-6/x**2,-6/x])
deff(f=fsub(x,z),f=(1 -6*x**2*z(4)-6*x*z(3))/x**3)
deff(g=gsub(i,z),g=[z(1),z(3),z(1),z(3)];g=g(i))
deff(dg=dgsub(i,z),[dg=[1,0,0,0;0,0,1,0;1,0,0,0;0,0,1,0];
dg=dg(i,:)])
deff([z,mpar]=guess(x),z=0;mpar=0)
deff(u=trusol(x),[
u=0*ones(4,1);
u(1) = 0.25*(10*log(2)-3)*(1-x) + 0.5 *( 1/x
+ (3+x)*log(x) - x)
u(2) = -0.25*(10*log(2)-3)+ 0.5 *(-1/x^2 + (3+x)/x
+ log(x) - 1)
u(3) = 0.5*( 2/x^3 + 1/x
- 3/x^2)
u(4) = 0.5*(-6/x^4 - 1/x/x + 6/x^3)])
fixpnt=0;m=4;
ncomp=1;aleft=1;aright=2;
zeta=[1,1,2,2];
ipar=zeros(1,11);
ipar(3)=1;ipar(4)=2;ipar(5)=2000;ipar(6)=200;ipar(7)=1;
ltol=[1,3];tol=[1.e-11,1.e-11];
res=aleft:0.1:aright;
4.4
Sistemas de Equa
c
oes Diferenciais Ordin
arias(EDO)
64
z=bvode(res,ncomp,m,aleft,aright,zeta,ipar,ltol,tol,fixpnt,...
fsub,dfsub,gsub,dgsub,guess)
z1=[];for x=res,z1=[z1,trusol(x)]; end;
z-z1
Pode-se verificar que o codigo bvode(), embora poderoso, possui complexidade de parametros
para a sua utilizacao mais abrangente. Uma outra possibilidade para a soluc
ao de PVC e aplicar
o metodo das diferencas finitas, como exposto a seguir.
Considere a EDO de 2a ordem mostrada na Equac
ao 4.8 que descreve a variac
ao da temperatura ao
longo de um trocador de calor tubular, com o fluido escoando da direita para a esquerda, entrando
no trocador a uma temperatura conhecida e saindo na mesma temperatura da parede do tubo:
Pe
d d2
+
2N u = 0
dx dx2
x = 0; = 0
x = X; = 1
(4.8)
yj
yj+1 yj1
2h
yj+1 2yj + yj1
h2
(4.9)
(4.10)
Tem-se:
(2 P eh)j1 4(N uh2 + 1)j + (2 + P eh)j+1 = 0, j = 1, . . . , J 1
(4.11)
onde N e o n
umero de subintervalos criados na discretizac
ao, cada qual com comprimento h dado
por h = X/N , neste caso. A Equacao 4.11 e aplicada para j=1,...,N-1 pois conhece-se o valor
da variavel dependente para o primeiro (x=0) e para o u
ltimo ponto (x=1). Obtem-se, deste
processo, um sistema de equacoes algebricas lineares neste caso, podendo aplicar-se os metodos ja
estudados anteriormente na sua soluc
ao. Empregaremos o m
etodo de Gauss-Seidel na soluc
ao
deste problema, cujo script de implementac
ao no Scilab e mostrado a seguir:
clear;
//
// Implementado por Adilson J. de Assis
//
function [fi,kk]=pvc(xrange,fi0bound,fiLbound,epsilon,nmax)
n = length(xrange);
h = (xrange(n)-xrange(1))/(n-1);
//estimativa inicial de fi e fik (var. auxiliar)
fi =ones(n);
fik=ones(n)
//condi
c~
oes de contorno
4.4
Sistemas de Equa
c
oes Diferenciais Ordin
arias(EDO)
fi(1) = fi0bound;
fi(n) = fiLbound;
printf(itera
c~
oes iniciadas...aguarde!\n\n);
for k=1:nmax
ke = 0; kk = k;
//imprime a itera
c~
ao se for m
ultipla de 10, inclusive.
if modulo(kk,10) == 0 then
printf(A itera
c~
ao atual
e %g.\n,k);
end;
for j = 2:n-1
fik(j) = ((2-Pe*h)*fi(j-1)+(2+Pe*h)*fi(j+1))/(4*(Nu*h^2+1));
if abs(fik(j)-fi(j)) > epsilon then
ke = ke + 1;
end
fi(j)=fik(j);
end;
if ke == 0 then
break
end
end
if kk == nmax then
printf(O n
umero m
aximo de itera
c~
oes %g foi alcan
cado \n\n,kk);
end
endfunction
Pe = 1;
Nu = 1;
u0 = 0;
uL = 1;
nmax = 10000;
epsilon = 1e-6;
J = 4;
X = 4;
h = X/J;
x1 = [0:h:X];
x2 = [0:h/2:X];
x3 = [0:h/4:X];
x4 = [0:h/8:X];
x5 = [0:h/16:X];
x6 = [0:h/32:X];
[u1,k1] = pvc(x1,u0,uL,epsilon,nmax);
[u2,k2] = pvc(x2,u0,uL,epsilon,nmax);
[u3,k3] = pvc(x3,u0,uL,epsilon,nmax);
[u4,k4] = pvc(x4,u0,uL,epsilon,nmax);
[u5,k5] = pvc(x5,u0,uL,epsilon,nmax);
65
4.5
Introdu
c
ao `
a Otimiza
c
ao
66
[u6,k6] = pvc(x6,u0,uL,epsilon,nmax);
ktot = [k1 k2 k3 k4 k5 k6];
xbasc();
plot2d(x1,u1,-1);
plot2d(x2,u2,-1);
plot2d(x3,u3,1);
plot2d(x4,u4,1);
plot2d(x5,u5,1);
plot2d(x6,u6,1);
xtitle(Solu
c~
ao Num
erica da Eq. do calor);
4.5
Introduc
ao `
a Otimizac
ao
Ajuste de Modelos: M
etodo dos Mnimos Quadrados
4.5
Introdu
c
ao `
a Otimiza
c
ao
67
1.0
0.9
0.8
0.7
+
0.6
0.5
+
+
0.4
0.3
+
0.2
+
+
0.1
0
0.4
+
+
0.8
1.2
1.6
2.0
2.4
2.8
3.2
3.6
4.0
serem determinados. Ou seja, com tres pontos experimentais para y e x pode-se estimar um modelo que tenha no maximo tres parametros. Existem varios criterios que podem ser usados para a
estimativa dos parametros de um modelo com a utilizac
ao de dados experimentais, eles baseiam-se
na definicao de um erro, j , para cada ponto experimental. Assim, em um conjunto de p pontos experimentais pode-se definir o erro j , j = 1, . . . p. como sendo a diferenca entre os dados
experimentais Yj e os valores preditos pelo modelo, yj (x),
j = Yj yj , j = 1 . . . p
Dentre os varios criterios de ajuste, o problema de minimizac
ao do somatorio do quadrado dos
erros, e um dos mais utilizados pois amplifica erros grandes muito mais do que os erros pequenos.
Esse criterio baseia-se na funcao objetivo,
f=
p
X
j 2
(4.12)
j=1
n
X
i=0
i xi , xo = 1
(4.13)
4.5
Introdu
c
ao `
a Otimiza
c
ao
68
(4.14)
y = o xo + 1 x1 + 2 x2 , com xo = 1, x1 = x, x2 = x2
(4.15)
b=
o
1
..
.
Y=
Y1
Y2
..
.
X=
Yp
(4.16)
Exemplo : Aplica
c
ao do M
etodo dos Mnimos quadrados
Deseja-se ajustar um modelo quadratico y = 0 + 1 x + 2 x2 utilizando-se o conjunto de dados
experimentais abaixo:
x
Y
20
73
20
78
30
85
40
90
40
91
50
87
50
86
50
91
60
75
70
65
X=
e determinar-se o vetor b.
xo x x2
1
1
1
1
1
1
1
1
1
1
20
20
30
40
40
50
50
50
60
70
202
202
302
402
402
502
502
502
602
702
(4.17)
(4.18)
4.5
Introdu
c
ao `
a Otimiza
c
ao
69
4.5.2
(4.19)
4.5
Introdu
c
ao `
a Otimiza
c
ao
70
4.5
Introdu
c
ao `
a Otimiza
c
ao
71
4.5
Introdu
c
ao `
a Otimiza
c
ao
72
4.6
Solu
c
ao de equa
c
oes alg
ebrico-diferenciais
73
4.6
Solu
c
ao de equac
oes alg
ebrico-diferenciais
Seja o sistema descrito pela seguintes equac
oes algebrico-diferenciais(de Assis, 2003):
dy1
= 0
dt
dy2
0, 04y1 1 104 y2 y3 3 107 y22
= 0
dt
y1 + y2 + y3 1 = 0
0, 04y1 + 1 104 y2 y3
(4.20)
e dada por:
F
F
+ cj
y
y
0, 04 cj
1 104 y3
1 104 y2
0, 04
1 104 y3 2 3 107 y2 cj 1 104 y2
1
1
1
= [0, 04
0]T
0, 04 0]T
clc
clf()
function [r,ires]=chemres(t,y,yd)
r(1)=-0.04*y(1)+1d4*y(2)*y(3)-yd(1);
(4.21)
4.7
Solu
c
ao de Equa
co
es Diferenciais Parciais (EDPs) por diferen
cas finitas
74
r(2)=0.04*y(1)-1d4*y(2)*y(3)-3d7*y(2)*y(2)-yd(2);
r(3)=y(1)+y(2)+y(3)-1;
ires=0;
endfunction
y0=[1;0;0];
yd0=[-0.04;0.04;0];
t=[1.d-5:0.02:.4,0.41:.1:4,4.1:1:15];
y=dassl([y0,yd0],0,t,chemres);
xbasc();
subplot(131),
plot2d(y(1,:),y(2,:),16,021);
xtitle(Comportamento - y(1),
,
subplot(132),
plot2d(y(1,:),y(3,:),-6,021);
xtitle(Comportamento - y(2),
,
subplot(133),
plot2d(y(1,:),y(4,:),9,021);
xtitle(Comportamento - y(3),
,
);
);
);
function [pd]=chemjac(x,y,yd,cj)
pd=[-0.04-cj , 1d4*y(3)
, 1d4*y(2);
0.04
,-1d4*y(3)-2*3d7*y(2)-cj ,-1d4*y(2);
1
, 1
, 1
];
endfunction
4.7
Solu
c
ao de Equac
oes Diferenciais Parciais (EDPs) por diferencas finitas
Exemplo: Equa
c
oes Elpticas: Equa
c
ao de Laplace Consideremos a soluc
ao de uma
EDP elptica, a Equacao de Laplace, mostrada a seguir juntamente com as condic
oes de contorno
4.7
Solu
c
ao de Equa
co
es Diferenciais Parciais (EDPs) por diferen
cas finitas
Comportamento - y(1)
Comportamento - y(2)
3.600e-005
3.162e-005
2.725e-005
2.288e-005
0.9900
0.9688
0.9475
0.9263
1.850e-005
0.9050
0.8838
1.412e-005
0.8625
9.750e-006
0.8413
5.375e-006
0.8200
1.000e-006
1.00 3.17 5.33 7.50 9.6711.8314.00
75
Comportamento - y(3)
0.1800
0.1588
0.1375
0.1163
0.0950
0.0737
0.0525
0.0313
0.0100
2u 2u
+ 2 =0
x2
y
u(0, y) = 0
u(1, y) = 1
u(x, 0) = 1 x2
u(x, 1) = 0
(4.22)
A celula de discretizacao para o domnio considerado esta mostrada na Figura 18, onde se consideraram divisoes iguais para o domnio em x (I=5) e em y (J=5). Lembrar que conforme nossa
nomenclatura, a variacao na direcao x e representada pelo ndice i e a variac
ao em y pelo ndice j.
Os pontos marcados com sao aqueles cuja soluc
ao e conhecida dada pelas condic
oes de contorno.
4.7
Solu
c
ao de Equa
co
es Diferenciais Parciais (EDPs) por diferen
cas finitas
76
u=1
u=0
y=
u=0
y
x
0,8
0,6
0,4
0,2
0
0
u=1x2
x= 0
ui,j+1
ui1,j
ui+1,j
ui,j1
(4.23)
Neste exemplo u e conhecido em todos os pontos de fronteira, nao aparecendo u fictcio. O script
(de Assis, 2003) a seguir implementa no Scilab a solucao deste problema, mostrada na forma grafica
3D na Figura 19 e as linhas de contorno na Figura 2024 .
24
Como o Scilab n
ao permite indexar vetores e matrizes a partir do zero, ou seja, fazer u(0,j), que aparecer
a na
Equaca
o 4.23 quando se aplicar i=1, deve-se incrementar tais ndices, iniciando os lacos a partir de i=2 e j=2 e
terminando em i=I e j=J. Do mesmo modo, como o I e o J est
ao sendo definidos a partir dos intervalos de x e y,
sendo calculados a partir do comando length(), que fornece a quantidade de elementos em um vetor, ou a dimens
ao
do vetor (ou matriz). Como I = n-1 e J = m -1, o fim dos lacos est
ao definidos por estes valores.
4.7
Solu
c
ao de Equa
co
es Diferenciais Parciais (EDPs) por diferen
cas finitas
clear;
function [u,kk]=laplacepde(xrange,yrange,ux1,uxn,uy1,uym,epsilon,nmax)
n = length(xrange); m = length(yrange);
Dx = (xrange(n)-xrange(1))/(n-1);
Dy = (yrange(m)-yrange(1))/(m-1);
//estimativa inicial de u e uk (var. auxiliar)
u = ones(n,m); uk = ones(n,m);
//condi
c~
oes de contorno
u(:,1) = uy1; u(:,m) = uym;
u(1,:) = ux1; u(n,:) = uxn;
printf(itera
c~
oes iniciadas...aguarde!\n\n);
for k=1:nmax
ke = 0; kk = k;
//imprime a itera
c~
ao se for m
ultipla de 10, inclusive.
if modulo(kk,10) == 0 then
printf(A itera
c~
ao atual
e %g.\n,k);
end;
for i = 2:n-1
for j = 2:m-1
uk(i,j) = ...
(Dx^2*(u(i,j-1)+u(i,j+1))+Dy^2*(u(i-1,j)+u(i+1,j)))/(2*(Dx^2+Dy^2));
if abs(uk(i,j)-u(i,j)) > epsilon then
ke = ke + 1;
end
u(i,j)=uk(i,j);
end;
end;
if ke == 0 then
break
end
end
if kk == nmax then
printf(O n
umero m
aximo de itera
c~
oes %g foi alcan
cado \n\n,kk);
end
endfunction
x = [0:0.05:1]; y = [0:0.05:1];
ux1 = zeros(y); uxn = ones(y); uy1 = 1-x^2; uym = zeros(x);
nmax = 1000;
epsilon = 1e-4;
[u,k] = laplacepde(x,y,ux1,uxn,uy1,uym,epsilon,nmax);
k
77
5 Aspectos Complementares
78
plot3d(x,y,u,45,45,x@y@u(x,y))
xtitle(Solu
c~
ao Num
erica da Eq. de Laplace);
pause
contour(x,y,u,10);
xtitle(Solu
c~
ao num
erica para a Eq. de Laplace,x,y);
u(x,y)
1.0
0.5
0.0
0.0
0.0
0.5
0.5
x
1.0
1.0
Aspectos Complementares
5.1
Sistemas de Controle
79
0.091
0.7
0.182
0.273
0.6
0.364
0.727 0.818 0.909
0.5
0.455
0.636
0.545
0.4
0.3
0.2
0.636
0.1
0.545
0.727
0.455
0.3640.273
0.182
0.818
0.909
0.0
0.0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1.0
5.1
Sistemas de Controle
5.1.1
Representa
c
ao de Modelos Lineares no Scilab
5.1
Sistemas de Controle
80
1. Espaco de Estados
Sistemas contnuos no tempo
Sistemas discretos no tempo
2. Funcoes de Transferencias
Domnio de Laplace
Domnio da Transformada Z
3. Polos.
4. freq
uencia.
A definicao de um sistema linear no Scilab e feita com a func
ao syslin, que define um sistema
linear como uma lista (list) e verifica a consistencia de dados. Sistemas lineares definidos como
syslin podem ser manipulados com as operac
oes usuais existentes para as matrizes (concatenac
ao,
extracao, transposta, multiplicacao etc) sejam nas representac
oes no espaco de estado, sejam na
representacao de funcoes de transferencia. A maioria das func
oes no espaco de estado recebem uma
lista syslin como entrada ao inves das matrizes A, B, C e D que definem o sistema.
dx
= Ax + Bu
dt
y = Cx + Du
x(0) = x0
(5.1)
(5.2)
(5.3)
Com os parametros:
dom
A,B,C,D
x0
N, D
H
sl
5.1
Sistemas de Controle
Exemplos
>A=[0,1;0,0];
>B=[1;1];
>C=[1,1];
>S1=syslin(c,A,B,C)
S1 =
S1(1) (state-space system:)
!lss A B C D X0 dt !
S1(2) = A matrix =
! 0. 1. !
! 0. 0. !
S1(3) = B matrix =
! 1. !
! 1. !
S1(4) = C matrix =
! 1. 1. !
S1(5) = D matrix =
0.
S1(6) = X0 (initial state) =
! 0. !
! 0. !
S1(7) = Time domain =
c
>S1(A)
ans =
! 0. 1. !
! 0. 0. !
>S1(X0), S1(dt)
ans =
! 0. !
! 0. !
ans =
c
>s=poly(0,s);
>D=s;
>S2=syslin(c,A,B,C,D)
S1 =
S1(1) (state-space system:)
!lss A B C D X0 dt !
S1(2) = A matrix =
! 0. 1. !
! 0. 0. !
S1(3) = B matrix =
! 1. !
! 1. !
81
5.1
Sistemas de Controle
82
S1(4) = C matrix =
! 1. 1. !
S1(5) = D matrix =
s
S1(6) = X0 (initial state) =
! 0. !
! 0. !
S1(7) = Time domain =
c
>H1=(1+2*s)/s^2,
H1 =
1 + 2s
-----2
s
>S1bis=syslin(c,H1)
S1bis =
1 + 2s
-----2
s
>H2=(1+2*s+s^3)/s^2,
H2 =
3
1 + 2s + s
---------2
s
>S2bis=syslin(c,H2);
>S1+S2; // Soma os sistemas S1 e S2
>[S1,S2]; // Concatenacao
>ss2tf(S1)-S1bis; // Transforma S1 e subtrai S1bis
>S1bis+S2bis;
>S1*S2bis;
>size(S1)
ans =
! 1. 1. !
Conforme visto no exemplo acima, a convers
ao de um sistema com representac
ao no espaco de
estado para funcao de transferencia foi feita com a func
ao ss2tf. O Scilab possui um conjunto de
funcoes para conversao entre modelos na forma syslin(SS), func
ao de transferencia (TF), Matriz
25
de FT (POL), matriz de sistema (SM) e forma descriptor (DES) entre outros.
As principais sao:
25
Sm =
sE + A
C
B
D
5.1
Sistemas de Controle
83
ss2tf
tf2ss
tf2des
pol2des
ss2des
des2tf
frep2tf
imrep2ss
markp2ss
sm2des
sm2ss
ss2ss
SS para TF
TF para SS
TF para DES
POL para DES
SS para DES
DES para TF
Resposta frequencial para TF
Resposta impulso para SS
Par
ametros de Markov para SS
SM para DES
SM para SS
SS para SS, feedback, injec
ao
So como ilustracao, a discretizacao de sistemas contnuos para gerar os sistemas discretos no tempo
pode ser implementada atraves das func
oes:
dscr
bilin
discretizac
ao de sistema linear
transformac
ao bilinear
Mais detalhes sobre outras funcoes do Scilab e aspectos avancados da sua utilizac
ao em Controle
de Processos, favor contactar o autor desse material para solicitar os proximos captulos e as atualizacoes desse texto. Analogamente ao apresentado para as outras areas de aplicac
ao do Scilab,
para os sistemas de controle existem uma grande variedade de pacotes ja desenvolvidos e de func
oes.
Entretanto, sempre sera possvel, o desenvolvimento de func
oes de uso pessoal para a criac
ao de
pacotes personalidades de funcoes (sejam pacotes de scripts, ou de codigos ja compilados em C ou
Fortran). O script a seguir e uma demonstrac
ao de como se pode avaliar a matriz de ganho de um
sistema linear26 .
//------------------------------------------------// Compute low frequency (DC) gain of LTI systems
//------------------------------------------------// Luis Cl
audio Oliveira Lopes,
// Uberl^
andia, UFU, Abril 2004
// version 0
function [K]=dcgain(varargin)
// K=dcgain(dom,G)
// K=dcgain(dom,A,B,C,D)
26
6 Conclus
ao
84
Conclus
ao
6 Conclus
ao
85
RESUMO INCOMPLETO DAS FUNC
OES
DO SCILAB
86
Algebra
Linear
Calculo Polinomial
Sistemas e Controle
Controle Robusto
Otimizacao e simulac
ao
Processamento de Sinal
Modelagem Arma e simulac
ao
Metanet: Grafos e Redes
Scicos: Diagrama de Blocos e simulador
Manuseio de arquivos de Som
Linguagem ou traduc
ao de dados
PVM paralelo
Interface TdCs TCL/Tk
Estatstica
Funcoes de Distribuic
ao Cumulativa
Identificacao
1. Funco
es Elementares
abs - valor absoluto
addf - adicao simbolica
acos - arco cosseno
acosm - matriz do arco cosseno
acosh - arco cosseno hiperbolico
acoshm - matriz do arco cosseno hiperbolico
asin - arco seno
asinh - arco seno hiperbolico
asinhm - matriz do arco seno hiperbolico
asinm - matriz do arco seno
atan - arco tangente no 2o. e 4o quadrantes
atanh - arco tangente hiperbolico
atanhm - matriz do arco tangente hiperbolico
atanm - matriz quadrada do arco tangente
besseli - funcao de Bessel Modificada do Primeiro Tipo e ordem , I
RESUMO INCOMPLETO DAS FUNC
OES
DO SCILAB
imult - multiplicacao de um n
umero por i, i = 1
int - parte inteira
integrate - integracao por quadratura
interp - interpolacao
interpln - interpolacao linear
intersect - retorna um vetor com valores comuns entre dois vetores
intsplin - integracao de dados experimentais por interpolac
ao spline
inttrap - integracao de dados experimentais por interpolac
ao trapezoidal
isdef - verifica a existencia de uma vari
avel
isequal - comparacao de objetos
87
RESUMO INCOMPLETO DAS FUNC
OES
DO SCILAB
88
RESUMO INCOMPLETO DAS FUNC
OES
DO SCILAB
2. Funco
es de Entrada-Sada
diary - diario da secao
disp - mostra variaveis
dispfiles - mostra propriedades de arquivos abertos
file - gerenciamento de arquivo
fileinfo - fornece informacoes sobre um arquivo
fprintf - emula a funcao fprintf da linguagem C
fprintfMat - imprime uma matriz em um arquivo
fscanf - leitura formatada de um arquivo
fscanfMat - ler uma matriz de um arquivo texto
getio - unidade logica de entrada/sada para Scilab
input - pede entrada de informacoes via teclado
isdir - verifica se o argumento e e um diretorio existente
89
RESUMO INCOMPLETO DAS FUNC
OES
DO SCILAB
90
RESUMO INCOMPLETO DAS FUNC
OES
DO SCILAB
91
3. Funco
es Gr
aficas
RESUMO INCOMPLETO DAS FUNC
OES
DO SCILAB
92
RESUMO INCOMPLETO DAS FUNC
OES
DO SCILAB
93
RESUMO INCOMPLETO DAS FUNC
OES
DO SCILAB
xlfont - carrega uma fonte no contexto grafico e coloca na fila a fonte carregada
xload - carrega uma grafico salvo
xname - muda o nome da janela grafica corrente
xnumb - traca n
umeros
xpause - suspende Scilab
xpoly - faz o grafico de um polinomio (polyline) ou de um polgono
xpolys - faz o grafico de um conjunto de polinomios (polylines) ou de polgonos
xrect - faz um retangulo
xrects - faz ou preenche um conjunto de retangulos
xrpoly - traca um polgono regular
xs2fig - manda grafico para arquivo em formato do Xfig
xs2gif - manda grafico para arquivo em formato GIF
xs2ppm - manda grafico para arquivo em formato PPM
xs2ps - manda grafico para arquivo em formato PS
xsave - salva grafico para um arquivo
xsegs - traca segmentos desconectados
xselect - seleciona janela grafica corrente
xset - define valores do contexto grafico
xsetech - define a sub-janela de uma janela para fazer o grafico
xsetm - janela para definir valores do contexto grafico
xstring - apresenta strings em janela grafica
xstringb - apresenta strings em uma caixa
xstringl - calcula caixa que englobe strings
xtape - fixa o processo de gravacao para graficos
xtitle - adiciona ttulos em uma janela grafica a e aos eixos X e Y
zgrid - linhas (grid) no plano-z
4. Funco
es da Algebra
Linear
aff2ab - funcao linear (affine) para convers
ao para A, b
balanc - balanceie (melhora condicionamento) de matriz ou pencil
bdiag - diagonalizacao em bloco, vetor caracterstico (autovetor) generalizado
chfact - fatoracao esparsa de Cholesky
chol - fatoracao de Cholesky
chsolve - solver esparso de Cholesky
classmarkov - classes recorrente e transiente de matriz de Markov
coff - resolvente (metodo do cofator)
colcomp - compressao de coluna, n
ucleo (kernel ) e nullspace
companion - matriz companion
cond - n
umero de condicionamento
det - determinante
eigenmarkov - vetor caracterstico (autovetor) normalizado de Markov a esquerda e direita
ereduc - calcula a forma de matriz column echelon por transformac
oes QZ
exp - calcula exponencial de elemento
expm - calcula exponencial de matriz quadrada
fstair - calcula a forma de pencil column echelon por transformac
oes QZ
fullrf - fatoracao de posto completo (full rank factorization)
94
RESUMO INCOMPLETO DAS FUNC
OES
DO SCILAB
95
RESUMO INCOMPLETO DAS FUNC
OES
DO SCILAB
5. Funco
es para Desenvolvimento de Programas
abort - interrompe avaliacao
ans - answer
\ - divisao de matriz `a esquerda
bool2s - converte matriz booleana para matriz de zeros (false) e uns (true)
boolean - objetos do Scilab Objects, vari
aveis booleanas e operadores: &, |,
break - palavra para interromper loops
call - chamadas de rotinas em Fortran ou C
case - palavra usada em select
clear - apaga variavel da memoria
clearglobal - apaga variaveis globais da memoria
// - comentarios no Scilab, nao sao executados
date - data corrente em formato de string
debug - nvel de debugging
definedfields - retorna ndice campos definidos em list
else - palavra reservada em if-then-else
elseif - palavra reservada em if-then-else
[] - matriz vazia
end - palavra chave da linguagem do Scilab
errcatch - trapping erro
errclear - limpando erro
error - mensagens de erro
evstr - avaliacao de expressoes
exec - executa arquivo com script do Scilab
execstr - executa codigo Scilab em strings
exists - verifica a existencia de variaveis
exit - finaliza a sessao corrente do Scilab
feval - avaliacao m
ultipla
find - ache indices de matrizes ou vetores booleanos para elementos verdadeiros (true)
for - palavra reservada na linguagem para loops
format - formato de n
umero para impressao e apresentac
ao na tela
fort - chama rotinas de Fortran ou C
funptr - codificacao de primitivos (wizard )
getdate - fornece informacoes de data e hora
getenv - fornece o valor de uma variavel de ambiente
getfield - extracao de campo de list
getpid - fornece identificador de processo do Scilab
getversion - fornece versao do Scilab
global - define variavel global
gstacksize - fixa/recebe tamanho do stack global do Scilab
- exponencia
cao, tambem
host - execucao de comandos do Sistema Operacional
hypermat - inicializa uma matriz de dimensao N, ex. a(1,1,1,1:2)=[1 2]
96
RESUMO INCOMPLETO DAS FUNC
OES
DO SCILAB
97
RESUMO INCOMPLETO DAS FUNC
OES
DO SCILAB
98
6. Funco
es para Otimizac
ao e Simulac
ao
NDcost - funcao externa generica para determinac
ao do gradiente da func
ao optim usando diferencas finitas
bvode - problema de valor no contorno para equac
oes diferenciais ordinarias
dasrt - resolucao de equacoes algebrico-diferenciais com determinac
ao de superfcie de cruzamento
(zero crossing)
dassl - resolucao de equacoes algebrico-diferenciais
datafit - identificacao de parametros baseados em dados medidos
derivative - aproxima derivadas de uma func
ao
fit dat - identificacao de parametros baseados em dados medidos
fsolve - determinacao de solucao de sistema de equac
oes algebricas nao lineares
impl - resolucao de equacoes diferenciais lineares implcitas
int2d - integral definida 2D pelo metodo de quadratura e cubature
int3d - integral definida 3D pelo metodo de quadratura e cubature
intc - integral de Cauchy
intg - integral definida
intl - integral de Cauchy
karmarkar - algoritmo de Karmarkar
leastsq - resolucao de problemas de mnimos quadrados nao lineares
linpro - resolucao de problemas de programac
ao linear (LP)
lmisolver - resolucao de LMI (linear matrix inequality)
lmitool - ferramentas para resolucao de LMIs
numdiff - estimacao numerica de gradiente
ode - resolucao de equacoes diferenciais ordinarias (EDOs), problema de valor inicial (PVI)
ao no domnio do tempo discreto
ode discrete - resolucao de EDOs, simulac
ode root - resolucao de EDOs com soluc
ao de razes
odedc - resolucao de EDOs discretas/contnuas
odeoptions - define opcoes para integradores de EDOs
optim - resolucao do problema de otimizac
ao nao linear
quapro - resolucao do problema de programac
ao linear quadratico
semidef - resolucao do problema de programac
ao semi-definida
7. Funco
es para C
alculo Polinomial
bezout - equacao de Bezout para polinomios
clean - limpa matrizes (arredonda para zero valores muito pequenos)
cmndred - forma de denominador comum
coeff - coeficientes de matriz polinomial
coffg - inversa de matriz polinomial
colcompr - compressao de coluna de matriz polinomial
degree - grau de matriz polinomial
denom - denominador
derivat - derivada de matriz racional
determ - determinante de matriz polinomial
detr - determinante polinomial
RESUMO INCOMPLETO DAS FUNC
OES
DO SCILAB
99
8. Funco
es de Menus
addmenu - definicao de botao interativo ou menu
delmenu - apaga botao interativo ou menu
getvalue - janela para aquisicao de dados
halt - interrompe execucao
havewindow - retorna ao modo de janela do Scilab
keyboard - comandos do teclado
seteventhandler - define um manipulador de evento (event handler ) para a janela grafica corrente
setmenu - ativacao de botao interativo ou menu
unsetmenu - desativacao de botao interativo ou menu/submenu
x choices - janela de escolha interativa atraves de botoes
x choose - janela de escolha interativa
x dialog - janela de menu
x matrix - janela de menu de matrizes
x mdialog - janela de menu com varias linhas
x message - janela grafica com mensagem
x message modeless - apresenta janela de mensagem
Licen
ca do Scilab
100
C
opia da Licenca do Scilab
SCILAB License
**************
1- Preface
**********
The aim of this license is to lay down the conditions enabling you to
use, modify and circulate the SOFTWARE. However, INRIA and ENPC remain
the authors of the SOFTWARE and so retain property rights and the use
of all ancillary rights.
2- Definitions
**************
The SOFTWARE is defined as all successive versions of SCILAB software
and their documentation that have been developed by INRIA and ENPC.
SCILAB DERIVED SOFTWARE is defined as all or part of the SOFTWARE that
you have modified and/or translated and/or adapted.
SCILAB COMPOSITE SOFTWARE is defined as all or a part of the SOFTWARE
that you have interfaced with a software, an application package or a
toolbox of which you are owner or entitled beneficiary.
3- Object and conditions of the SOFTWARE license
************************************************
a) INRIA and ENPC authorize you free of charge, to reproduce the
SOFTWARE source and/or object code on any present and future support,
without restriction, providing the following reference appears in all
the copies: Scilab (c)INRIA-ENPC.
b) INRIA and ENPC authorize you free of charge to correct any bugs,
carry out any modifications required for the porting of the SOFTWARE
and to carry out any usual functional modification or correction,
providing you insert a patch file or you indicate by any other
equivalent means the nature and date of the modification or the
correction, on the corresponding file(s) of the SOFTWARE.
c) INRIA and ENPC authorize you free of charge to use the SOFTWARE
source and/or object code, without restriction, providing the
following reference appears in all the copies: Scilab (c)INRIA-ENPC.
d) INRIA and ENPC authorize you free of charge to circulate and
distribute, free of charge or for a fee, the SOFTWARE source and/or
object code, including the SOFTWARE modified in accordance with
Licen
ca do Scilab
101
" is prominently
code
Licen
ca do Scilab
102
source
Licen
ca do Scilab
and to have accepted all the rights and obligations of the present
license.
8- Binding effect
*****************
This license has the binding value of a contract.
You are not responsible for respect of the license by a third party.
9- Applicable law
*****************
The present license and its effects are subject to French law and the
competent French courts.
103
Bibliogr
aficas
104
Refer
encias
de Assis, A. J. (2003). Metodos numericos em engenharia qumica. Apostila de Curso de Metodos
Numericos. UFU/FEQUI/NUCOP.
Forbellone, A. L. V. (2000). L
ogica de programac
ao : a construc
ao de algoritmos e estruturas de
dados. Makron.
Guimaraes, A. M. & Lages, N. A. C. (1994). Algoritmos e Estruturas de Dados. Livros Tecnicos e
Cientficos Editora.
hitmill.com (2004). History of computers. http://www.hitmill.com/computers/computerhx1.html,
visitado em 25 de setembro de 2004.
Scilab.Group (1998).
Introduction to scilab:
Users guide.
Disponvel
http://scilabsoft.inria.fr/product/index product.php?page=old documentation.html.
em