Escolar Documentos
Profissional Documentos
Cultura Documentos
Apostila MATLAB PDF
Apostila MATLAB PDF
Goinia GO
2007
2
SUMRIO
1 INTRODUO 5
2 UTILIZANDO O MATLAB 9
8 OUTROS COMANDOS 39
9 PROGRAMANDO EM ARQUIVOS .M 46
10 MATEMTICA SIMBLICA 51
11 SIMULINK 60
12 EXERCCIOS RESOLVIDOS 69
13 EXERCCIOS PROPOSTOS 78
14 BIBLIOGRAFIA 81
4
5
1 INTRODUO
Biblioteca Toolbox
numrica
Toolbox
Linguagem de
SIMULINK
programao
Internet: http://www.mathworks.com
Telefone (ligao para os EUA): 00-1-508-647-7000
7
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.
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:
2 UTILIZANDO O MATLAB
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.
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.
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.
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
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.
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.
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
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<j. j:d:k o mesmo
que [j j+d j+2*d ... k], j:d:k vazio se k<j. d pode ser negativo, mas neste caso k
deve ser menor que j.
Exemplos: 1:10; 0:5:100; 100:-5:0.
caracter =
Propsito: executa atribuies
Exemplos: x=[1 2 3; 4.5 6 7.5];
caracter ,
Propsito: separar elementos em uma matriz; indexar matrizes; separar
argumento de uma funo; separar comando em uma linha com vrios
comandos.
Exemplos: 2*a(2,3); plot(x,y); x(i,j); mat=[a, b, c]; clear, disp(memria limpa).
caracter ;
Propsito: usado em declarao de matrizes para separar linhas; ou usado para
omitir a apresentao do resultado de uma operao na tela.
Exemplos: x=[1 2 3; 9 8 7]; a=2+3;
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 ( )
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.
caracteres & | ~
19
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
3.5.1 Inf
3.5.2 NaN
3.5.3 ieee
Aqui possvel cortar (cut), copiar (copy), colar (pate), limpar a tela da sesso
de trabalho (clear session).
Botes de Auxlio:
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
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.
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.
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
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.
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.
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
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.
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
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<0) da diagonal
principal. diag(m) equivale a diag(m,0).
Exemplo: diag(a); diag(a,1).
linspace
Propsito: cria um vetor com elementos linearmente espaados.
Sintaxe: linspace(x1,x2);linspace(x1,x2,N).
Descrio: linspace(x1,x2) gera um vetor com 100 pontos igualmente espaados
entre x1 e x2. linspace(x1,x2,N) gera um vetor com N pontos igualmente
espaados entre x1 e x2.
Exemplo: linspace(5,25); linspace(10,1000,200).
logspace
Propsito: cria um vetor com elementos logaritmicamente espaados.
Sintaxe: logspace(x1,x2); logspace(x1,x2,N).
Descrio: logspace(x1,x2) gera um vetor com 50 pontos logaritmicamente
espaados entre 10x1 e 10x2. logspace(x1,x2,N) gera um vetor com N pontos
logaritmicamente espaados entre 10x1 e 10x2.
Exemplo: logspace(-1,100); logspace(10,1000,200).
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<0) da diagonal principal. tril(a) equivale a tril(a,0), e
triu(a) equivale a triu(a,0).
Exemplos: triu(x); tril(x,2).
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
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.
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.
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).
8 OUTROS COMANDOS
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
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.
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
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 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.
9 PROGRAMANDO EM ARQUIVOS .m
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
roots([1 -5 6])
ans =
3
2
roots([1 -6 11 -6])
ans =
3.0000
2.0000
1.0000
poly([1 2 3])
ans =
% 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
Ax = b
Dx = ( L + U ) x + b
x = Ex + F ,
de modo que,
E = D 1( L + U ), F = D 1b .
x ( k +1) = Ex ( k ) + F , para k = 0, 1, 2, 3, .
O processo iterativo deve continuar enquanto o critrio de convergncia no for
alcanado. Uma forma que pode ser adequada para verificar a convergncia calcular
E = D 1 ( L + U )
F = D 1b
Verifique se mximo(| i |) < 1 (use o comando eig(E))
Faa k 0 , maior
Enquanto maior > tol faa
1 2 0 x1 3
2 9 3 x2 = 2
1
2 4 5 x3 7
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
51
10 MATEMTICA SIMBLICA
1 1
dx
0 x 2 +1
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:
syms x
int(1/(x^2 + 1),0,1)
ans =
1/4*pi
1
Realmente, o valor resultante da integrao da funo f ( x) = entre 0 e 1
x2 + 1
de fato .
4
Exemplo 10.2: Sistema massa-mola. Este sistema ser, tambm, analisado usando
o Simulink, na seo 11 deste texto.
F
m
0
x
Fig. 10.1: Sistema massa-mola.
52
% Sistema massa-mola
% Prof. Jos Wilson
xmax = xmax/100;
m = m/1000;
x = [-xmax:0.001:xmax];
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
Energia Total
14
12
Energia Cintica
4
Energia Potencial
2
0
-20 -15 -10 -5 0 5 10 15 20
deslocamento (cm)
6
velocidade da massa (m/s)
0
-20 -15 -10 -5 0 5 10 15 20
deslocamento (cm)
h
VOY VO
VOX
hO
d
dO
% Lanamento de projtil
% Prof. Jos Wilson
alfa = alfa*pi/180;
vxo = vo*cos(alfa);
vyo = vo*sin(alfa);
g = -9.8; % Acelerao da gravidade
if tlimites(1) > 0
tmax = tlimites(1);
else
tmax = tlimites(2);
end
t = [0:0.01:tmax];
vx = vxo;
vy = vyo + g*t;
d = do + vxo*t;
h = ho + vyo*t + 0.5*g.*t.^2;
55
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
50
40
altura (m)
30
20
10
0
0 10 20 30 40 50 60 70 80 90
distncia horizontal (m)
f ( x) = ax 2 + bx
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
x2 y2
+ =1
a2 b2
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.
a
b
A=4 a 2 x 2 dx
a0
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.
x = linspace(-2,2,30);
y = exp(-x.^2);
plot(x,y)
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.
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
-2 -1.5 -1 -0.5 0 0.5 1 1.5 2
Exemplo 10.7: Use do comando plot3 para desenhar uma hlice, de acordo com a
seqncia:
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);
Z = sin(R)./R;
mesh(X,Y,Z)
11 SIMULINK
du
+ 2t u = 0 (11.1)
dt
2 2
u (t ) = u (0)e t u (t ) = e t (11.2)
Soluo:
u = 2 t u dt (11.3)
PASSO 3: Para executar o arquivo criado, definido pelo diagrama de blocos, nos cones
da mesma janela, pressionamos Simulation e, em seguida, Start.
plot(t,u)
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
0 2 4 6 8 10
F
m
0
x
d 2x d 2x k
Fora: F = kx = ma kx = m 2
a= 2
= x ( 11.7 )
dt dt m
1 2
Energia potencial: E p = kx ( 11.8 )
2
1 2
Energia cintica : Ec = mv ( 11.9 )
2
a 1 v 1
x -k/m x
s s
posio
Integrator Integrator1
ac v
acelerao velocidade
m/2 Ec
En. Cinetica
k/2 Ep
En. Potencial
t
Clock tempo
k = 700;
m = 0.5;
15
Energia Cintica
Energia Cintica e Potencial (J)
10
Energia Potencial
0
-0.2 -0.15 -0.1 -0.05 0 0.05 0.1 0.15 0.2
posio (m)
15
Energia Potencial
Energia Cintica e Potencial (J)
10
Energia Cintica
0
-8 -6 -4 -2 0 2 4 6 8
velocidade (m/s)
velocidade (m/s)
0
-2
-4
-6
-8
-0.2 -0.15 -0.1 -0.05 0 0.05 0.1 0.15 0.2
posio
Fig. 11.11: Circuito eltrico RC srie com uma fonte de tenso contnua.
67
e vR v = 0
vR = Ri (t )
dv dv
i (t ) = C e Ri (t ) v = 0 ou e RC v = 0
dt dt
dv 1 1
+ v= e
dt RC RC
dv
+v =5
dt
onde v(0) = 10 .
1
v= (e v)dt
RC
A expresso acima conseguida facilmente apenas isolando o termo dv dt e
Fig. 11.12: Diagrama de blocos do Simulink para o circuito eltrico da Fig. 11.11
10
9.5
8.5
7.5
6.5
5.5
5
0 2 4 6 8 10
Fig. 11.13: Sada grfica v(t ) t para t 0 para o circuito eltrico da Fig. 11.11.
69
12 EXERCCIOS RESOLVIDOS
d2y dy
01) Considere a seguinte equao diferencial: + 12 + 32 y = 32u (t ) . Obter a
2 dt
dt
soluo y(t) supondo todas as condies iniciais iguais a zero, usando a transformada
Laplace.
A transformada Laplace :
32
s 2Y ( s ) + 12 sY ( s) + 32Y ( s ) =
s
A soluo para Y (s) :
32 32
Y (s) = =
2
s ( s + 12s + 32) s + 12s 2 + 32s
3
-8
-4
0
k=
[]
que se traduz em:
70
1 2 1
Y (s) = +
s ( s + 4) ( s + 8)
y (t ) = (1 2e 4t + e 8t ) .
d 2 y (t ) dy (t )
M +b + ky(t ) = r (t )
2 dt
dt
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, y (t ) , do sistema
y ( 0) nt
y (t ) = e sen(n 1 2 t + )
1 2
onde:
b
= relao de amortecimento =
2 kM
k
n = freqncia natural do sistema = e = cos 1 .
M
Fazendo-se y (0) = 0.15 m, M = 1kg, k = 2, para b = 1 , 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
A =
-7 -9
1 0
B =
1
0
C =
2 1
D =
0
( s 2)( s 4) U(s)
s +1 Y(s)
R(s) G ( s) = H (s) =
( s + 5)( s + 2)( s 14 ) 500s 2
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)
s3 5s 2 + 2 s + 8
.
500 s5 3500 s 4 44000 s3 70000 s 2
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)
d) decomposio espectral
[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
x (0) = 0.8 .
Soluo:
75
Soluo:
>> clf
>> numg = [0 1];
>> deng = [1 1];
>> G = tf(numg,deng)
>> step(G)
>> title(' Amplitude versus tempo ')
pause
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
for j = 1:N,
x = a*rand; y = b*rand;
fun2(a,b,x);
if y <= f
k = k + 1;
end;
end;
area = 4.*a*b*k/N % o valor exato e pi*a*b
78
13 EXERCCIOS PROPOSTOS
6 1 0
01) Dada a matriz 3 3 , simtrica e definida positiva, A = 1 4 1 , e dado o vetor
0 1 6
1
de termos independentes, b = 1 ,
2
a+d a 0
02) Dada a matriz literal 3 3 , A = a ad a , e dado o vetor de termos
0 a d
a+d
independentes, tambm literal, b = a , utilize os recursos da matemtica simblica
0
1 3 2 7
03) Dados A = 2 1 1 e b = 5 , utilize o comando rref sobre a matriz
1 2 3 4
>> ezplot('exp(-4*x)-x',0,1).
exp(-4*x)-x
0.8
0.6
0.4
0.2
-0.2
-0.4
-0.6
-0.8
-1
x2 + y 2 = 1
1 + 2 xy = (a + b)2 .
a2 + b2 = 1
>> [b,x,y]=solve('x^2+y^2=1','1 +
2*x*y=(a + b)^2','a^2 + b^2=1').
df
08) Sabemos que a derivada primeira da funo f ( x) = tg ( x) = 1 + sec2 ( x ) , sendo
dx
sec( x) = 1 cos( x ) . Verifique este fato usando o comando diff('sin(x)/cos(x)')
4
09) Calcule a rea sobe a curva da funo f ( x) = no intervalo 0 x 1 . Use o
1 + x2
comando int com limites de integrao definidos.
Para entender melhor o que foi calculado com as instrues anteriores utilize
surf(x,y,z).
81
14 BIBLIOGRAFIA
[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.