Você está na página 1de 101

Mini Curso

Alexandre Branquinho Rocha


mail: branquinho@sc.usp.br
Aula 1

Introdução

3/12/2009

2
Aplicações:
 Simulação
 Jogos
◦ Inteligência Artificial
◦ Redes Neurais
 Instrumentação
 Automação
 Medicina

3/12/2009

3
Problemas Encontrados na
Engenharia
 Resolver equações muito extensas
 Resolver Sistemas
 Resolver Integrais
 Resolver Derivadas
 Traçar Gráficos
 Encontrar Valores de:
◦ Máximo
◦ Mínimo
3/12/2009 ◦ Interseção

4
Iniciando o MATLAB

Selecione inicialmente o diretório


onde serão salvos e executados
os programas criados!

3/12/2009

5
Janelas

WorkSpace – mostra todas as


variáveis utilizadas no
programa.

Command History – mostra o


histórico dos comandos dados
ao MATLAB no Command
Window
3/12/2009

6
Variáveis do Programa
 Podem ter no máximo 31 caracteres;
 Os nomes devem começar com LETRAS;
 Caracteres de pontuação NÃO são
permitidos;
 Distinção de maiúsculas e minúsculas;

Custo ≠ custo ≠ CuSto ≠ CUSTO ...

3/12/2009

7
Observações
 Para resolver integrais e derivadas
devemos fazer uso antes da função
syms dizendo assim ao programa para
tratar como símbolo a variável do
problema em questão.

3/12/2009

8
Observações

 Exemplo:
syms x y z

Dizemos assim ao programa para tratar


as variáveis x, y e z como símbolos.

 Para retornar os símbolos a forma de


variáveis, devemos fazer uso da função
sym2poly(_____)

3/12/2009

9
Resolvendo equações extensas

 3,87 ⋅ π 
x = 154 2 + x 2 − 963 ⋅ x + 4625 − 784 ⋅ x 2 + sen   + 4 ,782 ⋅ tg (0 .156 ) − 12 ⋅ x 3
 1, 29 

 x=solve('x=154^2+x^2-963*x+4625-
784*x^2+sin(3.87*pi/1.29)+4.782*tan(0.156)-
12*x^3')

x=

5.2463512724443844694933368035694
-7.1012054591718830367351002104524
-63.395145813272501432758236593117
3/12/2009

10
Resolvendo um Sistema

 x 2 ⋅ y 2 − 2 ⋅ x − 390 = 0

 x 2
− y 2
−9 = 0

[x,y]=solve('(x^2)*(y^2) - 2*x - 390 = 0','(x^2) - (y^2) - 9 = 0')

x=
[ 5]
[ 5]
Soluções :
y= (5 , 4 ) (5 , − 4 )
[ 4]
3/12/2009 [ -4] Soluções Reais

11
Resolvendo Integrais
f (x ) = ∫ (sen (x )) ⋅ dx
2 syms x y

π
f (x ) = ∫ 36 ⋅ cos (3 ⋅ x − π 4 ) ⋅ dx
2

π
− 2

f (x , y ) = ∫ ∫ (x )
10 3
3
− 4 ⋅ y ⋅ dy ⋅dx
0 −5

f=int((sin(x))^2)
f = -1/2*sin(x)*cos(x)+1/2*x

f=int(36*cos(3*x-pi/4),x,-pi/2,pi/2)
f = -12*2^(1/2)

f=int(int(x^3-4*y,y,-5,3),x,0,10)
3/12/2009 f = 20320

12
Resolvendo Derivadas
syms x y
f (x ) = (5 ⋅ cos (5 ⋅ x ))
d
dx
f (x ) =
d  d

dx  dx
( )
x 2 + 5 ⋅ x − 10 

f (x ) = (sen ( x ⋅ y ))
d
dx

f= diff(5*cos(5*x))
f = -25*sin(5*x)

f= diff(diff(x^2+5*x-10))
f=2

f= diff(sin(x*y),x)
3/12/2009 f = cos(x*y)*y

13
Criação de Vetores

3/12/2009

14
Criação de Vetores

3/12/2009

15
Orientação de Vetores

O ‘ funciona
como operador de
transposição.

3/12/2009

16
Criação de Matrizes

3/12/2009

17
Criação de Matrizes

3/12/2009

18
Localização Lógica

3/12/2009

19
Busca em Matrizes

Os Elementos maiores que 5


estão nas posições:
[3,1] ; [3,2] ; [2,3] ; [3,3]

3/12/2009

20
Dimensão de Vetores e Matrizes

3/12/2009

21
Inserindo Elemento na Matriz

3/12/2009

22
Traçando Gráficos

O comando plot do MATLAB pode


traçar tanto um ponto com
coordenadas x e y definidos, mas
também pode traçar curvas, onde x
e y entram no gráfico na forma de
vetores.
 O comando plot3 é utilizado para
gerar gráficos 3D e segue o mesmo
princípio do comando plot
3/12/2009

23
Traçando Gráficos 2D

3/12/2009

24
Traçando Gráficos 3D

3/12/2009

25
Traçando Superfícies

3/12/2009

26
Aula 2

Gráficos

3/12/2009

27
SubGráficos

Seleciona o
Gráfico no alto,
à esquerda, de
uma grade 2
por 2 de
subgráficos
3/12/2009

28
SubGráficos

3/12/2009

29
SubGráficos

3/12/2009

30
SubGráficos

3/12/2009

31
SubGráficos

3/12/2009

32
Gráficos Bidimensionais
Especializados

3/12/2009

33
Gráficos Bidimensionais
Especializados

3/12/2009

34
Gráficos Bidimensionais
Especializados

3/12/2009

35
Gráficos Bidimensionais
Especializados

3/12/2009

36
Gráficos em Escalas Diferentes

3/12/2009

37
Gráficos em Escalas Diferentes

3/12/2009

38
Dicas Importantes - Gráficos
 Comando close:
◦ close – fecha a janela de Figure ativa
◦ close(h) – fecha a janela Figure com o handle h.
◦ close all – fecha todas as janelas Figure.

 Comando clf:
◦ clf – limpa a janela Figure ativa.
◦ clf reset – limpa a janela Figure ativa e devolve
todas as propriedades, como hold, a seu estado
padrão.

3/12/2009

39
Tipos de Gráficos

3/12/2009

40
Tipos de Gráficos

3/12/2009

41
Tipos de Gráficos

3/12/2009

42
Tipos de Gráficos

3/12/2009

43
Tipos de Gráficos

3/12/2009

44
Tipos de Gráficos

3/12/2009

45
Tipos de Gráficos

3/12/2009

46
Exercício - Tipos de Gráficos
 Criar a placa a seguir:

3/12/2009

47
Exercício - Tipos de Gráficos

3/12/2009

48
Exercício - Tipos de Gráficos

3/12/2009

49
Exercício - Tipos de Gráficos

3/12/2009

50
Resolução - Tipos de Gráficos
 %Limpa Variaveis e Tela
 clear all;
 close all;
 clc;

 %Cria Retangulo Azul


 xquad1=[-5 5 5 -5];
 yquad1=[-7.5 -7.5 7.5 7.5];

3/12/2009

51
Resolução - Tipos de Gráficos
 %Cria Retangulo Branco
 xquad2=[-4 4 4 -4];
 yquad2=[-1.5 -1.5 6.5 6.5];

 %Cria Cruz
 xcruz=[-0.5 0.5 0.5 3.5 3.5 0.5 0.5
-0.5 -0.5 -3.5 -3.5 -0.5 -0.5];
 ycruz=[-1 -1 2 2 3 3 6 6 3 3 2 2 -1];

3/12/2009

52
Resolução - Tipos de Gráficos
 %Plota a Imagem
 fill(xquad1,yquad1,'b',xquad2,
yquad2,'w',xcruz,ycruz,'r');
 axis equal

3/12/2009

53
Resolução - Tipos de Gráficos
 %Insere o Texto
 text(0,-4,'Hospital','Color',[1,1,1],
'FontSize',40,'FontWeight','bold',
'HorizontalAlignment','center')

 grid on
 axis square off
 axis equal

3/12/2009

54
Comandos Úteis Para Gráficos

 figure(n) Onde n é o numero da figura


 plot3(x1,y1,z1,'o',x2,y2,z2,'*',x3,y3,z3,'d');
◦ Plota 3 gráficos Tridimensionais (x1,y1,z1); (x2,y2,z2) e
(x3,y3,z3)
 grid on; Coloca Grid no Gráfico
 xlabel('Legenda do Eixo X');
 ylabel('Legenda do Eixo Y');
 zlabel('Legenda do Eixo Z');
 title('Titulo do Gráfico');
 legend('Legenda Graf.1', 'Legenda Graf.2', 'Legenda
Graf.3');

3/12/2009

55
Exemplo de Gráfico 2D com
Legenda de Eixos e Linhas e Titulo

3/12/2009

56
Aula 3

Programando

3/12/2009

57
Criando programas facilmente

 Quem já tentou programar no Command


Window do MATLAB deve ter notado que não
é fácil ficar repetindo uma série de
comandos sempre que desejar alterar um
dado no programa.
 Para resolver esse problema existe o Editor
de programas.
◦ No menu File vá em New e clique em M-File, irá
abrir o Editor de programas.
 Obs.: Ao salvar os programas e funções, deve-se
prestar atenção de salvá-los todos em uma única pasta
de trabalho, para facilitar sua chamada posterior.
3/12/2009

58
M-File

File

New

3/12/2009 M-File

59
Algumas Funções Básicas:
if: Se (if) acontecer determinado evento irá executar
determinada operação, senão(else), executará
outra;
for: Repete um evento um determinado número de
vezes;
while: Repete um evento indeterminadas vezes até que
a condição estipulada seja atingida;
clc: Limpa a tela principal;
clear: Limpa as variáveis da área de trabalho
(workspace);
input: Recebe dados do teclado;
fprintf:Mostra na tela uma frase determinada pelo
programador;
3/12/2009

60
Programa Exemplo 1:
 Criar um Programa que receba 10 valores
do teclado e os plote em um gráfico.

clear; %Limpa as Variáveis


clc; %Limpa a Tela

x=[0 1 2 3 4 5 6 7 8 9]; %Cria um Vetor com 10 valores (0 a 9)

for a=1:1:10 %a varia de 1 até 10 de 1 em 1


y(a)=input('Digite o Valor:');%Entrada de Valores de Y
end
plot(x,y) %Plota os valores de x e y

3/12/2009

61
Resultados do Programa 1:

3/12/2009

62
Operações Relacionais

Operadores Lógicos:

3/12/2009

63
Estruturas (for
(for))

for x=0:1:10
A função for irá repetir o loop do
ponto inicial 0, variando de 1 em 1
até atingir o valor final 10.

Serão executadas todas as


Operações operações existentes entre o for e
o end

Não é necessário limitar com


chaves a área em que o loop deve
agir, isso já é feito
automaticamente pelo MATLAB.
3/12/2009 end

64
Estruturas (while
(while)
)

while x<=100
A função while irá repetir as
operações enquanto a condição
(x≤100) não for satisfeita

Serão executadas todas as


Operações operações existentes entre o while
e o end

Não é necessário limitar com


chaves a área em que o loop deve
agir, isso já é feito
automaticamente pelo MATLAB.
3/12/2009 end

65
Estruturas (if
(if))

if x<=10
Operação 1 A função if impõe uma condição
para que se ocorra uma
determinada operação.
elseif x>10 & x<50 Será executada a operação que
Operação 2 estiver de acordo com as
condições estipuladas

else Não é necessário limitar com


chaves a área em que o loop deve
Operação 3 agir, isso já é feito
automaticamente pelo MATLAB.
end
3/12/2009

66
Estruturas (switch
(switch)
)

metodo = 'Bilinear';
A função switch localiza uma
condição d entrada ou um
switch lower(metodo) parâmetro de entrada em uma
case {'linear','bilinear'} serie de casos. Após localizado
a função realiza a operação
disp('Metodo é linear')
abaixo dela informada.
case 'cubico'
disp('Metodo é cubico') Será executada a operação que
case 'nearest' estiver de acordo com o
parâmetro d entrada
disp('Metodo é nearest')
otherwise Não é necessário limitar com
disp('Metodo Desconhecido') chaves a área em que o loop
end deve agir, isso já é feito
3/12/2009 automaticamente pelo MATLAB.

67
Exercício Exemplo 1
 Fazer um programa que:
◦ Gere 2 gráficos com 15 valores aleatórios de
0 a 100;
◦ Encontre máximos e mínimos e mostre no
gráfico;
◦ Encontre os pontos onde os gráficos se
tocam;

 Obs.: Todos esses valores devem estar


assinalados no gráfico
3/12/2009

68
Encontrando Máximos e Mínimos
 Inicialmente, será gerado um gráfico bidimensional com
15 valores aleatórios de Y, que irão variar de 0 a 100.

 clear all;
 close all;
 clc;

 %Gerando valores aleatórios para y1 e y2
 for n=1:1:15
 y1(n)=round(rand(1)*100);
 y2(n)=round(rand(1)*100);
 x(n)=n-1;
3/12/2009
 end

69
Encontrando Máximos e Mínimos
 Após o gráfico e os valores gerados, o programa de
localização de máximos e mínimos será gerado.

 %Localiza maximos em y1 e y2
 ymax1=max(y1);
 xmax1=find(y1==ymax1)-1;
 ymax2=max(y2);
 xmax2=find(y2==ymax2)-1;
 ymax=max([ymax1 ymax2]);
 if ymax==ymax1
 xmax=xmax1;
 else
 xmax=xmax2;
 end
3/12/2009

70
Encontrando Máximos e Mínimos
 Após o gráfico e os valores gerados, o programa de
localização de máximos e mínimos será gerado.

 %Localiza minimos em y1 e y2
 ymin1=min(y1);
 xmin1=find(y1==ymin1)-1;
 ymin2=min(y2);
 xmin2=find(y2==ymin2)-1;
 ymin=min([ymin1 ymin2]);
 if ymin==ymin1
 xmin=xmin1;
 else
 xmin=xmin2;
 end
3/12/2009

71
Ageitando valores:
 Após o gráfico e os valores gerados, o programa de
localização de máximos e mínimos será gerado.

 %Discretizando o gráfico
 passo=0.00001;
 xi=0:passo:(n-1);
 y1i=interp1(x,y1,xi);
 y2i=interp1(x,y2,xi);

 %Para eliminar os números quebrados, acertamos qual a
precisão necessária
 y1ix=round(100*y1i)/100;
 y2ix=round(100*y2i)/100;

3/12/2009

72
Localizando Interseções

 %Encontrando interseções
 k=1;

 for a=1:1:(((n-1)/passo)+1)
 if y1ix(a) == y2ix(a)
 intersecaoY(k)=y1ix(a);
 intersecaoX(k)=xi(a);
 k=k+1;
 end
 end
3/12/2009

73
Localizando Interseções
 %Plotando Gráfico

 figure(1)
 subplot(2,1,1)
 plot(x,y1,'b--',x,y2,'r-');
 title('Gráfico com pontos aleatórios');
 legend('Graf. 1','Graf. 2');
 xlabel('Eixo X');
 ylabel('Eixo Y');
 grid on;
3/12/2009  subplot(2,1,2)

74
Localizando Interseções
 plot(xi,y1i,'b--',xi,y2i,'r-',intersecaoX,intersecaoY,'og',...
 xmax,ymax,'or',xmax1,ymax1,'^b',xmax2,ymax2,'^c',...
 xmin,ymin,'or',xmin1,ymin1,'vb',xmin2,ymin2,'vc');
 title('Gráfico com pontos de interseções marcados e maximos');
 legend('Graf. 1','Graf. 2');
 xlabel('Eixo X');
 ylabel('Eixo Y');
 grid on;

3/12/2009

75
Traçando o Gráfico com os
pontos de interseção e de
máximos e mínimos

3/12/2009

76
Criando Funções

 Funções são bem úteis ao se criar um


programa muito extenso e que
recursivamente necessitam de um
determinado cálculo, sendo assim, as
funções se tornam muito úteis para limpar o
programa visualmente.

3/12/2009

77
Dúvidas de sintaxe:

O Matlab possui um
grande número de
funções já prontas,
e devido a isso,
muitas delas não
vamos conseguir
decorar a sintaxe
corretamente,
sabendo disso,
vamos fazer uso da
função help para
encontrar a sintaxe
correta.
3/12/2009

78
Dúvidas de sintaxe:
 O caso anterior é usado quando já se sabe qual a função a ser usada
para se resolver o problema, mas no caso de não se saber qual a
função a ser usada, podemos fazer o uso do Help localizado na barra
de tarefas do menu principal.

3/12/2009

79
Conversões

3/12/2009

80
Rotinas de Alto Nível

 Salvar Arquivos:

 O arquivo gerado leva a extensão .mat


3/12/2009 ◦ Nome_do_Arquivo.mat

81
Rotinas de Alto Nível

 Carregar Arquivos:

 y=load(‘Nome_do_Arquivo’,’a’) retorna
apenas a variável a na estrutura y.
3/12/2009

82
Comandos

Serão citados a seguir vários


comandos separados por áreas, com
a finalidade de auxiliar em
programas mais complexos.

3/12/2009

83
Formato Numérico:

Operações Básicas:

3/12/2009

84
Operações Relacionais:

Operações entre Vetores:

3/12/2009

85
Detalhes do Gráfico:

Anotações no Gráfico:

3/12/2009

86
Comandos para Plotar Gráficos
Bidimensionais:

3/12/2009

87
Comandos para Plotar Gráficos
Tridimensionais e Contornos:

3/12/2009

88
Operadores Lógicos:

Comentários e Pontuações:

3/12/2009

89
Algumas Funções Matemáticas:

3/12/2009

90
Construção de Vetores:

Funções Relacionadas a Matrizes:

3/12/2009

91
Programa Desafio
 O programa a seguir tem o intuito
de despertar dúvidas com relação a
programação, para assim poder
resolve-las da melhor forma
possível.

3/12/2009

92
Programa 2:
 Criar um programa que faça o seguinte:

- Plotar uma matriz aleatória 4x4 com valores de 0 a


100 apenas com valores inteiros;
- Encontrar o MAIOR e o MENOR Elemento da Matriz;
- Colocar os valores em ordem crescente;
- Mostrar os valores na tela;
- Plotar os valores em ordem crescente em um
gráfico.

Todos esses dados devem estar no mesmo programa.

3/12/2009

93
Dicas:
 Consulte as funções rand e round, elas
podem ser úteis para o inicio do
problema!!!
 Seria interessante olhar como se faz
para criar uma função e como chamá-la
dentro do programa principal, mesmo
não sendo necessário para este
exercício!!!

3/12/2009

94
Resolução:
 close all
 clear all
 clc

 %Plotar uma matriz aleatória 4x4 com valores de 0 a
100 apenas com valores inteiros
 i=4; %Linhas
 j=4; %Colunas

 MATRIZ=rand([i,j]);
 MATRIZ=MATRIZ*100;
 MATRIZ=round(MATRIZ);
3/12/2009

95
Resolução:
 %Encontrar o MAIOR e o MENOR Elemento da Matriz!!!
 VetMin=min(MATRIZ);
 VetMax=max(MATRIZ);
 Menor=100;
 Maior=0;

 for a=1:1:j
 if Menor>VetMin(a)
 Menor=VetMin(a);
 elseif Maior<VetMax(a)
 Maior=VetMax(a);
 end
3/12/2009
 end

96
Resolução:
 %Colocar os valores em ordem crescente
 k=1;
 for a=0:1:100
 for b=1:1:i
 for c=1:1:j
 if MATRIZ(b,c)==a
 Crescente(1,k)=a;
 k=k+1;
 end
 end
 end
 end
3/12/2009

97
Resolução:
 %Mostrar os valores na tela:

 fprintf('A Matriz Utilizada Foi: \n\n')
 MATRIZ
 fprintf('O MENOR valor da Matriz é: \n\n')
 Menor
 fprintf('O MAIOR valor da Matriz é: \n\n')
 Maior
 fprintf('A ordem CRESCENTE dos valores é: \n\n')
 Crescente

3/12/2009

98
Resolução:
 %Plotar os valores em ordem crescente em um grafico!!!
 x=1:1:i*j;
 plot(x,Crescente)
 grid on

3/12/2009

99
Duvidas???

3/12/2009

100
OBRIGADO!!!

3/12/2009

101