Escolar Documentos
Profissional Documentos
Cultura Documentos
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
3/12/2009
5
Janelas
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;
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
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=
[ 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
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
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;
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
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
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.
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.
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
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
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;
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
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:
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
3/12/2009
83
Formato Numérico:
Operações Básicas:
3/12/2009
84
Operações Relacionais:
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:
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:
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