Uma Breve Introducao ao
Matlabr
Fran Sergio [email protected]
Nucleo de Modelagem, Simulacao, Controle e Otimizacao de ProcessosFaculdade de Engenharia Qumica
Universidade Federal de Uberlandia, Brasil
13th Brazilian Congress of Thermal Sciences and EngineeringFaculdade de Engenharia Mecanica
Universidade Federal de Uberlandia, Brasil
6 a 8 de Dezembro de 2010
F. S. Lobato Encit 2010 1/73
Objetivos Gerais
Apresentar uma breve introducao ao software MatLabr:
divulgar os comandos basicos;ilustrar aplicacoes em problemas classicos de engenharia ematematica usando os pacotes;entender com o software pode ser usado para o desenvolvimento desubrotinas para aplicacoes gerais;compreender as vantagens e desvantagens do software;apresentar estudos de caso.
F. S. Lobato Encit 2010 2/73
O que e o MatLabr?
The MathWorks - http//www.mathworks.com;
Fundada em 1984 por Jack Little e Cleve Moler, a MathWorksdesenvolve software para engenheiros e cientstas (2200 pessoas em15 pases, com sede em Massachusetts, U.S.A).
O MatLabr (Matrix Laboratory) e um sistema interativo de linguagem deprogramacao para computacao numerica e visualizacao para as areastecnicas e cientficas;
Seu elemento basico de dados e uma matriz (operacoes vetoriais ematriciais);
O MatLabr permite a solucao de muitos problemas numericos em uma
fracao do tempo que seria necessario para escrever um programa em uma
linguagem como Fortran, Pascal ou C;
Matematica (simbolica) e otimizacao, estatstica e analise dedados, projeto de sistemas de controle, processamento de sinais eimagens, financas, etc.Aeroespacial, automotiva, bioqumica, farmaceutica, eletronica esemi-condutores, producao de energia, automacao industrial, etc.
Pode trabalhar em conjunto com outras linguagens de programacao.
Ultima versao: MatLabr Release 2010b (Setembro de 2010).
F. S. Lobato Encit 2010 3/73
Vantagens e Desvantagens do MatLabr
Vantagens:
facilidade de uso;independencia de plataforma (tem suporte em diferentes sistemascomputacionais - Windows, Linux, versoes de Unix e Macintosh);funcoes pre-definidas (conta com uma grande biblioteca de funcoespre-definidas);diferente da maioria das linguagens de computador, o MatLabr
apresenta muitos comandos para desenhos e imagens, constituindouma ferramenta interessante para a visualizacao de dados;interface grafica com o usuario (permite uma interacaousuario/programa mais amigavel, facilitiando desta forma odesenvolvimento de programas mais sofisticados).
Desvantagens:
como e uma linguagem interpretada, por isso pode ser mais lentoque linguagens compiladas.outra desvantagem e o custo (uma copia completa e cerca de cincoa dez vezes mais cara que um compilador convencional C ouFortran).
F. S. Lobato Encit 2010 4/73
O Primeiro Contato
Figura 1: Janela de apresentacao do MatLabr.
F. S. Lobato Encit 2010 5/73
Help!
Figura 2: Janela de apresentacao do help no MatLabr.
F. S. Lobato Encit 2010 6/73
Comandos Gerais Basicos no MatLabr
Tabela 1: Comandos basicos.Funcao Descricao
cd Muda o diretorio corrente
clc Limpa a janela de comandos
clear Apaga todas as variaveis da memoria
delete Apaga arquivos
demo Executa programas de demonstracao do MatLabr
dir Lista arquivos no diretorio corrente
help Lista os topicos de ajuda disponveis
helpwin Abre janela a navegacao em topicos de ajuda
lookfor Procura arquivos .m por palavra chave
quit Encerra a sessao do MatLabr
whos Mostra informacoes sobre as variaveis armazenadas na memoria
F. S. Lobato Encit 2010 7/73
Constantes e Variaveis
Uma constante numerica e formada por uma sequencia de dgitos que
pode estar ou nao precedida de um sinal positivo ou negativo e pode
conter um ponto decimal. Esta sequencia pode terminar ou nao por uma
das letras e, E, d ou D.
2, 2.6e-1, 3.090D+1;
Em modo interativo, o MatLabr e um interpretador de expressoes
=.
x=3+85OBS : Se o nome da variavel e o sinal de atribuicao forem omitidos entao
o resultado sera dado na variavel default ans.
3+85OBS : Regras a respeito do nome de variaveis
deve conter ate 19 caracteres,deve comecar com letra seguida de letras, numeros ou (underline),o tamanho da letra e diferenciador (raiz, Raiz e RAIZ sao variaveisdiferentes),se voce nao deseja mostrar o resultado da operacao na tela use ; nofinal da linha de comando.
F. S. Lobato Encit 2010 8/73
Arranjos e Matrizes
O tratamento de numeros complexos e feito da mesma forma que nos
numeros reais.
a=2+3i ou b=1-3j
a=[1 2 3] ou a=[1,2,3] (a(1)=1 ...)
b=::
a=1:1:5 ou b=10:-2:0 (e se o for negligenciado?)a(1:3)?, x=length(a)?
Usando o comando linspace
a=linspace(,,)c=linspace(1,10,10)se o for omitido 100 (default)
v=[1;2;3;4;5] ou v=[1 2 3 4 5], v=v
a=[1 2 3; 4 5 6; 7 8 9] ou a=[1,2,3;4,5,6;7,8,9]
se a(2,2)=0?
b=a([1 3],2)?
b=a(3:-1:1,1:3)?, b=a(3:-1:1,:)?
c=[a b], a e b de mesma dimensao!
[t=size(a) ou [t,w]=size(a)
F. S. Lobato Encit 2010 9/73
Arranjos e Matrizes
O MatLaBr tem funcoes que se aplicam individualmente a cada colunada matriz produzindo um vetor linha com elementos correspondentes aoresultado de cada coluna.
Tabela 2: Algumas funcoes praticas para o tratamento de matrizes.
Funcao Descricao
sum soma dos elementos
prod produto dos elementos
mean media aritmetica
std desvio padrao
max maior elemento
min menor elemento
sort ordenacao em ordem crescente
a=magic(4) (n3)b=sum(a), b=sum(a(:,2))
F. S. Lobato Encit 2010 10/73
Arranjos e Matrizes
Tabela 3: Algumas funcoes praticas para o tratamento de matrizes.
Funcao Descricao
se o argumento for um vetor, cria uma matriz diagonal com os
diag elementos do vetor; se o argumento for uma matriz, produz
um vetor coluna contendo os elementos da diagonal
tril extrai a parte triangular inferior de uma matriz
triu extrai a parte triangular superior de uma matriz
a=magic(4) (n3), b=diag(a), c=diag(b)b=tril(a), b=triu(a)
a=zeros(n), a=ones(n), a=eye(n), a=rand(n) e a=randn(n) (nm)
F. S. Lobato Encit 2010 11/73
Caracteres e Variaveis Especiais
Uma variavel pode conter uma cadeia de caracteres
a=Flamengo, b=Campeao Mundial de 1981, c=[a , b],c=a(1:3)
Tabela 4: Variaveis especiais.
Variavel Descricao
ans nome de variavel default
pi 3,14159 ...menor numero tal que quando adicionado a 1
eps cria um numero de ponto flutuante maior que 1
eps 21052=2,22041016
inf infinito (1/0)
NaN nao e um numero (Not a Number) - 0/0
i e j i=j=1
realmin menor numero de ponto flutuante (2,225110308)realmax maior numero de ponto flutuante (2,225110308)
F. S. Lobato Encit 2010 12/73
Expressoes: aritmeticas, logicas e literais
Tabela 5: Operacoes aritmeticas.
operacao expressao operador exemplo
adicao a + b + 1 + 2
subtracao a - b - 1 - 2
multiplicacao a b 2 3divisao a b 3 2potenciacao ab 2 3
Tabela 6: Operacoes com vetores (a=[a1 ... an], b=[b1 ... bn] e c=escalar).
operacao expressao resultado
adicao escalar a + c [a1 + c a2 + c ... an + c]
adicao vetorial a + b [a1 + b1 a2 + b2 ... an + bn]
multiplicacao escalar a c [a1 c a2 c ... an c]multiplicacao vetorial a . b [a1 b1 a2 b2 ... an bn]divisao a direita a ./ b [a1/b1 a2/b2 ... an/bn]
divisao a esquerda a .\ b [a1 \ b1 a2 \ b2 ... an \ bn]potenciacao a . c [ac1 ac2 ... acn]
a . b [ab11 ab22 ... a
bnn ]
F. S. Lobato Encit 2010 13/73
Expressoes: aritmeticas, logicas e literais
Tabela 7: Funcoes Trigonometricas.
funcao descricao funcao descricao
acos arco co-seno cos co-seno
acosh arco co-seno hiperbolico cosh co-seno hiperbolico
acot arco co-tangente cot co-tangente
acoth arco co-tangente hiperbolica coth co-tangente hiperbolica
acsc arco co-secante csc co-secante
acsch arco co-secante hiperbolica csch co-secante hiperbolica
asec arco secante sec secante
asech arco secante hiperbolica sech secante hiperbolica
asin arco seno sin seno
asinh arco seno hiperbolico sinh seno hiperbolico
atan arco tangente tan tangente
atanh arco tangente hiperbolica tanh tangente hiperbolica
F. S. Lobato Encit 2010 14/73
Expressoes: aritmeticas, logicas e literais
Tabela 8: Funcoes Exponenciais, Complexas, etc.
funcao descricao funcao descricao
exp exponencial log logaritmo decimal
log logaritmo natural sqrt raiz quadrada
abs valor absoluto imag parte imaginaria do complexo
angle angulo de fase real parte real do complexo
conj complexo conjugado gcd maximo divisor comum
lcm mnimo multiplo comum rem resto de divisao
round arredonda sign sinal
F. S. Lobato Encit 2010 15/73
Expressoes: aritmeticas, logicas e literais
Tabela 9: Expressoes Logicas (1 significa verdadeiro e 0 significa falso).
operador relacional descricao
> maior que
>= maior ou igual a
< menor que
Comandos de entrada e sada
pi?
O comando format e usado para modifcar o formato numerico.
Tabela 11: Comando format.comando resultado
format short 3.1415 4 dgitos decimais
format bank 3.14 2 dgitos decimais
format long 3.14159265358979 14 dgitos decimais
format short e 3.1416+00 4 dgitos decimais e expoente
format long e 3.141592653589793+00 16 dgitos e expoente
format hex 400921fb54442d18 hexadecimal
format rat 355/113 aproximacao racional
format compact suprime linhas em branco
format loose mantem linhas em branco
format atribui o padrao short e loose
F. S. Lobato Encit 2010 17/73
Comandos de entrada e sada
O comando disp() e usado para exibir sem
mostrar o seu nome ou para exibir uma cadeia de caracteresdisp(numeros aleatorios entre 0 e 1) disp(rand(2,6))
O comando fprintf(,A) exibe na tela os valores da variavel Acom a forma especificada na cadeia de caracteres a qual deveconter caracteres alfa-numericos e/ou especificacoes de conversao.
Tabela 12: Especificacoes de conversao para o formato fprintf.
formato especificacao
%ni usado para valores inteiros, sendo n o tamanho do campo de exibicao
%n.d f notacao na forma [-]mmm.ddd, sendo n o tamanho do campo e d o
numero de dgitos decimais
%n.de notacao na forma [-]m.dddxx, sendo n o tamanho do campo e d onumero de dgitos decimais
%n.dg equivalente a %n.de ou %n.d f, dependendo de qual formato for mais
curto, alem disso os zeros insignificantes nao sao exibidos
%ns exibe caracteres em um campo de tamanho n
fprintf(a precisao deste computador e %12.5e \n,eps/2)
F. S. Lobato Encit 2010 18/73
Comandos de entrada e sada
O comando =input() exibe e espera que
um valor seja atribudo a
n=input(Entre com o tamanho do vetor)
Estruturas de erro: error() - causa a interrupcao daexecucao de um programa e exibe
O comando save e usado para gravar as variaveis do espaco de trabalho
em um arquivo em disco. Sua sintaxe e save
, onde e o nome do arquivo a
ser gravado (.mat (default) ou .txt), e a variavel que
contem as informacoes a serem gravadas e as podem ser:
-ascii: define que o arquivo sera na forma ASCII e seu nome naocontera a extensao .mat (arquivos binarios)-double: define que os numeros serao gravados com 16 dgitos aoinves de 8-tabs: define que os dados estarao tabulados
O comando load e usado para recuperar os dados gravados em umarquivo. Sua sintaxe e load .
F. S. Lobato Encit 2010 19/73
Arquivos .m
Alem de poder entrar com cada comando de uma vez, o MatLabr
permite, como qualquer linguagem de programacao que seja executada
uma sequencia de comandos escrita em um arquivo de extensao .m
1- clc % Limpa a tela de comandos2- close all % Fecha todas as janelas3- clear all % Limpa todas as variavies4- fprintf(Programa que calcula a soma de dois numeros informados
pelo usuario \n)5- a=input(entre com o valor do coeficiente a: )6- b=input(entre com o valor do coeficiente b: )7- fprintf(Calcular a soma dos numeros a e b: )8- a+b
OBS: O smbolo % e usado para documentar (comentar) oprograma desenvolvido
F. S. Lobato Encit 2010 20/73
Subprograma function
Um outro tipo de arquivo de roteiro e usado para o proprio usuario criarnovas funcoes para o MatLabr. Alem de aumentar a flexibilidade, osarquivos de funcao tem o mesmo status que as outras funcoes doMatLabr.
O nome da funcao tem que ser igual ao nome do arquivo .m aonde elaesta definida, mas sem a extensao .m. Ao contrario do programa no qualas variaveis sao globais, em uma function, as variaveis sao locais, ouseja, elas nao tem acesso e nem podem criar variaveis no espaco detrabalho.
Exemplo:
1- function s=soma(a,b)2- fprintf(A soma dos dois numeros e: )3- s=a+b
OBS: clc?, close all? e clear all?
F. S. Lobato Encit 2010 21/73
Programa principal + subprograma function
Podemos escrever um programa como combinacao dos anteriores:
programa principal.m
1- clc2- close all3- clear all4- fprintf(Programa que calcula a soma de dois numeros fornecidos
pelo usuario \n)5- a=input(Entre com o primeiro numero: )6- b=input(Entre com o segundo numero: )7- c=soma2n(a,b) % Subprograma soma2n.m8- fprintf(A soma dos numeros e:
subprograma soma2n.m
1- function y=soma2n(a,b)2- y=a+b;
F. S. Lobato Encit 2010 22/73
Controle de Fluxo
Os comandos que controlam o fluxo especificam a ordem em que acomputacao e feita. No MatLabr estes comandos sao semelhantes aos usadosna linguagem C, mas com uma estrutura diferente (mais simples).
Laco for:
1- for x = ::2- 3- end
Programa que gera a matriz A(i,j)=i+j
1- clc; close all; clear all;2- n=input(Entre com a dimensao da matriz: );3- A=zeros(n,n); % Atribui zero a cada elemento da matriz4- for i=1:n % Laco de repeticao para a linha5- for j=1:n % Laco de repeticao para a coluna6- A(i,j)=i+j; % Lei de recorrencia7- end % fim for para i8- end % fim for para j9- A % imprimindo a matriz A
F. S. Lobato Encit 2010 23/73
Controle de Fluxo
Ao contrario do Laco for, que executa um grupo de comandos um numero fixode vezes, o laco while executa um grupo de comandos um numero indefinidode vezes. O laco while e executado enquanto a condicao forverdadeira:
Laco while:
1- while 2- 3- end
Programa que identifica o menor numero que somado a um o modifica
1- clc; close all; clear all;2- x=1; % parametro informado pelo usuario3- while 1+x > 1 % expressao a ser verificada4- x = x/2; % comando5- end % fim do laco while6- x % imprimindo o numero x
F. S. Lobato Encit 2010 24/73
Controle de Fluxo
Em diversas situacoes, as sequencias de comandos tem de ser executadascondicionalmente, com base em um teste relacional. Essa logica eimplementada por meio de uma das diversas formas da estrutura if-else-end.A mais simples e:
Laco if-else-end:
1- if 2- 3- else4- 5- end
Programa que gera a matriz identidade
1- clc; close all; clear all;2- n=input(Entre com a dimensao da matriz: )3- A=zeros(n,n);4- for i=1:n; for j=1:n; if i==j5- A(i,j)=1;6- else7- A(i,j)=0;8- end; end; end;9- A
F. S. Lobato Encit 2010 25/73
Controle de Fluxo
Essa estrutura funciona como uma chave seletora, escolhendo a expressaocorreta para executar os comandos (chavear condicionalmente expressoes). Oformato geral do comando switch e:
Laco switch:
1- switch 2- case ...3- 4- case ...5- 6- otherwise7- 8- end
Programa que identifica um determinado metodo
1- clc; close all; clear all;2- method = Bilinear;3- switch lower(method)4- case linear,bilinear disp(Method is linear)5- case cubic disp(Method is cubic)6- otherwise disp(Unknown method.) end
F. S. Lobato Encit 2010 26/73
Graficos no MatLabr
Graficos sao ferramentas poderosas quando se deseja interpretarvisualmente os resultados.O comando mais simples para desenhar um grafico no MatLabr e oplot(,,), onde e ovetor que contem o eixo das abscissas, e o eixo dasordenadas, e a cor dos pontos plotados e e o estilo delinha.
Tabela 13: Cor e estilo em graficos no MatLabr.
smbolo cor smbolo estilo de linha
y amarela pontom lilas crculoc turquesa x marca x
r vermelho + mais
g verde asteriscob azul - linha solida
w branco : linha pontilhada
k preto - linha de traco e ponto linha tracejada
F. S. Lobato Encit 2010 27/73
Graficos no MatLabr
Tabela 14: Caractersticas gerais em graficos no MatLabr.
comando descricao
xlabel() escreve abaixo do eixo das abscissas
ylabel() escreve ao lado do eixo das ordenadas
title() escreve no alto da figura
text(xi ,yi ,) escreve na posicao (xi ,yi )
gtext() escreve na posicao indicada pelo mouse
Exemplo pratico:
1- x=linspace(0,,50); % abscissa2- y=sin(x); % ordenada3- plot(x,y,b-); % grafico de x contra y4- xlabel(x ); ylabel(y ) % labels5- title(funcao seno); % ttulo do grafico6- text(1,1,sin(x)); % texto no grafico7- gtext(sen(x)); % texto no grafico8- grid on; % malha o ambiente grafico
F. S. Lobato Encit 2010 28/73
Graficos no MatLabr
Alternativamente pode-se usar o comando fplot para construir o grafico deuma funcao f
a- fplot(sin(x)x,[-20 20]); grid on;b- fplot(sin(x)x,[-18 18 -10 10]); grid on;
(a) restricao em x (b) restricao em x e em y
Figura 3: Comando fplot.
F. S. Lobato Encit 2010 29/73
Graficos no MatLabr
Tabela 15: Comandos para tracar graficos.
Funcao Descricao
plot Grafico 2D em escala linear para ambos eixos
loglog Grafico 2D em escala logartmica para ambos eixos
semilogx Grafico 2D em escala logartmica para o eixo x e linear para y
semilogy Grafico 2D em escala linear para o eixo x e logartmica para y
plotyy Grafico 2D com eixos y diferentes a direita e a esquerda
comet Traca trajetoria animada 2D dos pontos (x,y)
bar Grafico de barras
hist Histograma
polar Grafico usando coordenadas polares com angulo em radianos
stairs Grafico em forma escada
stem Grafico 2D com sequencia discreta de y
plot3 Traca curvas em 3D
comet3 Traca trajetoria animada 3D dos pontos (x,y,z)
mesh Traca uma malha colorida em 3D, meshc (+ contorno)
surf Traca uma superfcie colorida em 3D, surfc (+ contorno)
F. S. Lobato Encit 2010 30/73
Graficos no MatLabr
Tabela 16: Comandos para editar e modificar graficos.
Funcao Descricao
axis Controla a escala e a visualizacao dos eixos
colormap Especifica o mapa de cores utilizado
grid Adiciona ou remove linhas de grelha do grafico corrente
hold Mantem o grafico corrente (futuros graficos sao sobrepostos a este)
legend Adiciona e define uma legenda no grafico corrente
subplot Divide uma figura em varias sub-figuras e seleciona uma delas
text Coloca um texto no grafico corrente
title Ttulo do grafico corrente
xlabel Ttulo do eixo x corrente
ylabel Ttulo do eixo y corrente
F. S. Lobato Encit 2010 31/73
Graficos no MatLabr
Comandos hold on/off e legend
1- clc; close all; clear all;
2- x=0:0.1:2; % gera um vetor de 0 a 2
3- y=sin(x); % calcula o vetor das amplitudes
4- plot(x,y); % plota o grafico
5- xlabel(valores de x); % adiciona legenda no eixo x
6- ylabel(amplitude); % adiciona legenda no eixo y
7- grid on; % coloca grid no grafico
8- y2=2sin(x); % gera um outro vetor de amplitudes
9- hold on; % segura o grafico anterior para plotar junto com o novo grafico
10- plot(x,y2,r+:); % plota o novo grafico
11- title(Grafico da Funcao seno); % insere ttulo no grafico
12- legend(Amplitude = 1,Amplitude = 2); % insere legenda no grafico
F. S. Lobato Encit 2010 32/73
Graficos no MatLabr
Comandos hold on/off e legend
Figura 4: Uso de hold on/off e legend.
F. S. Lobato Encit 2010 33/73
Graficos no MatLabr
Comando subplot: gera varios eixos em uma mesma janela.
Sintaxe: subplot(m,n,p), onde m e numero de eixos na vertical (numero
de linhas), n e o numero de eixos na horizontal (numero de colunas) e p e
o ndice do eixo corrente.
1- clc; close all; clear all;2- x=linspace(0,pi);3- y1=sin(x);4- y2=cos(x);5- subplot(1,2,1) % Identifica a posicao do grafico 16- plot(x,y1,bo);7- xlabel(x)8- ylabel(sin(x))9- subplot(1,2,2) % Identifica a posicao do grafico 2
10- plot(x,y2,ro);11- xlabel(x)12- ylabel(cos(x))
F. S. Lobato Encit 2010 34/73
Graficos no MatLabr
Comando subplot: gera varios eixos em uma mesma janela.
Figura 5: Uso do comando subplot.
F. S. Lobato Encit 2010 35/73
Graficos no MatLabr
Comandos bar, bar3, stairs e barh.
1- clc; close all; clear all;
2- x=-2.9:0.2:2.9; y=exp(-x2);
3- subplot(2,2,1)
4- bar(x,y)
5- title(Grafico de barras de uma curva em forma de sino);
6- subplot(2,2,2)
7- bar3(x,y)
8- title(Grafico de barras 3-D de uma curva em forma de sino);
9- subplot(2,2,3)
10- stairs(x,y)
11- title(Grafico em escada de uma curva em forma de sino);
12- subplot(2,2,4)
13- barh(x,y)
14- title(Grafico de barras horizontal);
F. S. Lobato Encit 2010 36/73
Graficos no MatLabr
Comandos bar, bar3, stairs e barh.
Figura 6: Uso dos comandos bar, bar3, stairs e barh.
F. S. Lobato Encit 2010 37/73
Graficos no MatLabr
Graficos 3D: plot3d
1- clc; close all; clear all;
2- x=-4:0.1:4;
3- y=-4:0.1:4;
3- plot3(cos(x),sin(y),(x+y))
3- xlabel(eixo x)
3- ylabel(eixo y)
3- zlabel(eixo z)
F. S. Lobato Encit 2010 38/73
Graficos no MatLabr
Graficos 3D: plot3d
Figura 7: Uso do comando plot3d.
F. S. Lobato Encit 2010 39/73
Graficos no MatLabr
Graficos 3D: contour3
1- clc; close all; clear all;
2- [X,Y] = meshgrid([-2:.25:2]);
3- Z = X.exp(-X.2-Y.2);4- contour3(X,Y,Z,30)
5- surface(X,Y,Z,EdgeColor,[.8 .8 .8],FaceColor,none)
6- colormap cool
F. S. Lobato Encit 2010 40/73
Graficos no MatLabr
Graficos 3D: contour3
Figura 8: Uso do comando contour3.
F. S. Lobato Encit 2010 41/73
Graficos no MatLabr
Graficos 3D: mesh.
1- clc; close all; clear all;
2- x=-:0.5:;
3- y=-:0.5:;
4- [Mx,My]=meshgrid(x,y);
5- Mz=cos(Mx).sin(My);6- mesh(Mx,My,Mz);
F. S. Lobato Encit 2010 42/73
Graficos no MatLabr
Graficos 3D: mesh
Figura 9: Uso do comando mesh.
F. S. Lobato Encit 2010 43/73
Graficos no MatLabr
Graficos 3D: meshc.
1- clc; close all; clear all;
2- [X,Y] = meshgrid(-3:.125:3);
2- Z = peaks(X,Y);
2- meshc(X,Y,Z);
2- axis([-3 3 -3 3 -10 5])
F. S. Lobato Encit 2010 44/73
Graficos no MatLabr
Graficos 3D: meshc
Figura 10: Uso do comando meshc.
F. S. Lobato Encit 2010 45/73
Graficos no MatLabr
Graficos 3D: surf
1- clc; close all; clear all;
2- x=-:0.5:;
3- y=-:0.5:;
4- [Mx,My]=meshgrid(x,y);
5- Mz=cos(Mx).sin(My);6- mesh(Mx,My,Mz);
7- surf(Mx,My,Mz);
F. S. Lobato Encit 2010 46/73
Graficos no MatLabr
Graficos 3D: surf
Figura 11: Uso do comando surf.
F. S. Lobato Encit 2010 47/73
Equacoes Lineares no MatLabr
Comando solve: resolve simbolicamente ou numericamente uma ou maisequacoes algebricas lineares.
Sintaxe: solve(eq,var,par), onde eq e a equacao (sistema de equacoes),
var e o vetor de variaveis e par e o conjunto de parametros.
1- solve(ax2 + bx + c) [1/2/a(-b+(b2-4ac)(1/2)),1/2/a(-b-(b2-4ac)(1/2))]
2- solve(ax2 + bx + c,b) [-(ax2+c)/x]3- S=solve(x + y = 1,x - 11y = 5) [S.y = -1/3, S.x = 4/3]
Comando inv: resolve numericamente um sistema de equacoes algebricaslineares (Ax=b x=b/A=inv(A)b)
Sintaxe inv(A) (dada a matriz A quadrada)
1- x=inv(A)b2- A=[1 1 1;3 1 0;1 -2 -1]3- b=[1;3;0]4- x=inv(A)b=[4/5 -2/5 3/5]
F. S. Lobato Encit 2010 48/73
Equacoes Nao-Lineares no MatLabr
Comando fsolve: resolve simbolicamente ou numericamente uma ou maisequacoes algebricas nao-lineares.
Sintaxe: [sol,fval,exitflag]=fsolve(eq,x,options), onde sol e a solucao dosistema de equacoes eq, fval e o numero de avaliacoes da funcao, exitflage o sinalizador (-4 ... 4; 0 - numero maximo de iteracoes alcancadas; 1 -converge; etc), x e o vetor de variaveis e options e o conjunto deparametros (iterations; Number of function evaluations, algorithm;etc).
Resolva o sistema: {2x1-x2-exp(x1);-x1+2x2-exp(x2)}1- x0 = [-5; -5]; % Estimativa inicial2- options=optimset(Display,iter); % Opcoes para imprimir a
sada3- [x,fval] = fsolve(@myfun,x0,options) % Chama o solver4- function F = myfun(x) % Function que contem o sistema de
equacoes5- F = [2x(1)-x(2)-exp(-x(1)); -x(1)+2x(2)-exp(-x(2))];6- x=[0.5671 0.5671] e fval=[-0.4059106 -0.4059106]
F. S. Lobato Encit 2010 49/73
Interpolacao Numerica no MatLabr
Comando interp1: interpolacao de pontos 1D usando diferentes metodos.
Sintaxe: yi = interp1(x,y,xi,method), onde x e y sao os pontostabulados, xi e o conjunto de abscissas onde o polinomio interpolador yisera avaliado e method e o metodo utilizado (linear, spline, etc).
Exemplo:
1- x = 0:10; % Abscissas2- y = sin(x); % Ordenadas3- xi = 0:.25:10; % Pontos onde a aproximacao sera avaliada4- yi = interp1(x,y,xi); % Interpolacao5- plot(x,y,o,xi,yi,b+) % Plotando os resultados
Comando spline: interpolacao de pontos 1D usando polinomios cubicos porelementos.
Sintaxe: yi = spline(x,y,xi), onde x e y sao os pontos tabulados e xi e oconjunto de abscissas onde o polinomio interpolador yi sera avaliado.
Exemplo:
1- idem ao anterior ... substitui-se interp1(x,y,xi) porspline(x,y,xi).
F. S. Lobato Encit 2010 50/73
Integracao Numerica no MatLabr
Comando trapz: integracao numerica usando o Metodo dos Trapezios.
Sintaxe: I = trapz(x,f(x)), onde x e f(x) sao os pontos tabulados.
Exemplo:
0
sin(x)dx (solucao analtica - 2)
1- x = 0:/100:; % Abscissas2- y = sin(x); % Ordenadas3- I = trapz(x,y); % Integracao
Comando quad: integracao numerica usando o Metodo da Quadratura deSimpson.
Sintaxe: I = quad(fun,a,b,tol), onde fun e a funcao a ser integrada, a e bsao os limites da integracao e tol e a tolerancia usada no procedimentonumerico.
Exemplo:
20
1
x3 2x 5 dx
1- F = @(x)1./(x3 2 x 5); % Funcao a ser integrada2- Q = quad(F,0,2); % Resultado da integracao
F. S. Lobato Encit 2010 51/73
Otimizacao no MatLabr
Comando fminsearch:
Sintaxe: [x,fval,exitflag]=fminsearch(fun,x0,options), onde x e a solucaodo problema, fval e o numero de avaliacoes da funcao objetivo fun,exitflag e o sinalizador (1 - convergiu para a solucao; 0 - o numeromaximo de avaliacoes da funcao objetivo foi alcancada e -1 - tente outracondicao iniacial x0) e options e o conjunto de parametros (iterations;Number of function evaluations, algorithm; etc).
Minimize f (x) = 100(x(2) x(1)2)2 + (1 x(1))2
1- x0 = [-1.2, 1]; % Estimativa inicial2- options=optimset(TolX,1e-8); % Opcoes para a tolerancia3- [x,fval,exitflag] = fminsearch(banana,x0,options) % Chama o
solver4- banana = @(x)100(x(2)-x(1)2)2+(1-x(1))2; % Function a ser
otimizada5- Solucao x=[1 1] e fval=[8.1777106]
F. S. Lobato Encit 2010 52/73
Equacoes Diferenciais no MatLabr
Comando ode: pacote que implementa varios metodos para a resolucao desistemas de equacoes diferenciais de valor inicial.
Sintaxe: [T,Y]=solver(odefun,tspan,y0,options), onde T e o vetor quecontem a variavel independente, Y e a matriz que contem as variaveisdependentes, solver discrimina o metodo empregado na resolucao doproblema, tspan e o vetor que contem o domnio da variavelindependente, y0 e o vetor que contem as condicoes iniciais para cadavariavel dependente e options contem as opcoes que podem ser utilizadas.
Exemplo:
y 1 = y2y3 y1(0) = 0 (1)
y 2 = y1y3 y2(0) = 1 (2)y 3 = 0.51y1y2 y3(0) = 1 (3)
1- options = odeset(RelTol,1e-4,AbsTol,[1e-4 1e-4 1e-5]);1- [T,Y] = ode45(@rigid,[0 12],[0 1 1],options); % Solver2- plot(T,Y(:,1),-,T,Y(:,2),-.,T,Y(:,3),.)3- function dy = rigid(t,y)4- dy=zeros(3,1);5- dy(1)=y(2)*y(3); dy(2)=-y(1)*y(3); dy(3)=-0.51*y(1)*y(2);
F. S. Lobato Encit 2010 53/73
Equacoes Diferenciais no MatLabr
Tabela 17: Integradores de equacoes diferenciais ordinarias.
Funcao Descricao
ode45 Runge-Kutta explcito de ordem 4/5 (Dormand-Prince)
ode23 Runge-Kutta explcito de ordem 2/3 (Bogacki-Shampine)
ode113 Preditor-corretor de passo variavel (Adams-Bashforth-Moulton)
ode15s BDF de passo quase constante para EDOs rgidas
(Klopfenstein-Shampine)
ode23t Implementacao da regra trapezoidal
ode23s Implementacao de um par Rosenbrock (2,3) modificado
para EDOs rgidas
ode23tb Runge-Kutta implcito trapezoidal/BDF
(Bank-Rose-Hosea-Shampine)
F. S. Lobato Encit 2010 54/73
Equacoes Diferenciais no MatLabr
Comando odeset: comando que altera as opcoes default de ode.
Sintaxe: options = odeset(name1,value1,name2,value2,...)
Tabela 18: Algumas propriedades do comando odeset.
Propriedade Descricao
RelTol Tolerancia relativa (1E-3)
AbsTol Tolerancia absoluta (1E-6)
InitialStep Tamanho do passo inicial
MaxStep Tamanho maximo do passo de integracao
Jacobian Informacao a respeito da matriz Jacobiana
MaxOrder Maxima ordem nos Metodos BDF
options=odeset(RelTol,1E-8,AbsTol,1E-6,...).
F. S. Lobato Encit 2010 55/73
Algumas Funcoes Uteis do MatLabr
Zeros de polinomios
roots, calcular p(x) = 5/8x5 5x4 3x3 + 2x 10Sintaxe: roots([5/8 -5 -3 0 2 -10])
Determinante de uma matriz
det, A=[1 2 4 5 6;5 1 1 3 5;7 8 9 9 0;2 2 4 0 9;1 1 1 2 3]
Sintaxe: det(A)
Inversa de uma matriz
inv, A=[1 2 4 5 6;5 1 1 3 5;7 8 9 9 0;2 2 4 0 9;1 1 1 2 3]
Sintaxe: inv(A)
Autovalores e Autovetores
eig, A=[1 -1;-4 1]
Sintaxe: [V,D]=eig(A) (D - autovalores e V - auto-vetores; AV =VD)
Posto (Rank) de uma matriz
rank, A=[1 2 8; 2 4 16; 0 1 3]
Sintaxe: rank(A)
F. S. Lobato Encit 2010 56/73
Algumas Funcoes Uteis do MatLabr
Demonstracao de recursos do MatLabr
Sintaxe: demo
Tamanho de um vetor
Sintaxe: length(A); A=[2 3 4 5 6]
Identifica ndices de elementos nao nulos
Sintaxe: find(A); A=[2 3 0;6 0 0;0 9 9]
Verifica se os elementos sao numeros reais
Sintaxe: isreal(A); A=2i
Arredonda para o inteiro mais proximo
Sintaxe: round(A); A=0.25
Interrompe a execucao dos lacos for e while
Sintaxe: break;
Interrompe a execucao do programa enquanto o usuario nao confirmar
Sintaxe: pause;
Interrompe a execucao do programa por n segundos
Sintaxe: pause(n);
F. S. Lobato Encit 2010 57/73
Algumas Funcoes Uteis do MatLabr
Mostra mensagem e aborta a execucao do programa
Sintaxe: error()
Retorna para o ponto que a funcao foi chamada
Sintaxe: return
Mostra a data
Sintaxe: date
Executa uma funcao no MatLabr definida por uma string
Sintaxe: eval(x+1) (o valor de x deve ser definido anteriormente)
Converte um numero numa expressao alfanumerica (string)
Sintaxe: num2str(2)
Transformada rapida de Fourier
Sintaxe: fft(x)
Transformada inversa de Fourier
Sintaxe: ifft(x)
Calcula a derivada de um polinomio
Sintaxe: polyder([2 3 4]) %(2x2 + 3x + 4)
F. S. Lobato Encit 2010 58/73
Medida de tempo e operacoes
O MatLabr prove dois modos de analisar o desempenho de um dado metodo:o tempo de execucao e o numero de operacoes aritmeticas.
Comando tic-toc: e possvel saber o tempo gasto para a execucao de
um grupo de comandos. Sua sintaxe e:
1- tic2- 3- =toc
OBS: se o computador estiver executando varias tarefas simultaneamente,esse comando pode nao ser uma medida muito confiavel.
O comando cputime fornece o tempo de CPU. Sua sintaxe e:
1- tempo1=cputime2- 3- cputime-tempo1
O comando flops fornece o numero acumulado de operacoes de pontoflutuante, bastando executar o comando flops(0) para zerar o contador.E importante observar que esse comando nao conta exatamente todas asoperacoes mas sim as que o MatLabr considera mais importantes (matrizde ordem n n3 n2, mas e contado apenas n3 operacoes).
F. S. Lobato Encit 2010 59/73
Metodo de Newton
Deseja-se obter o zero da funcao f (x) = 0.
Figura 12: Concepcao conceitual do Metodo de Newton.
F. S. Lobato Encit 2010 60/73
Metodo de Newton
Seja a funcao f (x) = 0:
Fundamentado no truncamento da Serie de Taylor:
xn+1 = xn f (xn)
f (xn)(4)
Este metodo e iterativo, isto e, a partir de uma estimativa inicial(xn, n = 0) fornecida pelo usuario, novos valores para a raz(xn, n = 1, 2, ...) sao obtidos atraves da relacao de recorrencia acima;
Exige a avaliacao da derivada da funcao f (x):
Analiticamente (poucos casos);Numericamente (diferencas finitas).
Para sistemas de equacoes faz-se necessario a avaliacao da matrizJacobiana - J (matriz de derivadas primeiras).
xn+1 = xn f (xn)
J (xn)(5)
F. S. Lobato Encit 2010 61/73
Metodo de Gauss-Siedel
E um metodo iterativo para a resolucao do sistema linear Ax = b a partir deuma estimativa inicial xo . Para ilustrar, seja o sistema linear dado por: 5 1 22 6 3
2 1 7
x1x2x3
= 12
32
(6)Neste caso, o Metodo de Gauss-Siedel consiste em:
xk+11 = 1
5(1 + xk2 2xk3 ) (7)
xk+12 =1
6(2 xk+11 + 3xk3 ) (8)
xk+13 =1
7(32 2xk+11 xk+12 ) (9)
Com essa configuracao o processo iterativo e mais rapido com relacao ase todas as variaveis atualizadas fossem apenas utilizada na proximaiteracao (Metodo de Gauss-Jacobi).
F. S. Lobato Encit 2010 62/73
Ajuste Polinomial
Este metodo consiste em passar um polinonio de grau n por m pontos, atravesda resolucao de um sistema de equacoes lineares; Seja o polinomio interpoladoryi = ao + a1xi + a2x
2i + ...+ anx
ni :
1 xo x2o x
3o xno
1 x1 x21 x
31 xn1
......
......
. . ....
1 xn x2n x
3n xnn
aoa1...
an
=
y expoy exp1
...y expn
(10)
A principal ideia desta tecnica e capturar a tendencia comportamentaldos pontos;
A reducao do grau do polinomio evita o fenomeno de Runge;
O polinomio ajustado so podera ser empregado para predizer ocomportamento do fenomeno dentro do domnio utilizado para obte-lo,isto e, nao e permitido extrapolacao.
F. S. Lobato Encit 2010 63/73
Metodo de Euler
Objetivo: obter a solucao aproximada da equacao diferncial ordinaria deprimeira ordem:
dy (x)
dx= f (x , y) y(xo) = yo (11)
xf x xo (12)ME- e o metodo mais simples ja concebido para a resolucao de equacoesdiferenciais:
Fundamentado no truncamento da Serie de Taylor;
dy (x)
dx yi+1 yi
h= f (x , y) y(xo) = yo (13)
yi+1 = yi + hf (x , y) (14)
h xf xon
(15)
O ME e altamente dependente do numero de pontos (n) utilizados, n precisao aumento do custo computacional;OBS: cada metodo numerico tem uma qualidade inerente, isto e; naoadianta fazer com que n tenta a infinito para melhorar a qualidade dasolucao.
F. S. Lobato Encit 2010 64/73
Metodo de Runge-Kutta
Objetivo: obter a solucao aproximada da equacao diferncial ordinaria deprimeira ordem:
dy (x)
dx= f (x , y) y(xo) = yo (16)
xf x xo (17)
Fundamentado na seguinte funcao de recorrencia (n - ordem do metodo):
yi+1 = yi + h(xi , yi , h) = yi + h(c1k1 + c2k2 + ...+ cnkn) (18)
k1 = f (xi , yi ) (19)
k2 = f (xi + p2h, yi + a21hk1) (20)
k3 = f (xi + p3h, yi + a31hk1 + a32hk2) (21)
... (22)
kn = f (xi + pnh, yi + an1hk1 + ...+ ann1hkn1) (23)
Os parametros ci , pj e akl sao obtidos a partir da comparacao destaformula de recorrencia com o truncamento da Serie de Taylor.
F. S. Lobato Encit 2010 65/73
Metodo de Runge-Kutta 4a Ordem
Objetivo: obter a solucao aproximada da equacao diferncial ordinaria deprimeira ordem:
yi+1 = yi +h
6(k1 + 2k2 + 2k3 + k4) (24)
k1 = f (xi , yi ) (25)
k2 = f (xi +1
2h, yi +
1
2hk1) (26)
k3 = f (xi +1
2h, yi +
1
2hk2) (27)
k4 = f (xi + h, yi + hk3) (28)
A famlia de MRK e auto-inicializavel (sendo utilizados para inicializacaodos metodos implcitos);
A principal desvantagem destes metodos e o elevado numero deavaliacoes com relacao a outras abordagens.
F. S. Lobato Encit 2010 66/73
Metodo da Maxima Descida - Steepest Descent
Deseja-se minimizar a funcao f (x). Na otimizacao classica, a formula derecorrencia utiliza no processo iterativo e:
xk+1 = xk+Sk (onde e o tamanho do passo no sentido da direcao debusca Sk).
Sk - derivada da funcao (a depender da quantidade de informacoes e daordem da derivada utilizada, define-se o metodo).
No Metodo da Maxima Descida, Sk e f (x)k .xk+1=xk+f (x)ksubstitui-se todas as variaveis de projeto (xk+1) na funcao original,isto implica que o problema original (multi-dimensional) etransformado em um problema uni-dimensional, cuja variavel e (f ()).
df
d= 0 = F (xk ,f (x)k) (29)
F. S. Lobato Encit 2010 67/73
Metodo do Trapezio
O objetivo e determinar o valor da:
I (f ) =
ba
f (x) dx (30)
Figura 13: Concepcao conceitual do Metodo dos Trapezios.
Neste metodo, a integral e aproximada por:
I (f ) In (f ) =n
j=1
hj2
[f (xj1) + f (xj)] (31)
onde h nao necessariamente e variavel.F. S. Lobato Encit 2010 68/73
Metodo de Newton-Cotes
Nesta classe de metodos sao utilizados polinomios interpoladores paraaproximar a funcao a ser integrada. O polinomio interpolador utilizado define otipo de metodo.
2a ordem: Metodo de Simpson 1/3 (n - par)
I (f ) =h
3
(f0 + 4
n1j=1,3,5,...
fj + 2n2
j=2,4,6,...
fj + fn
)(32)
3a ordem: Metodo de Simpson 3/8 (n - mpar)
I (f ) =3h
8
(f0 + 3
n1j=1,4,7,...
(fi + fi+1) + 2n2
j=3,6,9,...
fj + fn
)(33)
F. S. Lobato Encit 2010 69/73
Metodo das Diferencas Finitas
Nesta metodologia e utilizado a Serie de Taylor (truncada) para aobtencao de aproximacoes para derivadas.
u (X0 + X ) = u (X0) +du
dX
X0
X +d2u
dX 2
X0
(X )2
2!+
d3u
dX 3
X0
(X )3
3!+
(34)
u (X0 X ) = u (X0)du
dX
X0
X +d2u
dX 2
X0
(X )2
2! d
3u
dX 3
X0
(X )3
3!+
(35)
Somando as duas equacoes acima, obtemos a aproximacao para aderivada segunda:
d2u
dX 2=
u (X0 + X ) 2u (X0) + u (X0 X )(X )2
+ (X )2 (36)
Neste contexto, transforma-se EDP em ED ou em sistemas de equacoesalgebricas (lineares ou nao lineares) que podem ser resolvidas mediante aaplicacao de tecnicas apropriadas.
F. S. Lobato Encit 2010 70/73
Consideracoes Finais
Sobre o mini-curso
E importante destacar que o objetivo desta breve introducao foiapresentar a linguagem de programacao MatLabr;
Neste contexto, nao foram abordadas funcoes especficas, como porexemplo, no tratamento de imagens e na apresentacao de uma das suasprincipais ferramentas, o Simulinkr, responsavel pela parte de controle;
Finalmente, cabe a todos nos buscar aprimoramento no software, demodo a extrair o maximo de suas potencialidades.
F. S. Lobato Encit 2010 71/73
Agradecimentos
Agradeco a oportunidade oferecida por:
Enio Pedone Bandarra Filho
Su Jian UFRJ
Elie Luis Martnez Padilla
Francisco Jose de Souza
Odenir de Almeida
Oscar Saul Hernadez Mendoza
Ricardo Fortes de Miranda
Ricardo Hernandez Pereira
Solidonio Rodrigues de Carvalho
F. S. Lobato Encit 2010 72/73
Referencias Bibliograficas
S. J. ChapmanProgramacao em Matlab Para Engenheiros.Editora Cengage Learning, 2a Edicao, 2010.
A. GilatMatlab Com Aplicacoes em Engenharia.Editora Bookman, 2a Edicao, 2006.
S. A. VicenteCurso Introdutorio de Matlab 6.5Apostila, Janeiro, 2003.
S. A. VicenteMatlab & Simulink,Apostila, Faculdade de Engenharia Industrial, 1994.
F. S. Lobato Encit 2010 73/73
Main Talk