-
UNIVERSIDADE FEDERAL DE GOIS & UNIVERSIDADE CATLICA DE
GOIS
ESCOLA DE ENGENHARIA ELTRICA E DE COMPUTAO
INTRODUO AO PROGRAMA "MATLAB"
COM APLICAES
Material elaborado por:
Prof. Dr. Antnio Csar Baleeiro Alves (UCG/UFG)
Prof. Dr. Enes Gonalves Marra (UFG)
Prof. Dr. Jos Wilson Lima Nerys (UFG)
Goinia GO
2007
-
2
SUMRIO
1 INTRODUO 5
2 UTILIZANDO O MATLAB 9
2.1 INICIAR O PROGRAMA 9
2.2 PASTA DE TRABALHO 10
2.3 TELA DA LINHA DE COMANDO DO MATLAB 11
2.4 CRIAO DE ARQUIVOS NO MATLAB 11
2.5 LIMITAES DO MATLAB 13
3 OPERADORES, CONSTANTES E CARACTERES ESPECIAIS 14
3.1 OPERADORES ARITMTICOS 14
3.2 CARACTERES ESPECIAIS 16
3.3 OPERADORES LGICOS 18
3.4 OPERADORES RELACIONAIS 19
3.5 CONSTANTES OU VARIVEIS 19
3.5.1 INF 20
3.5.2 NAN 20
3.5.3 IEEE 20
3.6 RECURSOS DE APOIO DA TELA DE COMANDO DO MATLAB 20
3.6.1 MENU FILE 20
3.6.2 MENU EDIT 21
4 COMANDOS DE PROPSITO GERAL 22
4.1 COMANDOS DE INFORMAO 22
4.2 COMANDOS DE OPERAO COM A MEMRIA DA REA DE TRABALHO
(WORKSPACE) 23
4.3 COMANDOS DE OPERAO COM FUNES E COMANDOS 24
4.4 COMANDOS DE OPERAO COM O CAMINHO DE DIRETRIOS 25
4.5 COMANDOS DE OPERAO COM A JANELA DE COMANDO 26
4.6 COMANDOS DE OPERAO COM O SISTEMA OPERACIONAL 27
5 COMANDOS BSICOS PARA MANIPULAO DE MATRIZES 29
6 FUNES MATEMTICAS ELEMENTARES 32
-
3
7 COMANDOS DE CONTROLE GRFICO 36
7.1 GRFICOS BIDIMENSIONAIS 36
7.2 GRFICOS TRIDIMENSIONAIS 38
8 OUTROS COMANDOS 39
8.1 FUNES LGICAS 39
8.2 FUNES DE CONTROLE DE FLUXO DE PROGRAMAO 40
8.3 FUNES DE CONTROLE DE BAIXO NVEL 44
8.4 FUNES ESPECIALIZADAS: MATEMTICAS, MATRICIAIS, LGEBRA LINEAR
45
8.5 FUNES DE INTEGRAO, INTERPOLAO E TRATAMENTO DE DADOS 45
8.6 FUNES DE CONTROLE DE CORES, IMAGENS E CARACTERES 45
9 PROGRAMANDO EM ARQUIVOS .M 46
9.1 EXEMPLOS DE APLICAO DE PROGRAMA '.M' 46
10 MATEMTICA SIMBLICA 51
10.1 USO DA MATEMTICA SIMBLICA 56
10.2 GRFICOS EM DUAS DIMENSES 57
10.3 GRFICOS EM TRS DIMENSES 58
11 SIMULINK 60
12 EXERCCIOS RESOLVIDOS 69
13 EXERCCIOS PROPOSTOS 78
14 BIBLIOGRAFIA 81
-
4
-
5
1 INTRODUO
O MATLAB (abreviatura de Matrix Laboratory) um programa para
desenvolvimento e implementao de algoritmos numricos ou
simblicos que oferece
ao usurio um ambiente interativo de programao para estudo e
pesquisa nas
diversas reas das cincias exatas.
Esse sistema comporta os recursos de linguagem procedural de
programao
assemelhados aos do FORTRAN, ANSI C e do Pascal, alm de
capacidade grfica e a
possibilidade de operar com instrues simblicas. Um dos aspectos
mais poderosos
o fato da linguagem MATLAB permitir construir suas prprias
ferramentas reutilizveis.
Isto feito atravs da escrita de suas prprias funes e programas
especiais
conhecidos como arquivos .m.
A primeira verso do MATLAB foi escrita nas Universidades do Novo
Mxico e
Stanford, na dcada de 1970, e destinava-se a cursos de teoria
matricial, lgebra linear
e anlise numrica. Os pacotes para manipulao de sub-rotinas em
FORTRAN,
denominados LINPACK e EISPACK, foram os precursores do
MATLAB.
O MATLAB tem evoludo continuamente, com a contribuio e sugestes
de
inmeros usurios. No meio universitrio, o MATLAB tornou-se quase
que uma
ferramenta padro em cursos introdutrios e avanados de lgebra
Aplicada,
Processamento de Sinais, Sistemas de Controle, Estatstica e
inmeras outras reas
do conhecimento.
O MATLAB contempla ainda uma grande famlia de aplicaes
especficas, as
quais so denominadas Toolboxes (caixas de ferramentas), como
ilustrado na Fig. 1.1.
Estes Toolboxes so conjuntos abrangentes de funes MATLAB cujo
objetivo
resolver problemas de reas especficas, tais como: Processamento
de Sinais, Projeto
de Sistemas de Controle, Simulao Dinmica de Sistemas,
Identificao de Sistemas,
Redes Neuronais, Lgica Fuzzy (nebulosa ou difusa), Otimizao de
Sistemas,
Wavelets, Clculo Simblico, e outras reas. Os usos tpicos
incluem:
Clculos matemticos;
Desenvolvimento de algoritmos;
Modelagem, simulao e confeco de prottipos;
Anlise, explorao e visualizao de dados;
Grficos cientficos e de engenharia;
-
6
Desenvolvimento de aplicaes, incluindo a elaborao de interfaces
grficas
com o usurio
Fig. 1.1: Diagrama de Blocos do MATLAB
A Fig. 1.1 ilustra alguns componentes do sistema MATLAB. Cabe
ressaltar,
entretanto, que vrios Toolboxes esto disponveis e a cada nova
verso do MATLAB
novos Toolboxes so adicionados, incluindo as contribuies de
usurios espalhados
pelo mundo. O SIMULINK um acessrio que possui bibliotecas
adicionais de blocos
para aplicaes especiais como comunicaes e simulaes de circuitos
eltricos e
eletrnicos. O MATLAB disponibilizado para praticamente todos os
sistemas operacionais atualmente em uso: Macintosh, Windows 95 e
NT, Linux, UNIX da Sun, IBM e Open
VMS.
A empresa MathWorks quem negocia/distribui o MATLAB. Seus
endereos
so:
Internet: http://www.mathworks.com
Telefone (ligao para os EUA): 00-1-508-647-7000
Toolbox
Toolbox
SIMULINK
Biblioteca
numrica
Linguagem de
programao
Depurador Editor de textos
-
7
Para um contato com vistas ao uso do programa na rea
educacional, tente o
endereo:
A necessidade de utilizar um sistema de computao numrica, e
a
familiarizao com os comandos e as funes do MATLAB vo
gradualmente
aumentando o potencial de quem programa em MATLAB. No entanto, a
bibliografia
existente pode ser de grande auxlio. Parte desta bibliografia
editada pela The
MathWorks, como por exemplo:
MATLAB Users Guide (Guia do usurio do MATLAB);
MATLAB Reference Guide (Guia de referncia do MATLAB);
External Interface Guide (Guia de comunicao externa);
Installation Guide (Guia de Instalao);
SIMULINK Users Guide (Guia do usurio do SIMULINK);
Online Help (Sistema de auxlio do programa MATLAB).
Inmeras outras referncias podem ser encontradas para o MATLAB,
para isto
basta procurar nas diversas editoras disponveis no mercado.
Algumas destas
referncias (em portugus) para a rea de controle podem ser:
Katsuhiko Ogata, Soluo de Problemas de Engenharia de Controle
com
MATLAB. Prentice-Hall do Brasil, Rio de Janeiro, 1997, 330p.
Katsuhiko Ogata, Projeto de Sistemas Lineares com MATLAB.
Prentice-Hall
do Brasil, Rio de Janeiro, 1996, 202p.
Na internet existem diversas listas de discusso a respeito do
MATLAB.
Inscrever-se em uma destas lista pode ser uma boa fonte de
informao a respeito do
MATLAB. Na pgina da The MathWorks Inc. possvel obter informao
sobre
The MathWorks, Inc.
University Sales Department
24 Prime Park Way
Natick, Massachusetts 01760-1500
Telefone: 00-1-508-647-7000
E-mail: [email protected]
-
8
algumas destas listas, bem como sobre o prprio MATLAB. O endereo
desta pgina :
http://www.mathworks.com.
Os endereos eletrnicos a seguir podem ser tambm utilizados para
saber mais
sobre o MATLAB:
Perguntas tcnicas: [email protected]
Sugestes de melhoria: [email protected]
Bug (erros) do MATLAB: [email protected]
Erros nos manuais: [email protected]
Registro de produto (aps a compra): [email protected]
Renovao de licena: [email protected]
Compra, cotao e informaes comerciais: [email protected]
-
9
2 UTILIZANDO O MATLAB
O programa MATLAB pode ser executado em diversos sistemas
operacionais,
tais como: MS-DOS; Windows-95 ou superior; Unix; Linux; VAX/VMS;
Solaris; X-
Window System; Macintosh; e outros. Este curso est preparado
para ser ministrado no
sistema MS-DOS/Windows3.1x ou superior. No entanto, apenas o
incio do programa
e as funes de baixo nvel so afetados pelo tipo de mquina e
sistema operacional
utilizados.
2.1 Iniciar o Programa
O programa MATLAB pode ser iniciado com um duplo clique no cone
do
MATLAB na rea de trabalho do windows (desktop), conforme indica
a Fig. 2.1.
Fig. 2.1: cone do MATLAB.
Outra forma de iniciar o MATLAB atravs do menu INICIAR do
Windows95 ou
superior. Seleciona-se: INICIAR / PROGRAMA / MATLAB.
Os arquivos executveis do MATLAB esto no diretrio de instalao
do
MATLAB, no subdiretrio BIN. O programa MATLAB iniciado quando o
arquivo
MATLAB.exe, do subdiretrio BIN executado.
Ao iniciar, o MATLAB invoca o arquivo MATLABrc, o qual o arquivo
de
configurao inicial do MATLAB. Este arquivo pode estar no
subdiretrio BIN, ou no
subdiretrio LOCAL, ou ainda no subdiretrio ...\TOOLBOX\LOCAL.
Isto depender
da verso do MATLAB utilizada, ou da forma como o programa foi
instalado. Durante o
processo de incio do programa, o arquivo MATLABrc estabelece o
tamanho padro
de figuras, configuraes, caminhos e parmetros de controle do
MATLAB. Neste
-
10
arquivo pode-se incluir mensagens para os usurios, lembretes,
ajustar configuraes,
etc.
Ao ser executado, o arquivo MATLABrc verifica se existe um
arquivo
denominado startup.m no caminho padro do MATLAB. Este arquivo
startup.m pode
ser empregado pelo usurio para configurar um caminho de sua
preferncia e executar
comandos de sua escolha, sempre que o programa MATLAB for
iniciado. Todos os
arquivos de comando do MATLAB (arquivos que contm comandos) tm
extenso m.
Portanto, daqui por diante as referncias aos arquivos do MATLAB
sero feitas apenas
pelo nome, fica implcito que a extenso sempre ser m.
Todos os arquivos de comando do MATLAB tm extenso m
Uma sesso do programa MATLAB pode ser terminada com o comando
quit;
com as teclas de atalho ctrl+q; selecionando-se a opo Exit
MATLAB (Sair do
MATLAB) no menu File (Arquivo); ou ainda, clicando-se no boto
fechar na tela da
rea de trabalho do MATLAB.
Boto fechar do MATLAB:
2.2 Pasta de Trabalho
Uma boa prtica de utilizao do MATLAB manter todos os arquivos
criados
pelo usurio em uma pasta (ou diretrio) prprio do usurio. Caso
esta prtica no seja
adotada todos os arquivos criados sero armazenados no diretrio
BIN do diretrio de
instalao do MATLAB. Com o passar do tempo, medida em que
aumentam os
arquivos criados pelos usurios, torna-se impossvel
identificar-se quais arquivos so
prprios do MATLAB, e quais arquivos so arquivos do usurio. Isto
pode ser ainda
mais prejudicial no caso de utilizao do MATLAB em ambientes de
rede LAN. Nestes
casos, a desordem causada nos arquivos do diretrio BIN pode
requerer at mesmo
uma nova instalao do programa.
Recomenda-se que o usurio crie a sua prpria pasta de trabalho,
fora da pasta
de instalao do MATLAB (por exemplo, c:\fulano\MATLAB\). Ao
iniciar o MATLAB, o
usurio poder redefinir a sua pasta de trabalho com o comando
cd.
-
11
cd
Propsito: muda o diretrio de trabalho
Sintaxe: cd ou cd nome_do_diretorio
Descrio: cd isoladamente imprime o caminho do diretrio de
trabalho na tela;
cd diretrio define a cadeia de caracteres (string)
nome_do_diretorio como o
novo diretrio de trabalho.
cd .. sobe um nvel na hierarquia da cadeia de diretrios
(pasta)
Exemplo: cd c:\usuario\marisa\matab.
Se o comando cd for parte integrante do arquivo startup, toda
vez que o MATLAB for
iniciado o diretrio de trabalho ser redefinido conforme a
preferncia do usurio.
2.3 Tela da Linha de Comando do MATLAB
A tela da linha de comando do MATLAB (ou workspace) a tela na
qual o usurio
recebe o sinal de pronto (prompt) do sistema MATLAB, podendo
executar comandos
MATLAB, escrevendo-os na linha de comando (ou command line).
Na tela da linha de comando, o usurio fornece dados aos comandos
do
MATLAB, executa comandos, recebe os dados de sada do programa
MATLAB,
controla o fluxo de dados, inicia o modo de edio de arquivos,
executa comandos
grficos, ou seja, interage com o programa MATLAB.
Ao criar funes, comandos e variveis no programa MATLAB
importante estar
atento para o fato de que este programa sensvel a caracteres
maisculos e
minsculos, portanto a varivel xqualquer diferente da varivel
Xqualquer para o
MATLAB.
O programa MATLAB sensvel a caracteres maisculos e minsculos
2.4 Criao de Arquivos no MATLAB
Existem basicamente duas formas de trabalhar no sistema MATLAB:
1)
executando-se comando na linha de comando; ou 2) criando-se um
arquivo de
comandos do MATLAB.
-
12
Para trabalhar na linha de comando do MATLAB basta digitar
qualquer comando
vlido do MATLAB na linha de comando. Assim, possvel criar
variveis, executar
comandos, visualizar grficos, etc.
Muitas vezes necessrio executar um nmero grande de comandos, e
repeti-los
sistematicamente. Nestes casos, utilizam-se os arquivos de lote,
ou arquivos de
comandos MATLAB. Conforme j citada anteriormente, a extenso de
arquivos de
comando do MATLAB m. O MATLAB busca primeiramente o arquivo de
comandos
no seu diretrio de trabalho (pasta) e posteriormente no seu
caminho (path). Portanto,
necessrio que o arquivos MATLAB esteja no diretrio de trabalho
ou no caminho do
MATLAB.
Os arquivos de comando do MATLAB devem estar no diretrio de
trabalho ou no caminho (path) para serem reconhecidos e
executados
Os arquivos do MATLAB podem ser criados atravs de qualquer
editor que salva
textos no formato ASCII (por exemplo bloco de notas, notepad,
write, word, etc). Uma
vez editados os arquivos devem ser gravados com extenso m antes
de serem
executados.
Os arquivos MATLAB podem ser abertos ou criados atravs da opo
arquivo
(file), escolhendo-se a opo novo (new) ou abrir (open), conforme
indicado na Fig. 2.2.
Fig. 2.2: Criao de arquivos de comandos no MATLAB.
-
13
O MATLAB j possui uma pr-definio de qual o editor ASCII a ser
utilizado
na edio do arquivo de comandos. Esta pr-definio pode se
modificada pelo prprio
usurio do programa.
As verses mais recentes do MATLAB j possuem um editor ASCII
prprio do
MATALAB, desenvolvido pela The MathWorks Inc.
Exerccio sugerido: criar um arquivo de comando denominado
caminho.m que
estabelece o diretrio de trabalho do MATLAB.
2.5 Limitaes do MATLAB
As principais limitaes do programa MATLAB so: 1) a execuo de
algoritmos
em MATLAB mais lenta que em linguagens de programao (C, Fortran,
LISP, etc);
2) alguns procedimentos grficos e de interao com o usurio so
restritos aos
comandos do MATLAB; 3) no possvel gerar arquivos executveis com
o MATLAB,
ou seja, um arquivo MATLAB s poder ser executado no ambiente
MATALAB; e 4) o
MATLAB limitado para processamento de expresses matemticas
analticas.
Os principais concorrentes do MATLAB no mercado so o
MATHEMATICA, o
MATCAD e o MAPLE. Alguns destes programas apresentam melhor
capacidade de
processamento matemtico analtico que o MATLAB, notadamente o
MATCAD e o
MATHEMATICA.
um arquivo MATLAB s poder ser executado no ambiente MATLAB
-
14
3 OPERADORES, CONSTANTES E CARACTERES ESPECIAIS
3.1 Operadores aritmticos
Operador +
Propsito: executar soma de matrizes ou escalares.
Sintaxe: v1+v2 ou plus(v1,v2).
Descrio: Invoca a funo PLUS. Caso seja soma de matrizes, as
dimenses
das matrizes devem ser iguais. Escalares podem ser somados com
qualquer tipo
de varivel.
Exemplos: a+b; plus(a,b); a+2.
Operador -
Propsito: executar subtrao de matrizes ou escalares.
Sintaxe: v1-v2 ou minus(v1,v2).
Descrio: Invoca a funo minus. Caso seja subtrao de matrizes,
as
dimenses das matrizes devem ser iguais. Escalares podem ser
subtrados de
qualquer tipo de varivel.
Exemplos: a-b; minus(a,b); a-2.
Operador *
Propsito: executar soma de matrizes ou escalares.
Sintaxe: v1*v2 ou mtimes(v1,v2).
Descrio: Invoca a funo mtimes. Caso seja multiplicao de
matrizes, o
nmero de colunas da matriz v1 deve ser igual ao nmero de linhas
da matriz
v2. Escalares podem multiplicar qualquer tipo de varivel.
Exemplos: a*b (neste caso, o nmero de colunas de a igual ao
nmero de
linhas de b); mtimes(a,b); a*2.
Operador ^ (circunflexo)
Propsito: executar potenciao de matrizes quadradas com expoente
escalar
ou de de escalares com matriz quadrada no expoente.
Sintaxe: v1^v2 ou mpower(v1,v2).
-
15
Descrio: Invoca a funo mpower. Caso v1 seja matriz quadrada e v2
seja um
inteiro, realizada a multiplicao sucessiva das matrizes. Caso v1
seja matriz e
v2 seja um real, ou ainda se v1 um escalar e v2 uma matriz,
realizado o
clculo atravs dos autovalores e dos autovetores da matriz. Se v1
e v2 forem
ambos matrizes, ou ainda se v1 ou v2 forem matrizes no
quadradas, ento
haver erro.
Exemplos: a^b ou mpower(a,b) (neste caso, a escalar e b matriz
quadrada;
ou a matriz quadrada e b escalar; ou a e b so escalares).
Operador /
Propsito: executar diviso de escalares ou a multiplicao de uma
matriz
inversa por outra matriz (importante: na matemtica no existe
diviso de
matrizes). a chamada diviso direita.
Sintaxe: v1/v2 ou mrdivide(v1,v2).
Descrio: Invoca a funo mrdivide. Esta operao equivalente a
v1*v2-1
(sendo v2-1 a matriz inversa da matriz v2). Para que esta operao
seja possvel
necessrio que v2 seja inversvel, ou seja, matriz no-singular
(matriz
quadrada com determinante no-nulo).
Exemplos: a/b ou mrdivide(a,b).
Operador \
Propsito: executar diviso de escalares ou a multiplicao de uma
matriz
inversa por outra matriz. a chamada diviso esquerda.
Sintaxe: v1\v2 ou mldivide(v1,v2)
Descrio: Invoca a funo mldivide. Esta operao equivalente a v1-1*
(sendo
v1-1 a matriz inversa da matriz v1). Para que esta operao seja
possvel
necessrio que v1 seja inversvel, ou seja, matriz no-singular
(matriz quadrada
com determinante no-nulo). Observe que na lgebra matricial a
multiplicao no comutativa, ou seja a*b diferente de b*a,
portanto a/b
equivale a a*b-1, que por sua vez diferente de b\a, equivalente
a b-1*a.
O operador \ executa a fatorao QR da matriz A ao resolver o
sistema bAx = ,
para A de ordem nm , para m no necessariamente igual a n .
-
16
Exemplos: a\b ou mldivide(a,b).
Na matemtica no existe operao de diviso com matrizes. Os
operadores / e \ so apenas smbolos.
A multiplicao na lgebra matricial no comutativa, ou seja,
a*b
diferente de b*a.
Operador
Propsito: executar a transposio de matrizes ou a declarao de uma
cadeia
de caracteres (string).
Sintaxe: v1 ou v2=bom dia
Descrio: v1 produz a matriz v1*T (matriz transposta conjugada da
matriz v1,
troca de linhas por colunas dos conjugados dos nmeros complexos
da matriz
v1). v2=bom dia cria uma varivel do tipo string, onde cada
caractere ocupa 2
bytes na memria.
Exemplos: a*b ou salutation=Hello!.
Cada caractere ocupa 2 bytes de memria RAM nas variveis tipo
string.
Cada varivel real (float) ou inteira ocupa 8 bytes de memria. Em
uma
matriz de strings, a rea de memria ocupada em bytes, 2 vezes,
o
nmero de caracteres. Em uma matriz de reais ou inteiros, a rea
de
memria ocupada, em bytes, 8 vezes o nmero de elementos da
matriz.
3.2 Caracteres Especiais
caracter .
Propsito: executar operaes elemento-a-elemento (operaes
algbricas
escalares (/,\,^,*,), no-matriciais); indexar campos em
estruturas; ou ponto
decimal.
Sintaxe: a.*a; a./b; c.\f; x.^2; x.^y para operaes algbricas; ou
est.campo
Descrio: a.*b multiplica o elemento a(i,j) pelo elemento b(i,j).
a..
-
17
v1.opv2 executa a operao op de cada elemento de v1 com seu
elemento
correspondente em v2. No caso de operao entre matrizes, as
matrizes devem
possuir exatamente as mesmas dimenses. A operao com escalar pode
ser
realizada com matriz de qualquer dimenso.
a. a matriz transposta no conjugada da matriz a.
est.camp seleciona o campo camp da estrutura est.
Exemplos: 2.^x diferente de 2^x; x.*x diferente de x*x.
auto.peujeot seleciona
o campo peujeot da estrutura auto.
O caractere . produz a operao elemento-a-elemento entre
matrizes
com exatamente a mesma dimenso ou entre escalares e
matrizes.
caracter :
Propsito: Criar varredura limitada pelos nmeros direita e
esquerda de :.
Sintaxe: j:k; j:d:k.
Descrio: j:k o mesmo que [j j+1 j+2 ... k], j:k vazio se k
-
18
caracter !
Propsito: invoca comando do sistema operacional.
Exemplos: ! mkdir novo.
caracter %
Propsito: torna o texto direta de % um comentrio.
Exemplos: x=[1 2 3; 4.5 6 7.5]; %cria matriz x.
caracteres ..
Propsito: representa o primeiro diretrio na hierarquia de
diretrios.
Exemplos: cd .. sobe um diretrio na hierarquia.
caracteres ... (trs ou mais pontos)
Propsito: representa continuao de linha.
Exemplos: a=2+...
3 o mesmo que a=2+3.
caracteres ( )
Propsito: indicam precedncia em operaes matemticas ou
indexam
matrizes.
Exemplos: (a+b)^c, a soma realizada antes da potenciao; x(3) o
terceiro
elemento do vetor x; x([1 2 3]) so os trs primeiros elementos do
vetor x.
caracter { }
Propsito: so utilizadas para formar estruturas (conjunto de
clulas), onde cada
clula pode ser outra estrutura, uma matriz ou uma string.
Funciona como os [ ],
porm seus elementos podem ser outras matrizes.
Podem tambm ser utilizadas para indexar estruturas e dar acesso
aos seus
campos.
Exemplo: l={isto uma matriz linha: [1 2 24]}, l uma estrutura
com 5
campos.
3.3 Operadores Lgicos
caracteres & | ~
-
19
Propsito: realizam as operaes lgicas e, ou e negao com os
operadores &,
| e ~, respectivamente.
Sintaxe: a&b; A|c; ~d; os operandos a,b,c,d,A podem ser
nmeros reais (float),
complexos (utiliza o mdulo) ou strings (utiliza o valor da
tabela ASCII). No
MATLAB, 0 considerado falso, e qualquer outro valor no-nulo
verdadeiro. O
resultado destas operaes ser verdadeiro (1) ou falso (0).
Exemplos: 5&-3 resulta em 1; ~10 resulta em 0; alfa|0
resulta em [1 1 1 1].
3.4 Operadores relacionais
caracteres < >= == ~=
Propsito: realizam as operaes de comparao de valores lgicos do
tipo
menor, menor igual, maior, maior igual, igual e diferente com os
operadores < >= == ~=, respectivamente. O resultado um valor
lgico verdadeiro (1) ou
falso (0).
Sintaxe: v1opv2 testa o valor lgico v1 em relao ao valor lgico
v2, com a
operao relacional op.
Exemplos: 3=b verifica se a maior ou
igual a b, resultando verdadeiro (1) ou falso (0).
3.5 Constantes ou Variveis
Alguns caracteres so constantes definidos pelo MATALAB. Estes
valores
podem ser alterados temporariamente atravs de atribuio.
Constante pi
Definio: a constante (3,1416...)
Constantes i e j
Propsito: caracteres reservados com a unidade imaginria 1 .
Sintaxe: nmero seguido de i ou j, ou multiplicado por i ou
j.
Exemplos: 5+3i ou 5+3*i; 5+3j ou 5+ 3*j.
ans
-
20
Definio: uma varivel cujo valor o resultado da ltima operao
aritmtica
realizada pelo MATLAB. Operaes de atribuio no so armazenadas em
ans.
Abreviatura para answer.
3.5.1 Inf
Definio: o resultado de uma operao aritmtica cujo valor
ultrapassa a
maior capacidade de representao do MATALAB. Por exemplo, diviso
por
zero, ou 1.7977e+308^ 1.7977e+308. Abreviatura para
infinite.
3.5.2 NaN
Definio: o resultado de uma operao aritmtica indeterminada.
Por
exemplo, 0/0 Abreviatura para Not a Number.
3.5.3 ieee
Definio: verifica se o computador em que o MATLAB est sendo
executado
possui aritmtica padro IEEE. Os computadores IBM-PC e
compatveis,
Macintosh, estaes UNIX e Linux possuem aritmtica padro IEEE.
Os
computadores VAX e Cray normalmente no utilizam aritmtica IEEE.
A funo
retorna 1 se o computador tem aritmtica IEEE; caso contrrio,
retorna 0.
Examine tambm: eps; isnan; isinf; isfinite; flops.
3.6 Recursos de Apoio da Tela de Comando do MATLAB
A tela de comando do programa MATLAB apresenta uma srie de
recursos que
podem auxiliar o usurio. Entre estes recursos destacam-se:
3.6.1 Menu File
-
21
Neste Menu possvel abrir um arquivo MATLAB j existente (open);
iniciar um
novo arquivo com extenso m (new), atravs do editor ASCII do
MATLAB; executar um
arquivo com comandos MATLAB (run script); imprimir arquivos e
selees (print e print
selection); carregar variveis de um arquivo (load workspace);
salvar variveis do
workspace (rea de trabalho) em um arquivo; monitorar a memria da
rea de trabalho
(show workspace); redefinir o caminho de diretrios do MATLAB
(set path); alterar as
configuraes da rea de trabalho, tais como cor de fundo, formato
de variveis, etc
(preferences).
3.6.2 Menu Edit
Aqui possvel cortar (cut), copiar (copy), colar (pate), limpar a
tela da sesso
de trabalho (clear session).
Botes de Auxlio:
1o boto da figura: Voltar - cancela a ltima alterao;
2o boto da figura: Workspace browser - monitora as variveis e a
memria da rea de
trabalho;
3o boto da figura: Path browser - monitora e redefine os
diretrios do caminho do
MATLAB;
4o boto da figura: SIMULINK - invoca o programa SIMULINK;
5o Ajuda em tempo real - fornece auxlio para todos os comandos
do MATLAB (invoca
a funo helpwin).
A ordem destes botes pode ser alterada pelo usurio do
MATLAB.
-
22
4 COMANDOS DE PROPSITO GERAL
4.1 Comandos de Informao
help
Propsito: Ajuda em tempo real (on-line). O texto apresentado na
tela da linha
de comando.
Sintaxe: help nome-da-funo.
Descrio: fornece informaes sobre a funo especificada pelo
nome-da-
funo.
Exemplo: help plot.
helpwin
Propsito: Ajuda em tempo real (on-line). O texto apresentado em
uma janela
de navegao separada.
Sintaxe: helpwin.
Descrio: aberta um janela com opes para escolha do nome e
categoria da
funo.
ver
Propsito: informa as verses do MATLAB, SIMULINK e toolboxes.
Sintaxe: ver
version
Propsito: informa as verses do MATLAB
Sintaxe: version
demo
Propsito: executa programas de demonstrao desenvolvidos em
ambiente
MATLAB.
Sintaxe: demo.
whatsnew
Propsito: Ajuda em tempo real (on-line). O texto apresentado em
uma janela
de navegao separada.
-
23
Sintaxe: whatsnew tipo-de-funo.
Descrio: apresenta as atualizaes dos comandos tipo-de-funo na
tela da
linha de comando.
Exemplo: whatsnew MATLAB; whatsnew general.
bench
Propsito: executa um conjunto de funes MATLAB com a finalidade
de avaliar
o desempenho do processador atual utilizado em relao a
outros
processadores.
Sintaxe: bench.
4.2 Comandos de Operao com a Memria da rea de Trabalho
(workspace)
who
Propsito: lista as variveis atuais.
Sintaxe: who.
whos
Propsito: lista as variveis atuais, suas dimenses e memria que
cada uma
ocupa.
Sintaxe: whos.
clear
Propsito: limpa completamente a memria, funo ou varivel.
Sintaxe: clear; clear arg.
Descrio: clear limpa toda a memria da rea de trabalho; clear arg
exclui a
funo ou varivel arg da memria da rea de trabalho.
Exemplo: clear; clear x1.
pack
Propsito: desfragmenta a memria da rea de trabalho.
Descrio: pack rene todas as variveis em um segmento ou
pginas
adjacentes na memria RAM com a finalidade de otimizar o uso da
memria.
Sintaxe: pack.
-
24
save
Propsito: salva as variveis da memria da rea de trabalho em
arquivo.
Sintaxe: save fname; save fname v1 v2 ... vn.
Descrio: save fname salva todas as variveis da rea de trabalho
no arquivo
cujo nome e caminho so descritos em fname. save fname v1 v2 ...
vn salva
apenas as variveis v1, v2 e vn.
Exemplo: save a:\hoje; save c:\MATLAB\arq x y.
load
Propsito: carrega as variveis de um arquivo para a memria da rea
de
trabalho.
Sintaxe: load fname; load fname v1 v2 ... vn.
Descrio: load fname carrega todas as variveis do arquivo cujo
nome e
caminho so descritos em fname para a memria da rea de trabalho.
laod
fname v1 v2 ... vn carrega apenas as variveis v1, v2 e vn.
Exemplo: load a:\hoje; load c:\MATLAB\arq x y.
quit
Propsito: encerra a sesso de trabalho do MATLAB
Sintaxe: quit.
4.3 Comandos de Operao com Funes e Comandos
what
Propsito: lista os nomes de arquivos de funes e comandos de um
grupo
especfico do MATLAB.
Sintaxe: what nome; var=what(nome).
Descrio: what nome lista todos os arquivos e funes do grupo
descrito por
nome. var=what(nome) cria uma estrutura cujos campos descrevem
os diversos
arquivos relacionados com o grupo definido por nome.
Exemplo: what general; w=what(signal).
type
Propsito: lista o contedo de um arquivo de comandos do
MATLAB.
Sintaxe: type arq.
-
25
Exemplo: type multi.m; type c:\MATLAB\marisa\xtudo.m.
edit
Propsito: edita arquivo do MATLAB
Sintaxe: edit; edit arq.
Descrio: somente edit inicia a edio de um novo arquivo; edit arq
abre a
edio de um arquivo arq j existente.
Exemplo: edit; edit figs.m.
lookfor
Propsito: busca a palavra-chave em todos os arquivos contidos no
caminho do
MATLAB.
Sintaxe: lookfor palavra.
Descrio: procura, em todos os arquivos do caminho, a
palavra-chave contida
na string palavra, e lista o nome dos arquivos nos quais existe
a palavra-chave.
Exemplo: lookfor matrix.
Examine tambm os comandos: which; pcode; inmem; mex.
4.4 Comandos de Operao com o Caminho de Diretrios
path
Propsito: verifica ou define o caminho de diretrios.
Sintaxe: path; path=caminho; v=path.
Descrio: path lista na tela da linha de comando o caminho
atual.
path=caminho define o caminho atual como sendo a string contida
em caminho.
v=path carrega a string correspondente ao caminho atual em
v.
Exemplo: path; path=c:\usuario\MATLAB; p1=path.
addpath
Propsito: adiciona diretrios ao caminho.
Sintaxe: addpath nome.
Descrio: adiciona o diretrio descrito na string nome ao caminho
atual.
Exemplo: addpath c:\user\pink.
-
26
rmpath
Propsito: remove diretrios do caminho.
Sintaxe: rmpath nome.
Descrio: remove o diretrio descrito na string nome ao caminho
atual.
Exemplo: rmpath c:\user\pink.
Examine tambm os comandos: editpath.
4.5 Comandos de Operao com a Janela de Comando
echo
Propsito: habilita ou inibe a apresentao dos resultados de
comando de um
arquivo MATLAB na linha de comando.
Sintaxe: echo on; echo off.
Descrio: echo on habilita a apresentao e echo off
desabilita.
more
Propsito: habilita ou inibe a paginao do texto na tela de
comandos.
Sintaxe: more on; more off.
Descrio: echo on habilita a paginao e echo off desabilita.
diary
Propsito: salva todo o texto da sesso de trabalho em arquivo
Sintaxe: diary on; diary off; diary(nome).
Descrio: aps diary on todo texto que aparece na janela de
comando
tambm enviado para um arquivo nomeado automaticamente pelo
MATLAB.
diary off interrompe o salvamento em arquivo. diary(nome) salva
o texto da
janela de comando no arquivo cujo nome descrito pela string
nome.
Exemplo: diary on; diary off; diary(31-8-00).
format
Propsito: determina o formato no qual os dados sero expressos na
janela de
comando.
Sintaxe: format opo.
-
27
Descrio: expressa os dados conforme opo. opo: 1) short ou em
branco:
formato ponto decimal com 5 dgitos; 2) long: formato ponto
decimal com 15
dgitos; 3) short e: formato ponto flutuante com 5 dgitos; 4)
long: formato ponto
flutuante com 15 dgitos; 5) short g: o MATALAB seleciona entre o
formato ponto
decimal com 5 dgitos ou ponto flutuante com 5 dgitos; 6) long g:
o MATALAB
seleciona entre o formato ponto decimal com 15 dgitos ou ponto
flutuante com
15 dgitos; 7) hex: hexadecimal; 8) +: apresenta o sinal + ou
para os valores; 9)
bank: formato bancrio com $ e centavos; 10) rat: aproxima para a
frao mais
prxima do valor a ser expresso.
4.6 Comandos de Operao com o Sistema Operacional
cd
Propsito: altera o diretrio de trabalho atual.
Sintaxe: cd diretrio.
Exemplo: cd c:\MATLAB\usuario.
pwd
Propsito: exibe o diretrio de trabalho atual.
Sintaxe: pwd.
dir
Propsito: lista os arquivos do diretrio atual.
Sintaxe: dir.
delete
Propsito: exclui arquivo do diretrio.
Sintaxe: delete arq.
Exemplo: delete tarefa.m.
dos
Propsito: executa comando do MS-DOS.
Sintaxe: dos comando.
Exemplo: dos copy a:\antigo.m a:\novo.m.
-
28
computer
Propsito: definir o tipo de computador em uso.
Sintaxe: computer.
Descrio: retorna uma string com o tipo do computador em uso.
web
Propsito: abrir pgina na internet ou arquivo html com o browser
padro do
sistema.
Sintaxe: web arquivo; web endereo.
Exemplo: web c:\paginas\info.htm; web
http://www.mathworks.com.
Examine tambm os comandos: getenv; unix; vms; realmax;
realmin; clock; cputime; date; etime; tic; toc.
-
29
5 COMANDOS BSICOS PARA MANIPULAO DE MATRIZES
zeros
Propsito: cria uma matriz esparsa (composta de zeros).
Sintaxe: zeros(n); zeros(n,m); zeros(size(a));
Descrio: zeros(n) cria uma matriz quadrada composta de zeros;
zeros(n,m)
cria uma matriz n por m composta de zeros; zeros(size(a)) cria
um matriz com as
mesmas dimenses da matriz a, composta de zeros.
Exemplo: zeros(4); zeros(2,3); zeros(size(a)).
ones
Propsito: cria uma matriz com elementos iguais a 1.
Sintaxe: ones(n); ones(n,m); ones(size(a));
Descrio: ones(n) cria uma matriz quadrada composta de elementos
iguais a 1;
zeros(n,m) cria uma matriz n por m composta de elementos iguais
a 1;
zeros(size(a)) cria um matriz com as mesmas dimenses da matriz
a, composta
de elementos iguais a 1.
Exemplo: ones(4); ones(2,3); ones(size(a)).
eye
Propsito: cria uma matriz identidade ou matriz com diagonal
1.
Sintaxe: eye(n); eye(n,m); ones(size(a));
Descrio: eye(n) cria uma matriz quadrada composta de elementos
iguais a 1
na diagonal principal e demais elementos nulos; eye(n,m) cria
uma matriz n por
m composta de elementos iguais a 1 na diagonal principal e
demais elementos
nulos; eye(size(a)) cria um matriz com as mesmas dimenses da
matriz a,
composta de elementos iguais a 1 na diagonal principal e demais
elementos
nulos.
Exemplo: eye(4); eye(2,3); eye(size(a)).
rand
Propsito: cria uma matriz com elementos gerados
aleatoriamente.
Sintaxe: rand(n); rand(n,m); rand(size(a));
-
30
Descrio: rand(n) cria uma matriz quadrada composta de elementos
gerados
aleatoriamente; rand(n,m) cria uma matriz n por m composta de
elementos
gerados aleatoriamente; rand(size(a)) cria um matriz com as
mesmas dimenses
da matriz a, composta de elementos gerados aleatoriamente.
Exemplo: rand(4); rand(2,3); rand(size(a)).
randn
Propsito: o mesmo de rand, porm neste caso a distribuio segue o
padro
normal, enquanto rand segue padro uniforme.
diag
Propsito: extrai diagonais de matrizes e cria um vetor com estes
elementos.
Sintaxe: diag(m,k); diag(m);
Descrio: diag(m) cria um vetor com a diagonal principal da
matriz m. diag(m,k)
cria um vetor com a k-sima diagonal acima (k>0) ou abaixo
(k
-
31
size
Propsito: retorna a dimenso de uma matriz ou estrutura.
Sintaxe: size(a).
Descrio: retorna um vetor com as dimenses da matriz ou estrutura
a.
length
Propsito: retorna o comprimento de um vetor.
Sintaxe: size(a).
Descrio: retorna o comprimento do vetor a. Se a for matriz,
size(a) retorna a
mair dimenso de a.
tril ou triu
Propsito: extrai a matriz triangular inferior (tril) ou a matriz
triangular superior
(triu).
Sintaxe: tril(a) ou triu(a); tril(a,k) ou triu(a,k).
Descrio: extrai a matriz triangular superior (triu) ou inferior
(tril) diagonal
principal. Extrai a matriz triangular superior (triu) ou
inferior (tril) k-sima linha
acima (k>0) ou abaixo (k
-
32
6 FUNES MATEMTICAS ELEMENTARES
abs
Propsito: extrai o mdulo (valor absoluto) de um valor algbrico
real ou
complexo.
Sintaxe: abs(arg).
acos
Propsito: determina o valor inverso (arco) do cosseno em
radianos.
Sintaxe: acos(arg).
acosh
Propsito: determina o valor inverso (arco) do cosseno hiperblico
em radianos.
Sintaxe: acosh(arg).
angle
Propsito: determina o ngulo em radianos de um nmero
complexo.
Sintaxe: angle(complexo).
asin
Propsito: determina o valor inverso (arco) do seno em
radianos.
Sintaxe: asin(arg).
asinh
Propsito: determina o valor inverso (arco) do asinh hiperblico
em radianos.
Sintaxe: asinh(arg).
atan
Propsito: determina o valor inverso (arco) da tangente em
radianos.
Sintaxe: atan(arg).
atanh
Propsito: determina o valor inverso (arco) da tangente
hiperblico em radianos.
Sintaxe: atanh(arg).
-
33
atan2
Propsito: determina o valor inverso (arco) da tangente em
radianos do ngulo
de nmero complexo, nos quatro quadrantes.
Sintaxe: atan2(parte-imag,parte-real)
ceil
Propsito: arredonda para o primeiro inteiro algebricamente
superior.
Sintaxe: ceil(arg).
fix
Propsito: arredonda para o inteiro mais prximo de zero.
Sintaxe: fix(arg).
round
Propsito: arredonda para o inteiro mais prximo (arredondamento
matemtico
convencional).
Sintaxe: round(arg).
sign
Propsito: retorna 1 se o argumento positivo e 0 se o argumento
negado.
Sintaxe: sign(arg).
imag
Propsito: extrai a parte imaginria de um complexo.
Sintaxe: imag(complexo).
real
Propsito: extrai a parte real de um complexo.
Sintaxe: real(complexo).
conj
Propsito: extrai o conjugado de um complexo.
Sintaxe: conj(complexo).
cos
Propsito: calcula o cosseno de um arco em radianos.
-
34
Sintaxe: cos(arco).
sin
Propsito: calcula o seno de um arco em radianos.
Sintaxe: sin(arco).
tan
Propsito: calcula a tangente de um arco em radianos.
Sintaxe: tan(arco).
cosh
Propsito: calcula o cosseno hiperblico de um arco em
radianos.
Sintaxe: cosh(arco).
sinh
Propsito: calcula o seno hiperblico de um arco em radianos.
Sintaxe: sinh(arco).
tanh
Propsito: calcula a tangente hiperblica de um arco em
radianos.
Sintaxe: tanh(arco).
exp
Propsito: calcula o valor de earg.
Sintaxe: exp(arg).
pow2
Propsito: calcula o valor de 2arg.
Sintaxe: pow2(arg).
sqrt
Propsito: calcula o valor da raiz quadrada de arg.
Sintaxe: sqrt(arg).
log
Propsito: calcula o valor do logaritmo na base natural e
(ln).
Sintaxe: log(arg).
-
35
log10
Propsito: calcula o valor do logaritmo na base 10.
Sintaxe: log10(arg).
log2
Propsito: calcula o valor do logaritmo na base 2.
Sintaxe: log2(arg).
rem
Propsito: retorna o resto inteiro de uma diviso de x por y.
Sintaxe: rem(x,y).
Examine tambm os comandos: sec; sech; asec; asech; csc; csch;
acsc;
acsch; cot; coth; acot; acoth; nextpow2; unwrap; isreal;
cplxpair; mod.
-
36
7 COMANDOS DE CONTROLE GRFICO
7.1 Grficos Bidimensionais
plot
Propsito: imprime o vetor em grfico bidimensional.
Sintaxe: plot(x,y,cst)
Descrio: imprime o vetor y na ordenada em relao ao vetor x na
abcissa. x e
y devem obrigatoriamente ter as mesmas dimenses. A string cst
permite
selecionar a cor (c=ymrcrgbwk), o tipo de smbolo
(s=*.ox+sdv^ph), e o tipo de
linha(t=--:-.--).
Exemplo: plot(x,sin(x),m*-.) plota seno de x em cor magenta, com
smbolos *
para cada ponto e linha tracejada e pontilhada.
No comando plot os vetores de ordenada e abscissa devem ter
as
mesmas dimenses.
subplot
Propsito: divide uma figura em vrios grficos.
Sintaxe: subplot(n,m,p)
Descrio: subplot(n,m,p) divide a figura em uma matriz nxm de
grficos e
seleciona o p-simo grfico. p contado da esquerda para a direita,
continuando
na linha de baixo.
Exemplo: subplot(3,3,5) divide a figura em 9 grficos,
distribudos em 3 linhas e
3 colunas, e seleciona o grfico central.
O comando subplot apenas seleciona um dos grficos da matriz
nxm,
mas o comando plot que executa a impresso.
loglog
Propsito: o mesmo que plot, porm agora as escalas de ordenadas e
abscissas
so do tipo logartmicas.
Sintaxe: loglog(x,y,cst)
-
37
semilogx
Propsito: o mesmo que plot, porm agora a escala da abscissa do
tipo
logartmica.
Sintaxe: semilogx(x,y,cst)
semilogy
Propsito: o mesmo que plot, porm agora a escala da ordenada do
tipo
logartmica.
Sintaxe: semilogy(x,y,cst)
polar
Propsito: desenha grfico em formato polar.
Sintaxe: polar(ang,raio,cst)
Descrio: imprime cada elemento do vetor raio em relao ao
elemento
correspondente do vetor ang (ngulo). A string cst permite
selecionar a cor
(c=ymrcrgbwk), o tipo de smbolo (s=*.ox+sdv^ph), e o tipo de
linha(t=--:-.--).
Ex.: polar((linspace(0:2*pi),4*ones(1,100)) plota uma
circunferncia de raio 4.
axis
Propsito: controla a aparncia das escalas da abscissa e da
ordenada.
Sintaxe: axis([xmin xmax ymin ymax]).
Descrio: ajusta a escala da abscissa para valores entre xmin e
xmax, e a
escala da ordenada para valores entre ymin e ymax.
Exemplo: axis ([-3 4 0 10]) desenha o grfico com escalas de 3 a
4 para o eixo
da abscissa e 0 a 10 para o eixo da ordenada.
grid
Propsito: traa uma grade sobre o plot atual.
Sintaxe: grid.
hold
Propsito: retm o estado do plot atual de modo a permitir que o
prximo grfico
seja impresso sobre o atual. hold on liga o estado do comando e
hold off desliga
o estado do comando.
Sintaxe: hold; hold on; hold off.
-
38
title
Propsito: Cria texto de ttulo no plot atual.
Sintaxe: title(texto).
xlabel
Propsito: Cria texto para o eixo da abcissa.
Sintaxe: xlabel(texto).
ylabel
Propsito: Cria texto para o eixo da ordenada.
Sintaxe: ylabel(texto).
gtext
Propsito: Cria texto para ser posicionado com o mouse.
Sintaxe: gtext(texto).
Examine tambm os comandos: plotyy; axes; box; legend; text;
print;
printopt; orient.
7.2 Grficos Tridimensionais
As funes de manipulao e controle de grficos em trs eixos e
funes
grficas mais avanadas so dadas no quadro a seguir:
Examine os comandos: plot3d; fill3; contour; contour3; clabel;
contourc;
pcolor; quiver; image; mesh; meshc; meshz; surf; surfc; surfl;
waterfall;
slice; view; viewmtx; hidden; shading axis; caxis; colormap;
title; xlabel;
ylabel; zlabel; text; gtext; grid; cylinder; sphere; figure;
gcf; clf close; gca;
caxis; hold; line; patch; text; surface; image; uicontrol;
uimenu; set; ger;
reset; delete; drawnow; print; printop; moviein; getframe;
movie; ginput;
ishold.
-
39
8 OUTROS COMANDOS
8.1 Funes Lgicas
exist
Propsito: verifica se uma varivel ou funo existe no caminho do
MATLAB.
Sintaxe: exist(arg).
Descrio: exist(arg) retorna 1 se existir a varivel ou funo arg;
caso contrrio
retorna 0.
Exemplo: exist(var1).
any
Propsito: verifica se um vetor possui um elemento diferente de
zero.
Sintaxe: any(vet).
Descrio: any(vet) retorna 1 se existir um nico elemento
diferente de zero no
vetor vet; caso contrrio retorna 0.
Exemplo: any(nomes).
all
Propsito: verifica se um vetor possui todos elementos diferentes
de zero.
Sintaxe: all(vet).
Descrio: all(vet) retorna 1 se todos os elementos de vet forem
diferentes de
zero; caso contrrio retorna 0.
Exemplo: all(nomes).
find
Propsito: encontra os ndices dos elementos no-nulos de uma
matriz.
Sintaxe: find(mat).
Exemplo: find(rand(3)).
isnan
Propsito: verifica se h elementos do tipo NaN em uma matriz.
Sintaxe: isnan(mat).
-
40
Descrio: isnan(vet) retorna uma matriz onde os elementos so 1 na
posio
onda h um elemento NaN na matriz original e 0 nas demais
posies.
Exemplo: isnan(mat).
isinf
Propsito: verifica se h elementos do tipo inf em uma matriz.
Sintaxe: isinf(mat).
Descrio: isinf(mat) retorna uma matriz onde os elementos so 1 na
posio
onda h um elemento inf na matriz original e 0 nas demais
posies.
Exemplo: isinf(mat).
finite
Propsito: verifica se h elementos finitos em uma matriz
Sintaxe: finite(mat).
Descrio: finite(mat) retorna uma matriz onde os elementos so 1
na posio
onda h um elemento diferente de NaN ou de Inf na matriz original
e 0 nas
demais posies.
Exemplo: finite(mat).
ischar
Propsito: verifica se o argumento uma cadeia de caracteres
(string).
Sintaxe: ischar(arg).
Descrio: ischar(arg) retorna 1 se arg for uma cadeia de
caracteres; caso
contrrio retorna 0.
Exemplo: ischar(nome) retornar 1.
Examine tambm os comandos: isieee; isempty; issparse.
8.2 Funes de Controle de Fluxo de Programao
if, else, elseif e end
Propsito: testar condio e determinar sentenas a serem
executadas.
Sintaxe:
-
41
IF exp1
stat1
ELSEIF exp2
stat2
ELSE
stat3
END
Descrio: testa exp1. Se exp1 for verdadeira executa as sentenas
em stat1 e
vai para end; caso contrrio, testa exp2. Se exp2 for verdadeira
executa as
sentenas em stat2 e vai para end; caso contrrio executa
stat3.
Exemplo:
if I == J
A(I,J) = 2;
elseif abs(I-J) == 1
A(I,J) = -1;
else
A(I,J) = 0;
end
for, end
Propsito: cria, incrementa e testa ndice de controle para execuo
de
sentenas.
Sintaxe: FOR var = expr, stat1, stat2,..., statn END
Descrio: enquanto a varivel var for inferior ao limite
estabelecido, as
sentenas stat1, stat2 at statn sero executadas.
Exemplo:
FOR I = 1:N,
FOR J = 1:N,
A(I,J) = 1/(I+J-1);
END
END
while, end
Propsito: testa a expresso de controle para execuo de outras
sentenas.
-
42
Sintaxe:
WHILE exp
stats
END
Descrio: enquanto a expresso exp for verdadeira, as sentenas
stats sero
executadas.
Exemplo:
E = 0*A; F = E + eye(size(E)); N = 1;
while norm(E+F-E,1) > 0,
E = E + F;
F = A*F/N;
N = N + 1;
end
swtch, end
Propsito: testa expresso de controle e seleciona um caso para
executar.
Sintaxe:
SWITCH switch_expr
CASE case_expr,
stat1, ..., stat1n
CASE {case_expr1, case_expr2, case_expr3,...}
stat2, ..., stat2n
...
OTHERWISE,
stat3, ..., stat3n
END
Descrio: Se switch_expr for igual a case_expr, ento as sentenas
stat1 at
stat1n sero executadas, e terminado o comando. Se switch_expr
for igual a
case_expr1 ou case_expr2 ou case_expr3 ..., ento as sentenas
stat2 at
stat2n sero executadas, e terminado o comando. Se switch_expr
for diferente
de todos as case_exprs anteriores, ento as sentenas stat3 at
stat3n sero
executadas, e terminado o comando.
-
43
Exemplo:
switch lower(METHOD)
case {'linear','bilinear'}, disp('Method is linear')
case 'cubic', disp('Method is cubic')
case 'nearest', disp('Method is nearest')
otherwise, disp('Unknown method.')
end
break
Propsito: encerra a execuo de comandos for ou while quando
so
encontrados.
Sintaxe: break.
input
Propsito: exibe mensagem na tela e d ao usurio um prompt para
entrada de
dados.
Sintaxe: input(texto); input(texto,s).
Descrio: input(texto) exibe o texto na tela da linha de comando
e retorna o
valor digitado at que seja pressionado enter. input(texto,s)
utilizado para
entrada de strings.
Exemplo: id=input(Digite sua idade) guarda o nmero digitado em
id;
nom=input(Digite o seu nome, s) guarda a string digitada em
nom.
disp
Propsito: exibe texto na tela de comando.
Sintaxe: disp(texto).
keyboard
Propsito: invoca o teclado a partir de um arquivo MATLAB.
Sintaxe: keyboard.
pause
Propsito: gera pause na execuo de um arquivo MATALB.
Sintaxe: pause; pause(n); pause on; pause off.
-
44
Descrio: pause interrompe a execuo at que o usurio aperte alguma
tecla.
Pause(n) interrompe a execuo por n segundos. Pause on (off) liga
(desliga) o
modo de pausa dos comandos subseqentes.
Exemplo: pause; pause(5); pause on; pause off.
Examine tambm os comandos: return, eval; feval; evalin;
builtin;
assignin; run; script functio; global; mfilename; lists exist;
isglobal;
nargchk; nargin; nargout; varargin; varargout; inputname;
error;
warning; lasterr; errortrap; fprintf; sprintf; uimenu;
uicontrol; dbstop.
8.3 Funes de Controle de Baixo Nvel
fopen
Propsito: abrir arquivo para leitura e/ou escrita.
Sintaxe: fopen(nome-do-arq,permisso)
Descrio: abre arquivo com o nome especificado para as operaes
descritas
em permisso.
Exemplo: fopen(novo.m,r) abre o arquivo novo.m para leitura.
fclose
Propsito: fechar arquivo.
Sintaxe: fopen(nome-do-arq).
fopen
Propsito: abrir arquivo para leitura e/ou escrita.
Sintaxe: fopen(nome-do-arq,permisso)
Descrio: abre arquivo com o nome especificado para as operaes
descritas
em permisso.
Exemplo: fopen(novo.m,r) abre o arquivo novo.m para leitura.
Examine tambm os comandos: fread; fwrite; fscanf; fprintf;
fgetl;
fgets; ferror; fseek; ftell; sprintf; sscanf.
-
45
8.4 Funes Especializadas: Matemticas, Matriciais, lgebra
Linear
So funes de clculos algbricos com matrizes e clculos de lgebra
linear.
Examine os comandos: cond; norm; rcond; rand; det; trace; null;
orth; rref;
chol; lu; qr; nnls; pinv; lscov; poly; hess; qz; rsf2csf;
cdf2rddf; schur;
balance; svd; expm; expm1; expm2; expm3; logm; log2m; sqrtm;
funm;
speye; sprandn; sprandsym; spdiags; sparse; full; spconvert;
nnz;
nonzeros; nzmax; spones; spalloc; issparse; spfun; spy; gplot;
colmmd;
symmmd; symrcm; colperm; tandperm; dmperm; normest; condest;
sprank; symbfact; spparms; spaugment.; compan; hadamard; hankel;
hilb;
invhilb; pascal; rosser; toeplitz; vander; wilkinson.
8.5 Funes de Integrao, Interpolao e Tratamento de Dados
So funes teis para soluo de equaes diferenciais; interpolao de
curvas
e tratamento de pontos.
Examine os comandos: roots; poly; polyval; polyvalm; residue;
polyfit;
polyfit; polyder; conv; deconv; interp1; intep2; interpft;
griddata; ode23;
ode45; quad; quad8; fmin; fmins; fzero; fplot.
8.6 Funes de Controle de Cores, Imagens e Caracteres
So funes teis para o controle de cores, manipulao de imagens,
animao e
controle de grficos.
Examine os comandos: colormap; caxis; shading; hsv; gray; hot;
cool;
bone; copper; pink; flag; hsv2rgb; rgb2hsv; brighten; spinmap;
rgbplot;
surfl; pecular; diffuse; surfnorm; sound; saxis; auwrite;
auread; mu2lin;
lin2mu; string; abs; setstr; str2mat; strcomp; upper; lower;
num2str;
int2str; str2num; sprintf; sscanf; hex2num; hex2dec;
dec2hex.
-
46
9 PROGRAMANDO EM ARQUIVOS .m
Podemos elaborar programas utilizando instrues assemelhadas
aos
comandos das linguagens procedurais, lanando dos arquivos .m do
MATLAB.
Para isto basta criar um arquivo com extenso .m no diretrio
/work ou /temp
do seu computador.
9.1 Exemplos de Aplicao de Programa '.m'
Exemplo 9.1: Programa raizes.m, que calcula as razes de uma
equao do 2
grau.
% Objetivo: Calcular raizes de uma equao do 2o.grau
% Prof. Baleeiro
disp(' ==== Entre com a, b e c ==== '); a = input(' Coeficiente
de x^2 '); b = input(' Coeficiente de x '); c = input(' Termo
independente de x '); if a == 0. disp(' ==== A equacao nao e do
segundo grau ==== '); a = input(' Coeficiente de x^2 - a 0 '); end
delta = b^2-4.*a*c; delta if delta == 0. ch = 0; end if delta <
0. ch = -1; end if delta > 0. ch = 1; end x(1) = (-b +
sqrt(delta))/(2.*a); x(2) = (-b - sqrt(delta))/(2.*a); x switch ch
case 0, disp(' Raizes reais e iguais.') case -1, disp(' Raizes
complexas conjugadas.') otherwise,disp(' Raizes reais e
desiguais.') end % Fim
-
47
Para executar este programa preciso apenas digitar no ambiente
do MATLAB
(isto , no prompt) o nome do programa sem a extenso:
>>raizes < ENTER >
As razes de qualquer polinmio podem ser encontradas de maneira
mais direta
no ambiente de trabalho do MATLAB. O comando utilizado
denominado "roots", que
tem o formato a seguir:
>>roots([A B C]) < ENTER >
Onde A coeficiente do termo x^2, B o coeficiente do termo x e C
o termo
independente.
Por exemplo, as razes da equao do 2o x^2 - 5x + 6 = 0 so:
Um outro exemplo de clculo da razes de um polinmio:
Ou seja, as razes do polinmio x^3-6x^2+11x-6 = 0 so: 1, 2 e
3.
Obs.: O comando poly faz a operao inversa do comando roots, ou
seja,
tendo-se as razes, obtm-se o polinmio correspondente. Assim,
poly([1 2 3])
ans = 1 -6 11 -6 (polinmio x^3 - 6x^2 + 11x - 6 = 0)
roots([1 -6 11 -6]) ans = 3.0000 2.0000 1.0000
roots([1 -5 6])
ans = 3 2
-
48
Exemplo 9.2: Um outro exemplo de implementao de um cdigo .m no
MATLAB
mostrado a seguir em que a soluo de um sistema algbrico linear
obtida pela
aplicao do mtodo iterativo de Jacobi. Denominaremos este
programa de jacobi.m.
% Metodo de Jacobi para solucionar Ax = b
% Prof. Baleeiro
A = [6 -1 0;-1 4 1;0 1 6]
b = [-1; 1 ; 2]
[n,n] = size(A);
x = zeros(n,1);
r = zeros(n,1); % vetor de residuos
tol = 1e-2;
% Matriz de iteracao:
D = diag(diag(A))
L = tril(A)-D;
U = triu(A)-D;
E = -inv(D)*(L + U);
F = inv(D)*b;
% Autovalores de E
eig(E)
k = 0;
maior = inf;
while maior > tol
x = E*x + F;
r = A*x-b;
maior = norm(r,inf) % norma infinita do vetor r
pause
k = k + 1;
end;
x
k
-
49
Para compreender o cdigo mostrado anteriormente, segue uma
breve
descrio do mtodo iterativo de Jacobi para soluo de bAx = . O
mtodo iterativo de
Jacobi quando aplicado para resolver um sistema de equaes
lineares algbricas
simultneas, do tipo bAx = baseia-se numa partio da matriz dos
coeficientes, da
seguinte forma DULA ++= , onde L e U so matrizes triangulares
inferior e superior
obtidas de A , respectivamente, excluindo-se os elementos da
diagonal, e D a matriz
composta apenas dos elementos da diagonal da matriz A (observe
que L , U e D no
so matrizes resultantes da fatorao de A , trata-se apenas de uma
partio).
Dessa forma, o sistema original pode ser reescrito como a
seguir:
,)(
FExx
bxULDx
bAx
+=++=
=
de modo que,
bDFULDE 11 ),( =+= .
Designando E com a matriz de iterao, )(1 ULDE += , dado )0(x e
uma
tolerncia tol , o processo iterativo consiste em construir
aproximaes do vetor
soluo x do sistema algbrico, conforme a equao de iterao mostrada
a seguir:
FExx kk +=+ )()1( , para ,3,2,1,0=k .
O processo iterativo deve continuar enquanto o critrio de
convergncia no for
alcanado. Uma forma que pode ser adequada para verificar a
convergncia calcular
a norma-infinita do vetor de resduos, bAxr kk = ++ )1()1( , isto
, se tolr k
+ )1( ,
ento a )(kx a uma aproximao aceitvel para solucionar bAx = . Uma
condio
para convergncia do mtodo de Jacobi que o maior mdulo dos
autovalores da
matriz E seja inferior a 1.
Os passos do algoritmo do mtodo de Jacobi para soluo de sistemas
bAx =
so apresentados a seguir:
-
50
A = [-1, 2, 0; 1/2, 9, 3; 2, 4, 5] A = -1.0000 2.0000 0 0.5000
9.0000 3.0000 2.0000 4.0000 5.0000 b = [3; -2; 7] b = 3 -2 7 x =
A\b x = -6.1923 -1.5962 5.1538
Dados A , b , tol e )0(x
Calcule D diag(diag(A)), L , tril(A) D, U triu(A) D
)(1 ULDE +=
bDF 1=
Verifique se 1|)(| tol faa
FExx kk ++ )()1( , maior |)(| )1( bAxmximo k + , 1+ kk
Fim enquanto
Sada x e k
Exemplo 9.3: Soluo de sistema de equaes algbricas lineares
=
72
3
54239021
3
2
1
21
x
x
x
A soluo do exemplo 9.3 facilmente obtida informando ao MATLAB,
no
prprio prompt, a matriz A e o vetor independente b . A soluo x
procurada para o
sistema obtida com o comando x = A\b, como a seguir.
-
51
10 MATEMTICA SIMBLICA
Exemplo 10.1: Soluo de integral definida
dx
x +1
0 121
O exemplo 10.1, para ser resolvido, requer que seja informado ao
MATLAB que
h uma varivel x , que deve ser tratada como um dado simblico.
Isto feito atravs
do comando:
Os comandos seguintes mostram a finalizao da soluo do exemplo
10.1:
Realmente, o valor resultante da integrao da funo 1
1)(
2 +=
xxf entre 0 e 1
de fato 4
.
Exemplo 10.2: Sistema massa-mola. Este sistema ser, tambm,
analisado usando
o Simulink, na seo 11 deste texto.
Fig. 10.1: Sistema massa-mola.
syms x
int(1/(x^2 + 1),0,1) ans = 1/4*pi
x
m
F m
0
-
52
As equaes do sistema massa-mola so dadas na seo 11 e, assim,
passa-se
diretamente ao programa .m desenvolvido e os resultados mais
importantes.
Selecionou-se para este exemplo os grficos de energia versus
deslocamento e
velocidade versus deslocamento, que sero comparados com os
resultados
equivalentes, quando da utilizao do Simulink. Observar que, no
presente resultado, a
velocidade mostrada apenas no sentido do deslocamento negativo
para o positivo. A
velocidade no sentido inverso (que mostrada no modelo do
Simulink) negativa.
% Sistema massa-mola % Prof. Jos Wilson k =input('constante de
elasticidade da mola (N/m)Ex.:700= '); xmax=input('deslocamento
mximo da mola xmax (cm);Ex.: 20= '); m =input('massa do bloco
ligado mola (g); Ex.:500= '); xmax = xmax/100; m = m/1000; x =
[-xmax:0.001:xmax]; Etotal = (1/2)*k*(xmax^2); % Energia total F =
-k*x; % Fora na mola Ep = (1/2)*k*(x.^2); % Energia potencial Ec =
Etotal - Ep; % Energia cintica - Conservao de energia v =
sqrt(2*Ec./m); % Velocidade da massa-Conservao de energia vmax =
sqrt(2*Etotal/m); % Velocidade mxima figure(1) plot(x*100,Ep,'r')
hold on plot(x*100,Ec,'k') plot(x*100,Etotal,'m') axis([-xmax*100
xmax*100 0 Etotal]) xlabel('deslocamento (cm)') ylabel('energia
cintica, potencial e total (J)') grid on hold off figure(2)
plot(x*100,v) axis([-xmax*100 xmax*100 0 vmax])
xlabel('deslocamento (cm)') ylabel('velocidade da massa (m/s)')
grid on
-
53
Fig. 10.2: Energia Cintica, Potencial e Total versus
Deslocamento
Fig. 10.3: Velocidade versus Deslocamento
Exemplo 10.3: Lanamento de projtil. Neste exemplo entra-se com
os dados de
altura inicial, velocidade inicial, posio horizontal inicial e
ngulo de lanamento. O
programa calcula o tempo transcorrido at o projtil atingir o
solo, a velocidade no
momento em que toca o solo e a altura mxima atingida.
-20 -15 -10 -5 0 5 10 15 200
2
4
6
8
10
12
14
deslocamento (cm)
ener
gia
cin
tica,
pot
enci
al e
tota
l (J)
Energia Potencial
Energia Cintica
Energia Total
-20 -15 -10 -5 0 5 10 15 200
1
2
3
4
5
6
7
deslocamento (cm)
velo
cida
de d
a m
assa
(m/s
)
-
54
Fig. 10.4: Lanamento de projtil
VO VOY
VOX
h
d dO
hO
% Lanamento de projtil % Prof. Jos Wilson ho = input('Altura
inicial ho (m) Ex.: 40 = '); vo = input('velocidade inicial vo
(m/s) Ex.: 25 = '); alfa = input('ngulo de lanamento alfa (grau)
Ex.: 45 = '); do = input('posio inicial do projtil (m) Ex.: 0 = ');
alfa = alfa*pi/180; vxo = vo*cos(alfa); vyo = vo*sin(alfa); g =
-9.8; % Acelerao da gravidade h = [0.5*g vyo ho]; % Para clculo do
tempo mximo tlimites = roots(h); % Clculo do tempo limite - tem 2
valores if tlimites(1) > 0 tmax = tlimites(1); else tmax =
tlimites(2); end t = [0:0.01:tmax]; vx = vxo; vy = vyo + g*t; thmax
= abs(vyo/g); % tempo para atingir altura maxima d = do + vxo*t; h
= ho + vyo*t + 0.5*g.*t.^2;
-
55
Fig. 10.5: Altura do projtil versus alcance horizontal
A altura mxima, a distncia mxima e o tempo decorrido at atingir
o solo so: hmax = 55,9 m dmax = 91,6 m tmax = 5,18 s
hmax = ho + vyo*thmax + 0.5*g*thmax^2; % altura maxima vmax =
vyo + g*tmax; % velocidade maxima dmax = do + vxo*tmax; % distancia
maxima alcancada figure(1) plot(d,h) axis([0 dmax 0 hmax])
xlabel('distncia horizontal (m)') ylabel('altura (m)') grid on
figure(2) plot(t,h) axis([0 tmax 0 hmax]) xlabel('tempo (s)')
ylabel('altura (m)') grid on figure(3) plot(t,d) axis([0 tmax 0
dmax]) xlabel('tempo (s)') ylabel('distncia horizontal (m)') grid
on
0 10 20 30 40 50 60 70 80 900
10
20
30
40
50
distncia horizontal (m)
altu
ra (m
)
-
56
10.1 Uso da Matemtica Simblica
O MATLAB possui um Toolbox que permite ao usurio operar com
matemtica
simblica. Sabemos que variveis numricas so usadas para armazenar
valores
numricos (e.g., x = 2) e vetores de caracteres so usados para
armazenar textos (e.g.,
s = Jonas). O Toolbox de Matemtica Simblica usa objetos
simblicos para
representar variveis e operaes (e.g., x = sym( x )). Neste tipo
de aplicao no
necessrio que as variveis tenham um valor numrico
predefinido.
A matemtica simblica consiste da resoluo de equaes simblicas
(isto ,
na forma literal) e da execuo de operaes de clculo
diferencial/integral e lgebra
por meio da aplicao de regras conhecidas e identidades a
determinados smbolos,
exatamente como voc aprendeu a resolv-las nos cursos de clculo e
lgebra.
Exemplo 10.4: Obter, de forma literal, a derivada em relao a x
da funo f(x)
dada a seguir:
bxaxxf += 2)(
necessrio, em primeiro lugar, informar ao MATLAB que x, a, b e f
no so
objetos simblicos, ou seja, no possuem valores numricos.
Ento:
Em seguida, define-se a funo e utiliza-se o comando diff para
concluir a
operao simblica de derivao.
syms x a b f
f = a*x^2 + b*x
f = a*x^2+b*x diff(f,x)
ans = 2*a*x+b
-
57
Exemplo 10.5: Outro exemplo (mais complexo) do uso da matemtica
simblica do
MATLAB. Clculo da rea interna de uma elipse dada no sistema de
coordenadas xy
pela equao:
12
2
2
2=+
b
y
a
x
Deseja-se obter uma frmula para calcular sua rea interna A dados
a e b . A
integral mostrada a seguir usada no clculo dessa rea.
dxxaab
Aa
=0
224
A soluo deste problema conhecida dos estudantes que fizeram
cursos de
clculo diferencial e integral. O resultado A=ab. Utilize a
Toolbox de Matemtica
Simblica para comprovar este resultado. No caso, voc dever lanar
mo do
comando int, que calcula integral de uma funo dada em intervalo
definido.
10.2 Grficos em Duas Dimenses
Embora existam vrias formas para se fazer grficos, nesta seo
vamos nos ater
apenas exemplificao do emprego do comando plot. Esse comando j
foi
utilizado em alguns exemplos anteriores.
Exemplo 10.6: Grfico em duas dimenses
Esse exemplo cria 30 pontos no intervalo 22 x para formar o
eixo
horizontal do grfico e cria o vetor y contendo a exponencial 2xe
dos pontos em x. O
x = linspace(-2,2,30); y = exp(-x.^2); plot(x,y)
-
58
comando plot abre uma janela grfica, ajusta os eixos para
acomodar os dados,
marca os pontos e conecta-os a linhas retas. O resultado
ilustrado na Fig. 10.6.
Fig. 10.6: Sada grfica obtida com os comandos indicados
anteriormente.
10.3 Grficos em Trs Dimenses
Para elaborar grficos tridimensionais o MATLAB possui diversos
comandos
poderosos. Sugerimos que voc tente as seqncias de comandos
propostas nos
exemplos que seguem.
Exemplo 10.7: Use do comando plot3 para desenhar uma hlice, de
acordo com a
seqncia:
-2 -1.5 -1 -0.5 0 0.5 1 1.5 20
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
t = linspace(0, 10*pi); plot3(sin(t),cos(t),t)
-
59
x = -7.5:.5:7.5; y = x; [X,Y] = meshgrid(x,y); R = sqrt(X.^2 +
Y.^2) + eps; Z = sin(R)./R; mesh(X,Y,Z)
Exemplo 10.8: Uso do comando mesh para grficos tridimensionais.
Use a
seqncia de comandos para desenhar uma superfcie.
Fig. 10.7: Sada grfica obtida com a seqncia de comandos do
exerccio 3.
-
60
11 SIMULINK
O SIMULINIK um Programa de Simulao dinmica de sistemas a partir
de
seu modelo no espao de estados, do seu modelo no domnio da
freqncia ou do seu
modelo no domnio do tempo.
O simulink iniciado digitando-se simulink na linha de comando do
MATLAB,
ou ainda selecionando-se o boto de incio do SIMULINK. Uma vez
iniciado
apresentada a tela da figura a seguir:
Fig. 11.1: Tela Inicial do Simulink
Fig. 11.2: Funes disponveis para a classe linear do
Simulink.
-
61
Os diversos blocos de simulao podem ser arrastados para o
arquivo, com a
finalidade de montar o modelo para simulao. Cada classe de funes
possui uma
janela prpria (caixa), veja por exemplo os blocos disponveis
para as funes da
classe linear na figura anterior.
A seguir so dados alguns exemplos de emprego do Simulink em
problemas de
Matemtica, Fsica, Circuitos Eltricos, Controle de Processos e
Outros.
Exemplo 11.1: Equao Diferencial de Primeira Ordem
Considere .,),( RR = tutuu Seja a equao diferencial de primeira
ordem
em )(tu , com valor inicial conhecido, .1)0( =u
02 =+ utdtdu
(11.1)
Analiticamente fcil mostrar que uma soluo dessa equao
diferencial :
22
)()0()( tt etueutu == (11.2)
Vamos resolver a equao diferencial (11.1) utilizando o Simulink
e, ao final,
obteremos a resposta na forma grfica.
Soluo:
PASSO 1: Inicialmente escreve-se a equao (11.1) de uma forma
mais adequada
para diagrama de blocos. Transpondo os termos, chega-se forma
indicada
em (11.3):
= dtutu 2 (11.3)
Ao fator 2 chamamos de ganho; o integrando resultado de um
produto de duas
funes, t e u . Portanto, a resposta u a resultante da sada de um
integrador
multiplicado pelo ganho 2.
-
62
PASSO 2: A partir da janela mostrada na Figura 11.1,
selecionamos os blocos
necessrios para expressar a relao (11.3).
Fig. 11.3: Diagrama de blocos para resolver o Exemplo 11.1
A condio inicial informada ao bloco integrador. O eixo dos
tempos
representado pelos blocos Clock e To Workspace. Em ambos os
blocos To
Workspace preciso definir o nmero de pontos e o tamanho do passo
numrico
(neste exemplo, tomamos 5000 e 0.01, respectivamente).
PASSO 3: Para executar o arquivo criado, definido pelo diagrama
de blocos, nos cones
da mesma janela, pressionamos Simulation e, em seguida,
Start.
Fig. 11.4: Para executar o arquivo de blocos.
PASSO 4: Para visualizar o resultado, no prompt do MATLAB,
digitamos o comando:
A sada grfica da resposta ttu )( como ilustra a Fig. 11.5.
plot(t,u)
-
63
Fig. 11.5: Grfico de ttu )( para 0t .
Finalizamos, desse modo, a soluo da equao diferencial (11.1),
que resultou
na representao grfica da funo 2te para 0t .
Exemplo 11.2: Sistema Massa-Mola
Fig. 11.6: Representao do Sistema Massa-Mola
0 2 4 6 8 100
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
x
m
F m
0
-
64
Equaes bsicas da Fsica:
Acelerao: 2
2
dt
xddtdv
a == ( 11.4 )
Velocidade: == adtdtdx
v ( 11.5 )
Deslocamento: = vdtx ( 11.6 )
Equaes bsicas do Sistema massa-mola:
Fora: makxF == 2
2
dt
xdmkx = x
mk
dt
xda == 2
2 ( 11.7 )
Energia potencial: 221
kxE p = ( 11.8 )
Energia cintica : 221
mvEc = ( 11.9 )
Verifica-se das equaes que a acelerao, no sistema
massa-mola,
diretamente proporcional ao deslocamento 'x'. O fator de
proporcionalidade a
constante '-k/m'. Essa a informao inicial para comear o modelo
dado na Fig. 11.7.
Fig. 11.7: Modelo do Simulink para o Sistema Massa-Mola
Para a simulao do sistema necessrio fornecer um valor inicial
para um dos
dois blocos de integrao. Essa informao ser, no caso, o limite
para a varivel de
sada. Por exemplo, desejando-se limitar o deslocamento 'x' entre
os valores -20 cm
(-0.2 m) e 20 cm, fixa-se em 0.2 o valor inicial da segunda
integral. Uma outra
x va
v
velocidade
t
tempo
x
posio
ac
acelerao
s
1
Integrator1s
1
Integrator
k/2
m/2
-k/m
Ep
En. Potencial
Ec
En. Cinetica
Clock
-
65
informao fundamental o valor da constante de proporcionalidade
'k' e o valor da
massa 'm'. Esses valores podem ser digitados diretamente no
prompt (rea de trabalho
do MATLAB), como mostrado a seguir:
As figuras que seguem so resultantes do modelo da Fig. 11.7.
Fig. 11.8: Energia cintica e potencial versus deslocamento
Fig. 11.9: Energia cintica e potencial versus velocidade
-0.2 -0.15 -0.1 -0.05 0 0.05 0.1 0.15 0.20
5
10
15
posio (m)
Ene
rgia
Cin
tic
a e
Pot
enci
al (J
)
Energia Cintica
Energia Potencial
-8 -6 -4 -2 0 2 4 6 80
5
10
15
velocidade (m/s)
Ene
rgia
Cin
tic
a e
Pot
enci
al (J
)
Energia Cintica
Energia Potencial
k = 700;
m = 0.5;
-
66
Fig. 11.10: Velocidade versus deslocamento
Exemplo 11.3: Circuito RC Srie
Considere o circuito eltrico da Fig. 11.11, que possui um
resistor e um capacitor
em srie alimentados por uma fonte constante. O capacitor possui
uma tenso inicial
Vv 10)0( = e deseja-se obter a resposta ttv )( para .0t
Fig. 11.11: Circuito eltrico RC srie com uma fonte de tenso
contnua.
-0.2 -0.15 -0.1 -0.05 0 0.05 0.1 0.15 0.2-8
-6
-4
-2
0
2
4
6
8
velo
cida
de (m
/s)
posio
-
67
Modelagem Matemtica do Circuito
A modelagem matemtica do circuito obtida aplicando-se a 2a Lei
de Kirchhoff
ao percurso fechado, e usando a forma genrica e , para expressar
tenso:
0= vve R
Por outro lado, sabemos relacionar a tenso no resistor e a tenso
no capacitor
com a corrente que os atravessam, )(ti :
)(tRivR =
dtdv
Cti =)( 0)( = vtRie ou 0= vdtdv
RCe
Assim, a equao diferencial geral fica:
eRC
vRCdt
dv 11 =+
Substituindo os valores de R = 1k e C = 1mF e VEe 5== na
equao
anteriormente mostrada, resulta na equao mostrada a seguir:
5=+ vdtdv
onde 10)0( =v . Soluo do Circuito Utilizando o Simulink
Para utilizar o Simulink devemos expressar a equao diferencial
da seguinte
maneira:
= dtveRCv )(
1
A expresso acima conseguida facilmente apenas isolando o termo
dtdv e
depois aplicando a integrao (que a operao inversa da derivao).
Essa forma
-
68
ideal para a simulao usando o Simulink. Constri-se ento o modelo
mostrado na
Fig. 11.12.
Fig. 11.12: Diagrama de blocos do Simulink para o circuito
eltrico da Fig. 11.11
Fig. 11.13: Sada grfica ttv )( para 0t para o circuito eltrico
da Fig. 11.11.
0 2 4 6 8 105
5.5
6
6.5
7
7.5
8
8.5
9
9.5
10
-
69
12 EXERCCIOS RESOLVIDOS
01) Considere a seguinte equao diferencial: )(3232122
2tuy
dtdy
dt
yd =++ . Obter a
soluo y(t) supondo todas as condies iniciais iguais a zero,
usando a transformada
Laplace.
A transformada Laplace :
ssYssYsYs
32)(32)(12)(2 =++
A soluo para )(sY :
sssssssY
3212
32
)3212(
32)(
232 ++=
++=
Resolver a equao diferencial utilizando a funo residue do
MATLAB.
Soluo:
>> numy = 32
>> deny = [1 12 32 0]
>> [r p k] = residue(numy,deny)
O resultado obtido o seguinte:
r =
1
-2
1
p =
-8
-4
0
k =
[]
que se traduz em:
-
70
)8(1
)4(21
)(+
++
=sss
sY
)21()( 84 tt eety += .
02) O movimento da massa, designado por )(ty , descrito pela
equao diferencial:
( ) ( ) ( ) ( )trtkydt
tdyb
dt
tydM =++
2
2
onde:
M = massa em kg,
b = forca de atrito (amortecimento viscoso),
k = constante de mola de uma mola ideal,
r = fora em Newton.
A resposta dinmica livre, )(ty , do sistema
)21(21
)0()(
+
= tnsen
tney
ty
onde:
= relao de amortecimento = kM
b
2
n = freqncia natural do sistema = Mk
e 1cos= .
Fazendo-se )0(y = 0.15 m, M = 1kg, k = 2, para 1=b , simule no
MATLAB para obter o
grfico referente a resposta natural do sistema e verifique que a
resposta
subamortecida.
Soluo:
>> y0 = 0.15;
>> wn = sqrt(2);
>> quisi = 1/(2*sqrt(2*1));
>> c1 = (y0/sqrt(1-quisi^2));
>> teta = acos(quisi);
>> t=[0:0.1:10];
>> c2 = exp(-quisi*wn*t);
>> c3 = sin(wn*sqrt(1-quisi^2)*t+teta);
>> y=c1*c2.*c3;
>> plot(t,y)
-
71
O grfico da resposta natural do sistema obtido com o MATLAB para
os parmetros
dados mostrado na Fig. 12.1.
Fig. 12.1: Sada grfica tty )( para 0t .
03) Dada a funo de transferncia, obtenha o que se pede:
a) calcular zeros e plos;
b) exibir a funo de transferncia;
c) obter o mapa dos zeros e plos.
20030
7010)(
2 +++=ss
ssG
Soluo:
>> numg = [10 70];
>> zeros = roots(numg)
>> deng = [1 30 200]
>> polos = roots(deng)
>> tfout(numg,deng)
>> sys = zp(zeros,polos,1);
>> pzmap(sys)
-
72
04) Um sistema dinmico linear representado no espao de estados
pelas seguintes
equaes matriciais:
DuCxy
BuAxx
+=+=
Obtenha a representao no espao de estados sob a forma de
variveis de fase das
seguintes funes de transferncia usando a funo tf2ss do
MATLAB:
97
12)(
21 +++=ss
ssT
Soluo:
>> num=[2 1]
>> den=[1 7 9]
>> [A,B,C,D]=tf2ss(num,den)
As matrizes resultantes so:
A =
-7 -9
1 0
B =
1
0
C =
2 1
D =
0
05) Sejam as seguintes funes de transferncia nos blocos em
cascata:
)14)(2)(5()4)(2(
)(++
=sss
sssGR(s)
U(s)Y(s)
25001
)(s
ssH
+=
Use a funo series do MATLAB para transform-las em uma s.
-
73
Soluo;
>> n1=[1 -2]
>> n2=[1 -4]
>> ng=conv(n1,n2)
>> d1=[1 5]
>> d2=[1 2]
>> d3=[1 -14]
>> dg=conv(d1,conv(d2,d3))
>> nh=[1 1]
>> dh=[500 0 0]
>> [n,d]=series(ng,dg,nh,dh)
A funo de transferncia resultante dos dois blocos em cascata a
seguinte:
2345
23
70000440003500500
825
ssss
sss
++
.
06) Analise a seqncia de comandos do MATLAB apresentada a
seguir.
a) extraindo e inserindo
A = [ 1 3 4; -1 3 0; 6 -1 2]
C = [1 + i, 1 - i; 2i, 1 i]
b = [1; 3; -1]
A(:,2)
A(1,:)
A(2,3)
M = [A,b]
M(end)
transpose(C) % diferente de C' se C for complexa
C'
A(3:6)
A(:,2) = [0; 0; 0] % insere o vetor da direita no lugar da
coluna 2
-
74
b) criando matrizes
>> D = ones(3)
>> Z = eye(3)
>> R = rand(3)
c) operaes sobre matrizes e sobre elementos de matrizes
>> trace(A) % soma algbrica dos elementos da diagonal de
A
>> [m,n] = size(A)
>> [L,U,P] = lu(A) % obtem a fatorao PLU de A
>> chol(A) % somente para matriz definida positiva
d) decomposio espectral
Y = [4+i, -1+i, -3-2i;-1+i, 3-i, -2+i;-3-2i, -2+i, 5+i]
[P,D] = eig(Y)
W = P*D*P^-1
Y-W
Z = inv(Y)
disp(' o produto tem que resultar na matriz identidade');
Z*Y
H = P^-1;
B = (D^-1)*H;
U = P*B
Z-U
07) Obtenha uma raiz da funo unidimensional 1)( += xexf x com
estimativa inicial
8.0)0( =x .
Soluo:
-
75
>> fzero('exp(-x)-x+1',0.8) % obtem um zero da funcao
08) Dada a funo de transferncia
11
)()(
)(+
==ssR
sCsT ,
determine a resposta do sistema ao degrau unitrio, s
sR 1)( = .
Soluo:
>> clf
>> numg = [0 1];
>> deng = [1 1];
>> G = tf(numg,deng)
>> step(G)
>> title(' Amplitude versus tempo ')
pause
A resposta como mostrada na Fig.12.2.
Fig. 12.2: Sada grfica )(tc com entrada )()( tutr = , para 0t
.
-
76
09) Obtenha 5 termos do desenvolvimento em Srie de Taylor da
funo xxf cos)( = .
Soluo:
>> syms x
>> taylor(cos(x),5)
ans =
1-1/2*x^2+1/24*x^4
10) Ao final de sua seo de trabalho no prompt salve-a com o
comando save em um
arquivo com extenso .mat.
Soluo:
>> save hoje.mat
Dessa forma,o comando save salva o workspace em um arquivo
.mat.
Em seguida, utilize o comando clear all para limpar o contedo da
memria. Atravs
do comando load hoje.mat possvel carregar o contedo da memria
permitindo a
retomada do trabalho que estava sendo realizado.
11) Elabore um programa em arquivo .m que utilize a function do
MATLAB.
Soluo:
function [f] = fun2(a,b,x) % em arquivo .m separado
global f;
f = (b/a)*sqrt(a^2 - x.^2);
return;
% o conteudo a seguir em arquivo .m separado
global f;
a = input(' Valor de a: ');
b = input(' Valor de b: ');
N = input(' No. de simulacoes: ');
k = 0;
-
77
for j = 1:N,
x = a*rand; y = b*rand;
fun2(a,b,x);
if y
-
78
13 EXERCCIOS PROPOSTOS
01) Dada a matriz 33 , simtrica e definida positiva,
=610141016
A , e dado o vetor
de termos independentes,
=
211
b ,
a) use o comando chol(A)e obtenha a fatorao Cholesky da matriz A
;
b) verifique que CCA T= usando o comando transpose;
c) a partir dos fatores Cholesky de A , calcule a soluo Txxxx ][
321= de bAx = .
02) Dada a matriz literal 33 ,
+=
da
adaa
ada
A
0
0, e dado o vetor de termos
independentes, tambm literal,
+=
0a
da
b , utilize os recursos da matemtica simblica
para obter a soluo Txxxx ][ 321= .
Primeiro aplique a funo inv(A) para obter x . Em seguida,
empregue as funes
simplify e pretty para melhorar a visualizao da resposta.
03) Dados
=321112
231A e
=457
b , utilize o comando rref sobre a matriz
aumentada para obter forma escalonada reduzida e mostre que o
sistema bAx =
incompatvel. Para maior clareza, sugere-se que, antes de
empregar o comando rref,
declare os clculos na forma de fraes usando format rat.
04) Determine o zero da funo transcendental xexf x = 4)(
utilizando a funo
fzero com estimativa inicial 0.1. Confira no grfico atravs
de
-
79
>> ezplot('exp(-4*x)-x',0,1).
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
x
exp(-4*x)-x
05) Dada a equao diferencial 0)(2)(
3)(2 =++ tx
dttdx
dttxd
, com 1)0( =x e 0)0( =dt
dx.
Utilize o comando dsolve para obter a soluo )(tx . Em seguida,
visualize o grfico
da resposta obtida, )(tx , no intervalo 20 t .
06) Dados os binmios 1+x , 2x e 4+x . Multiplique-os usando
conv. A partir do
polinmio que resultou da multiplicao calcule as razes usando
roots.
07) Desejamos calcular a soluo analtica do seguinte sistema de
equaes
=++=+
=+
1)(21
1
22
2
22
ba
baxy
yx
.
Para tal, utilize o comando solve:
>> [b,x,y]=solve('x^2+y^2=1','1 +
2*x*y=(a + b)^2','a^2 + b^2=1').
As solues esperadas so: ax = , by = ou ax = , by = .
-
80
[x,y] = meshgrid(-2:.2:2, -2:.2:2);
z = x .* exp(-x.^2 - y.^2);
[px,py] = gradient(z,.2,.2);
contour(z), hold on, quiver(px,py), hold off
08) Sabemos que a derivada primeira da funo )()( xtgxf = )(sec1
2 xdxdf += , sendo
)cos(1)sec( xx = . Verifique este fato usando o comando
diff('sin(x)/cos(x)')
seguido logo aps pelo comando simplify(ans).
09) Calcule a rea sobe a curva da funo 21
4)(
xxf
+= no intervalo 10 x . Use o
comando int com limites de integrao definidos.
10) No Curso de Clculo Diferencial e Integral, o professor
ensina que a seguinte
integral indefinida
)(22 a
xtgarcab
dxxa
b =+
pode ser solucionada aplicando substituio trigonomtrica.
Comprove o resultado
mostrado anteriormente utilizando matemtica simblica e o comando
int sem limites
de integrao.
11) Utilize o comando pretty(diff(1/a*atan(x/a)*b,x)) e
verifique que o
resultado do exerccio 10 est correto.
12) Um importante conceito associado com a derivada de funes
escalares
n dimensionais o gradiente. Digite a seqncia de instrues no
prompt do
MATLAB:
Para entender melhor o que foi calculado com as instrues
anteriores utilize
surf(x,y,z).
-
81
14 BIBLIOGRAFIA
[1] HANSELMAN, Duane e LITTLEFIELD, Bruce. "MATLAB 5 Verso do
Estudante,
Guia do Usurio, Makron Books, So Paulo, 1999. 413 p. ISBN:
85-346-1058-4.
[2] ALVES, Antnio Csar Baleeiro. Notas de Aulas do Curso de
Circuitos Eltricos da
EEEC/UFG.
[3] RESNICK, Robert e HALLIDAY, David, "Fsica 1," 3a ed., Livros
Tcnicos e
Cientficos Editora S.A., Rio de Janeiro, 1981, ISBN:
85-216-0076-3.
[4] CHAPMAN, S. J. Programao em MATLAB para engenheiros. Thomson
Pione