MATLAB
description
Transcript of MATLAB
O objetivo deste curso é a apresentação de ferramentas básicas do ambiente MATLAB. Realço que o tempo (8 horas) de curso impõe uma metodologia dinâmica de aula. Em função disto, evite conversas paralelas.
Cursos em ambiente de laboratório exigem atenção!
OPERAÇÕES COM VETORES E MATRIZES
Quando inicializamos o MATLAB, são criadas uma ou mais janelas e, dentre elas, a janela de comando é o principal local de interação com o MATLAB. A aparência da janela a apresentada a seguir:
O sinal de prompt é dado por >>
MATEMÁTICA ELEMENTAR
MATLAB executa operações algébricas como se fosse uma calculadora, possuindo as seguintes operações aritméticas elementares:
A ordem na qual essas operações são executadas em uma expressão é dada pelas regras usuais de precedência: as expressões são executadas da esquerda para direita com operação de potênciação tendo a maior precedência, seguida de multiplicação e divisão (ambas com mesma ordem de precedência), seguidas de adição e multiplicação (mesma ordem de precedência). Parênteses podem ser usados para alterar a ordem de precedência.
ÁREA DE COMANDOS
Você pode criar variáveis na memória do programa MATLAB e estas variáveis são armazenadas enquanto durar o uso do programa.
>> teste=3;
>> prova=7;
>> teste+prova
ans = 10
VARIÁVEIS
Existem regras em relação aos nomes das variáveis na linguagem do MATLAB.
•As variáveis são sensíveis a maiúsculas e minúsculas
•Podem conter até 31 caracteres
•Os nomes das variáveis devem começar com uma letra
•Caracteres de pontuação não são permitidos, nem caracteres acentuados
Observação: O MATLAB possui alguns nomes de variáveis especiais:
COMENTÁRIOS E PONTUAÇÃOTodo texto digitado depois do sinal de % é considerado no ambiente MATLAB como um comentário.
>> % PROGRAMA EXEMPLO
>> X=10; % X REPRESENTA UMA VARIAVEL QUALQUERObservação: MATLAB armazena o valor x=10 e ignora os caracteres à direita de %.
Pode-se também adicionar ou escrever vários comandos por linha, separando-os por vírgula ou ponto e vírgula:
>> y=3, t=4, u=34
y = 3
t = 4
u = 34
Quando se coloca o sinal de ponto e vírgula no final da sentença do MATLAB, o resultado de uma operação ou comando não é exibido na tela do MATLAB. Veja a diferença:
>> p=3
p =
3
>> p=3;
Uma sucessão de três pontos indica ao MATLAB que o resto do comando aparecerá na linha seguinte, mas lembre-se que o nome de uma variável não pode ser dividido entre linhas:
>> valores_das_concentracoes=33+...
44;
>>
FUNÇÕES MATEMÁTICAS
JANELA DE COMANDOS
Todas as informações, dados e variáveis criados na janela de comandos são armazenados no espaço de trabalho do MATLAB. O comando who mostra os nomes das variáveis.
O comando clear apaga variáveis do espaço de trabalho do MATLAB.
O comando cls apaga as informações do espaço de trabalho, mas não da memória.
O comando diary permite que você armazena em arquivo texto tudo o que você digitou. Sua sintaxe é diary nome do arquivo. Deve ser finalizado com o comando diary off.
FORMATO DE VISUALIZAÇÃO DE NÚMEROS
FORMATAÇÃO fprintfCARACTERES DE
FORMATAÇÃORESULTADOS
%d Exibe valor como inteiro
%e Formato exponencial
%f Formato ponto flutuante
\n Muda de linha
Em problemas simples, é mais simples a digitação de comandos no prompt do MATLAB.
Para problemas, mais complexos é conveniente, ou que você deseja repetir n vezes, o MATLAB apresenta a possibilidade de escrever os comandos em arquivo texto e depois executá-lo introduzindo o nome do arquivo na área de comandos do MATLAB.
Clique em File,New, M-file.
Vamos a um exemplo?
Digite o nome do arquivo!
ARQUIVO DE DADOSExistem muitas maneiras de carregar e gravar arquivos de dados no MATLAB. Inicialmente, vamos considerar os comandos load e save.
O comando save grava dados do espaço de trabalho em arquivo de disco. Sua sintaxe é:
Save nome_do_arquivo var1 var2 var3
Var1 var2 var3 … são as variáveis a serem gravadas no arquivo nome_do_arquivo.
Salvando em formato que podem ser lidos por planilhas e programas escritos em outras linguages.
>> x=[1 2 5.6 789 4.5];
>> save x.dat x -ascii
Apenas como exercício, encerre o MATLAB e inicialize-o novamente.
Digite *.dat
Clique
Explore esta área!
Como você pode verificar osDados foram gravados!
Caso você queira utilizar os dados gravados diretamente na área de trabalho do MATLAB, pode utilizar:
load nome_do_arquivo
No nosso exemplo, load x.dat
Agora digite x e verifique que a variável x, ou o vetor x, como queira, está como variável atualizada na memória.
OPERAÇÕES COM VETORES E MATRIZES
A criação de vetores no MatLab é muito simples. Você deve começar com um colchete esquerdo e inserir os valores desejados, separados por espaços ou vírgulas e fechar o conjunto com um colchete direito.
>> x=[1.2 3 4.5 6 9]; Quantos elementos este vetor possui?
Este vetor possui 5 elementos. Mais precisamente ele possui uma linha e 5 colunas, ou seja, é um vetor linha.
No MATLAB o acesso aos elementos de um vetor é feito utilizando índices na forma nome_do_vetor(i).
Veja Alguns Exemplos!
>> x=[1.2 3 4.5 6 9];
>> x=[1.2 3 4.5 6 9];
>> x(0)
??? Index into matrix is negative or zero.
>> X(1)
??? Undefined function or variable 'X'.
>> x(1)
ans = 1.20
>> x(5)
ans = 9.00
Para ter acesso a um bloco de elementos utilize a notação de dois pontos (:) :
>> x(1:5)
ans = 1.20 3.00 4.50 6.00 9.00
>> x(1:3)
ans = 1.20 3.00 4.50
>> x(2:4)
ans = 3.00 4.50 6.00
A construção de vetores também pode ser feita, ao invés de digitar todos os elementos, sob algumas formas alternativas.
Função linspace
A função linspace possui a seguinte sintaxe:
linspace(primeiro_valor,último_valor,número_de_valores)
linspace(2,5,4)
ans = 2.00 3.00 4.00 5.00
Mas você também pode criar o vetor utilizando o comando: x=início:incremento:fim
>> x=[1:.8:5]
x =1.00 1.80 2.60 3.40 4.20 5.00
ORIENTAÇÃO DE VETORESVocê pode criar vetores com mais de uma linha, utilizando a notação de ponto e vírgula:
OBSERVE ADIFERENÇA!
>> x=[1 2 3 4 5]
x = 1 2 3 4 5
>> x=[1; 2; 3; 4 ;5]
x =
1
2
3
4
5
Você também pode transpor um vetor, utilizando a anotação apóstrofo:
>> x=[1 4 5 89]
x = 1 4 5 89
>> x' DIGITE!
ans =
1 4 5 89
MATRIZESUsam-se espaços para separar os elementos de uma linha e utliza-se ponto e vírgula para criar linhas na matriz:
>> x=[1 2 3;4 5 6;7 8 9]
Digite
x = 1 2 3 4 5 6 7 8 9
SOMA DE MATRIZESA soma de matrizes é exemplificada abaixo:
x=[1 2 3;4 5 6;7 8 9]
y=[4 5 6; 8 9 12; 5 6 7];
DIGITE x+y
ans =
5 7 9
12 14 18
12 14 16
MULTIPLICAÇÃO OU DIVISÃOELEMENTO POR ELEMENTO
x=[1 2 3;4 5 6;7 8 9]
y=[4 5 6; 8 9 12; 5 6 7];
DIGITE x.*yOu x./y
x./y ans =
0.2500 0.4000 0.5000 0.5000 0.5556 0.5000 1.4000 1.3333 1.2857
x.*y
ans =
4 10 18 32 45 72 35 48 63
O ponto anterior aoOperador indicaQue a operação
Deve ser feita elementoA elemento!
SISTEMAS LINEARESMuitas aplicações de Engenharia envolvem a solução de sistemas lineares. Considere o exemplo:
O que é equivalente a escrevermos , onde A é a matriz dos coeficientes, W a matriz das incógnitas do sistema e B a matriz dos resultados. A Álgebra linear nos fornece o conceito de que este sistema possui solução se o determinante da matriz A for diferente de zero. Vejamos a solução deste problema utilizando o MATLAB:
>> A=[1.2 6 4; 5 8 0;7 12 5];>> B=[12;3;6];
>> det(A)ans = -86.0000.
A solução do sistema por ser dada por .No MATLAB pode ser expresso por:
>> x=inv(A)*B x =
-3.9767 2.8605 -0.0977
FATORAÇÃO LU
No MATLAB a fatoração LU pode ser implementada pelo comando: A\B
Matriz dos coeficientes
Matriz dos resultados
GRÁFICOS 2Dx=linspace(0,2*pi,50);
>> y=exp(x).*sin(x);
>> plot(x,y)
OUTRAS FUNÇÕES
fplot
f(x)=cos(x)*ex
fplot(‘cos(x)*exp(x)’,[0 3*pi])
DIGITE0 1 2 3 4 5 6 7 8 9
-14000
-12000
-10000
-8000
-6000
-4000
-2000
0
2000
polarr=3cos(4t),
t=0:.01:2*pi;
r=3*cos(4*t);
polar(t,r) 1
2
3
30
210
60
240
90
270
120
300
150
330
180 0
plotyy
1 1.5 2 2.5 3 3.5 4 4.5 5 5.5 60
500
exp(
x)
1 1.5 2 2.5 3 3.5 4 4.5 5 5.5 60
2
log(x
)
y1=exp(x); y2=log(x)
x=1:.1:6;
y1=exp(x); y2=log(x);
ax=plotyy(x,y1,x,y2);
hy1=get(ax(1),'ylabel');
hy2=get(ax(2),'ylabel');
set(hy1,'string','exp(x)');
set(hy2,'string','log(x)');
semilogx
10-5
10-4
10-3
10-2
10-1
100
0
1
2
3
4
5
6
7
8
9
10
t=linspace(0,3*pi,300);>> x=exp(-t);>> y=t;>> semilogx(x,y); grid
Também existe o comando semilogy( ) e o
Comando loglog( )
hist
prof=char('Professor Universitario','Engenheiro Quimico','Medico');
sal=[999; 6789; 9999];
barh(sal);
for i=1:3
gtext(prof(i,:));
end
xlabel('Salario em reais');
title('Profissoes e Remuneraçao = Alerta',...
'fontsize',19);
0 1000 2000 3000 4000 5000 6000 7000 8000 9000 10000
1
2
3
Professor Universitario
Engenheiro Quimico
Medico
Salario em reais
Profissoes e Remuneraçao = Alerta
pieprof=char('Professor Universitario','Engenheiro Quimico','Medico');
sal=[999; 6789; 9999];
pie(sal);
for i=1:3
gtext(prof(i,:));
end
xlabel('Salario em reais');
title('Profissoes e Remuneraçao = Alerta',...
'fontsize',19);
6%
38%
56%
Profissoes e Remuneraçao = Alerta
Professor UniversitarioEngenheiro Quimico
Medico
USANDO SUBPLOTUma janela pode conter mais de um conjunto de eixos e, neste caso, pode ser usado o comando subplot(m,n,p), que divide a janela de figuras em uma matriz m por n regiões , nas quais se pode traçar gráficos e ativa a região de ordem p. Os subgráficos são numerados da esquerda para direita, linha por linha.
x=linspace(0,2*pi,30);
>> y=sin(x);
>> z=cos(x);
>> a=sin(x).*cos(x);
>> b=sin(x)./(cos(x)+eps);
>> subplot(2,2,1) %seleciona o grafico à esquerda, no alto
>> plot(x,y);
>> subplot(2,2,2) %seleciona o grafico à direita, no alto
>> plot(x,z);
>> subplot(2,2,3) %seleciona o grafico à esquerda, embaixo
>> plot(x,a);
>> subplot(2,2,4) %seleciona o grafico à direita, embaixo
>> plot(x,b);
0 2 4 6 8-1
-0.5
0
0.5
1
0 2 4 6 8-1
-0.5
0
0.5
1
0 2 4 6 8-0.5
0
0.5
0 2 4 6 8-20
-10
0
10
20
GRÁFICOS 3DPara gerar um arquivo que representa uma superfície 3D, primeiros representamos o conjunto de valores de x e y que representam as variáveis independentes e depois os valores de z que representam os valores da superfície.
Gere o gráfico da superfície f(x,y)=z=1-x2-y2 para –0.5<x<0.5 e -0,5<y<0.5.
No MATLAB isto seria realizado por:
>>[xgrid,ygrid]=meshgrid(-0.5:0.1:0.5,-0.5:0.1:0.5);
>> z=sqrt(abs(1-xgrid.^2-ygrid.^2));
>> mesh(z)
0
5
10
15
0
5
10
150.7
0.75
0.8
0.85
0.9
0.95
1
Também podemos utilizar a função surf:
>>[xgrid,ygrid]=meshgrid(-0.5:0.1:0.5,-0.5:0.1:0.5);
>> z=sqrt(abs(1-xgrid.^2-ygrid.^2));
>> surf(xgrid,ygrid,z)
-0.5
0
0.5
-0.5
0
0.50.7
0.75
0.8
0.85
0.9
0.95
1
GRÁFICOS DE CURVAS DE NÍVEL
Gráficos de curva de nível mostram linhas de elevação ou altura constante. No MATLAB, gráficos de curvas de nível são obtidos pelo uso das funções contour e contour3.
>>[xgrid,ygrid]=meshgrid(-0.5:0.1:0.5,-0.5:0.1:0.5);
>> z=sqrt(abs(1-xgrid.^2-ygrid.^2));
>> contour(xgrid,ygrid,z)
-0.5 -0.4 -0.3 -0.2 -0.1 0 0.1 0.2 0.3 0.4 0.5-0.5
-0.4
-0.3
-0.2
-0.1
0
0.1
0.2
0.3
0.4
0.5
[xgrid,ygrid]=meshgrid(-0.5:0.1:0.5,-0.5:0.1:0.5);
>> z=sqrt(abs(1-xgrid.^2-ygrid.^2));
>> contour3(xgrid,ygrid,z)
-0.5
0
0.5
-0.5
0
0.50.75
0.8
0.85
0.9
0.95
1
pie3prof=char('Professor Universitario','Engenheiro Quimico','Medico');
sal=[999; 6789; 9999];
pie3(sal);
xlabel('Salario em reais');
title('Profissoes e Remuneraçao = Alerta',...
'fontsize',19);
56%
Profissoes e Remuneraçao = Alerta
6%
38%
waterfall
x=-3:.1:3;
y=x;
[X,Y]=meshgrid(x,y);
Z=-15./(1+X.^2+Y.^2);
waterfall(Z)
hidden off 0
2040
6080
0
20
40
60
80-15
-10
-5
0