Baixe o app para aproveitar ainda mais
Prévia do material em texto
Introdução ao MATLABIntrodução ao MATLAB Leandro Leandro GazoniGazoni Fernanda Fernanda RauppRaupp O que é o MATLAB ? matrix laboratory é um software para computação científica resolve problemas matemáticos de forma rápida e eficiente possui uma família de aplicativos específicos (toolboxes) para: otimização, manipulação algébrica, redes neurais, processamento de sinais, simulação de sistemas dinâmicos, entre outros. Evolução do MATLAB AnoAno VersãoVersão ResumoResumo 1978 Classic MATLAB Versão em Fortran 1984 MATLAB 1 Reescrito em C 1985 MATLAB 2 30% a mais de funções e comandos 1987 MATLAB 3 + rápido, gráficos coloridos 1992 MATLAB 4 Animação, inteface, debugger, MS-Win 1997 MATLAB 5 OO, álgebra linear, eq. diferenciais 2000 MATLAB 6 LAPACK, ARPACK, BLAS, Suporte Java Variáveis no MATLAB existe somente um tipo de variável: matriz o tipo matriz pode ser expresso como: escalar: matriz 1 x 1 vetor: matriz 1 x n ou n x 1 matriz propriamente: matriz m x n a dimensão de matrizes e vetores é automática Representação de variáveis Variáveis Escalares Vetores Matrizes Vetores Linha Vetores Coluna String Numérico 0.120.12 (1X1)(1X1) ( ) 1 2 3 4 5 6 7 8 9 3 3 ⎡ ⎤⎢ ⎥= ⎢ ⎥⎢ ⎥⎣ ⎦ × x ( ) 1 2 4 1 3 4 ⎡ ⎤⎢ ⎥⎢ ⎥= ×⎢ ⎥⎢ ⎥⎣ ⎦ y[ ] (1 4)× L N C C [ ]1 2 3 Características na declaração de uma variável variáveis são alocadas na memória ao serem declaradas; nomes de variáveis são sensíveis a letras maiúsculas e minúsculas; vetores e matrizes devem ser declarados entre [ ]; elementos de uma mesma linha numa matriz são separados por espaço(s) ou vírgula; ponto-e-vírgula(;) indica o final de uma linha de uma matriz ou expressão; Exemplos de declarações de variáveis >> A = [ 1 2 3 4 5 ] A = 1 2 3 4 5 >>B = [ 1; 2; 3; 4; 5 ] ou >>B = A’ B = 1 2 3 4 5 Vetor Linha Vetor Coluna Exemplos de declarações de variáveis >> A = [ 1 2 3; 4 5 6; 7 8 9 ] A = 1 2 3 4 5 6 7 8 9 >> A = A' A = 1 4 7 2 5 8 3 6 9 Matriz Matriz Transposta Operadores matemáticos Símbolo Operação + Adição - Subtração * Multiplicação / Divisão: a/b=a*b^(-1) ^ Potenciação ‘ Matriz transposta Exemplos com operadores matemáticos >> A = [ 1 2; 3 4 ]; >> B = [ 5 6; 7 8 ]; 1 2 5 6 3 4 7 8 A B⎡ ⎤ ⎡ ⎤= =⎢ ⎥ ⎢ ⎥⎣ ⎦ ⎣ ⎦ >> C2 = A*B C2 = 19 22 43 50 >> C3 = A/B ( = A*inv(B) ) C3 = 3.0000 -2.0000 2.0000 -1.0000 >> C = A + B C = 6 8 10 12 >> C1 = A – B C1 = -4 -4 -4 -4 Operadores Matemáticos Ponto-a-Ponto Símbolo Operação .* multiplicação ./ divisão .^ potenciação Exemplos de operadores matemáticos ponto-a-ponto 1 2 5 6 3 4 7 8 A B⎡ ⎤ ⎡ ⎤= =⎢ ⎥ ⎢ ⎥⎣ ⎦ ⎣ ⎦ >>A = [ 1 2 ; 3 4 ]; >>B = [ 5 6 ; 7 8 ]; >> C = A.*B C = 5 12 21 32 >> C = A./B C = 0.2000 0.3333 0.4286 0.5000 >> C = A.^3 C = 1 8 27 64 >> C = A.^B C = 1 64 2187 65536 Característica na declaração de uma variável v = [ inicio : incremento : fim ] v = [ inicio : fim ] incremento=1 ou v = inicio : incremento : fim v = inicio : fim Exemplo: >> A = 1 : 9 A = 1 2 3 4 5 6 7 8 9 Característica na declaração de uma variável Exemplos: >> v = [ 2 : 2 : 10] v = 2 4 6 8 10 >> M = [1:1:3; 4:1:6; 7:1:9] M = 1 2 3 4 5 6 7 8 9 Manipulação de matrizes acessando um elemento de uma matriz; [ ]1 3 7 9 11 13 175 15=A >> A (3) ans = 5 A referência deve ser sempre ( linha, coluna)( linha, coluna) 11 12 13 21 22 31 32 33 23 1 2 3 4 5 7 8 9 6 ⎡ ⎤⎢ ⎥= ⎢ ⎥⎢ ⎥⎢ ⎥⎣ ⎦ a a a a a a a a aB >> B (2,3) ans = 6 Manipulação de matrizes É possível incluir matrizes em matrizes; >> A = [1 2 3; 4 5 6; 7 8 9]; >> a = [10 20 30]; >> A = [A;a] A = 1 2 3 4 5 6 7 8 9 10 20 30 A => matriz 4x3 A => matriz 3x3 Manipulação de matrizes É possível extrair matrizes de matrizes; 1 2 3 4 5 6 7 8 9 10 20 30 A ⎡ ⎤⎢ ⎥⎢ ⎥= ⎢ ⎥⎢ ⎥⎣ ⎦ Acessando os elementos na 2a e 3a colunas da 2a linha de A >> x = A ( 2, [ 2 3 ] ) ou >> x = A ( 2, 2:3) x = 5 6 Manipulação de matrizes 1 2 3 4 5 6 7 8 9 10 20 30 ⎡ ⎤⎢ ⎥⎢ ⎥= ⎢ ⎥⎢ ⎥⎣ ⎦ A Acessando os elementos da 2a e 3a linhas >> x = A ([2 3] , [1 2 3 ]) ou >> x = A (2:3, 1:3) x = 4 5 6 7 8 9 Manipulação de matrizes Podemos acessar diretamente elementos da diagonal de uma matriz; 1 2 3 4 5 6 7 8 9 A ⎡ ⎤⎢ ⎥= ⎢ ⎥⎢ ⎥⎣ ⎦ Vamos acessar a diagonal da matriz A >> x = diag(A) x = 1 5 9 Funções especiais para geração de matrizes A = rand (m,n) ou rand(n) Gera matriz com elementos aleatórios. A = eye (m,n) ou eye(n) Gera matriz com elementos na diagonal iguais a 1. Uma matriz identidade nXn é gerada por eye(n). A = zeros (m,n) ou zeros(n) Gera matriz com todos elementos iguais a 0. A = ones (m,n) ou ones(n) Gera matriz com todos elementos iguais a 1. Exemplos de funções especiais para geração de matrizes » a = rand(2) a = 0.3840 0.0928 0.6831 0.0353 » a = eye(2) a = 1 0 0 1 » a = ones(2) a = 1 1 1 1 » a = zeros(2) a = 0 0 0 0 Operadores matemáticos sin seno cos cosseno tan tangente csc cossecante sec secante cot cotangente acos arco-coseno asin arco-seno atan arco-tangente asec arco-secante acsc arco-cossecante acot arco-cotangente Variáveis e Comandos Permanentes ans resposta mais recente flops contador de operações matemáticas eps precisão da máquina NaN Not a Number realmax maior número de ponto flutuante inf Infinito realmin menor número de ponto flutuante computer tipo de computador pi 3,141592653... who lista de variáveis utilizadas i unidade Imaginária version versão do MATLAB Exercícios: Armazene os valores das seguintes variáveis: a = 3.132 b = -23.004 c = 5*pi d = (3, 5.4, 7.43)t e = (-2.234, 0, pi/2)t 5 34 87 B 32 4.65 74 0 13 43 ⎡ ⎤⎢ ⎥= ⎢ ⎥⎢ ⎥−⎣ ⎦ 9.81 f 0 1 −⎡ ⎤⎢ ⎥= ⎢ ⎥⎢ ⎥⎣ ⎦ 0.32 2.5 pi 2 A 1e2 4 12 9 51 24 +⎡ ⎤⎢ ⎥= ⎢ ⎥⎢ ⎥⎣ ⎦ Exercícios: Verifique os seguintes resultados: a) a + b + eps b) c – b * (a / b) c) d – e d) e’ + 2 * f e) f * B f) A * B --19.872019.8720 12.576012.5760 [5.2340 5.4000 5.8592][5.2340 5.4000 5.8592] -24.854 0 3.5708 ⎢ ⎥⎢ ⎥⎢ ⎥⎢ ⎥⎣ ⎦ ⎥⎥ ⎥ ⎦ ⎤ ⎢⎢ ⎢ ⎣ ⎡ − − 5095.05840.07830.0 7205.03906.07396.0 5450.06696.08108.0 ⎥⎥ ⎥ ⎦ ⎤ ⎢⎢ ⎢ ⎣ ⎡ −− −−− 0825.01933.01288.0 0006.00203.00055.0 7156.07442.10128.1 Outras funções exp exponencial poly polinômio característico log logaritmo natural det determinante log10 logaritmo base 10 abs módulo inv inverte matriz sqrt raiz quadrada max máximo valor real parte real de número complexo min mínimo valor imag parte imag. de núm. complexo mean média aritmética conj conj. dos núm. complexos std desvio padrão round arredonda num. Polinômios no MATLAB Polinômios no MATLAB são manipulados como vetores. Os coeficientes de um polinômio são armazenados como elementos um vetor linha, começando pelo coeficiente do termo de maior grau. Exemplo: >> p = [1 10 -29]; 3 2( ) 10 29= + −p x x x Funções relacionadas a polinômios roots acha raízes polyder acha derivada deconv divide conv multiplica polyval avalia polinômio polyfit ajusta curva Exemplos com funções de polinômios 3 210 2 29= +− −p x x x >> roots(p) ans = -9.9064 -1.7584 1.6648 >> p = [1 10 -2 -29] p = 1 10 -2 -29 >> polyder(p) ans = 3 20 -2 Operadores relacionais Símbolo Operador == igual ~= diferente > maior < menor >= maior ou igual <= menor ou igual Operadores lógicos Símbolo Operador & e | ou ~ não xor ou exclusivo Exemplos com operadores lógicos e relacionais >> 2 + 2 == 4 ans = 1 >> a = [1 2 3; 4 5 6] ans = 1 2 3 4 5 6 >> a >= 4 >> A = [1 2; 3 4]; B = 2*ones(2); >> A==B ans = 0 1 0 0 >> 10 > 100 ans = 0 ans = 0 0 0 1 1 1 Exemplos com operadores lógicos e relacionais >> x = [ 1 0; 0 1]; y = [ 1 1; 0 0]; >> x & y ans = 1 0 0 0 >> x | y ans = 1 1 0 1 >> xor (x;y) ans = 0 1 0 1 Programação em MATLAB expressa problemas mais extensos; agiliza os comandos mais digitados; é uma linguagem interpretada; pode ser criada a partir de qualquer editor de texto; apresenta formato livre como C, Fortran ou outras linguagens. Controladores de fluxo if : cria caminhos alternativo no programa if expressão 1 instruções elseif expressão 2 instruções else instruções end Controladores de fluxo Exemplo com if x=rand(1); y=rand(1); if x < y temp = y y = x x = temp end Resposta: temp = 6 y = 3 x = 6 Controladores de fluxo Exemplo com if : x=rand(1); y=rand(1); if x < y temp = y; y = x; x = temp; else disp('x eh maior que y') x, y end Resposta: ans = 1 x eh maior que y x = 0.8386 y = 0.2584 Resposta: temp = 0.7439 y = 0.5744 x = 0.7439 Controladores de fluxo for : permite que um comando ou um grupo de comandos se repitam for variável = expressão instruções end Controladores de fluxo Exemplos com for : for i = 1:5 x(i) = 2*i; end x Resposta: x = 2 4 6 8 10 Controladores de fluxo n=2; a = eye(n); for j = 2:n for i = 1:j-1 % incremento=1 a(i,j) = i/j; a(j,i) = i/j; end end disp(a) Resposta: 1.0000 0.5000 0.5000 1.0000 Controladores de fluxo while : permite que um ou mais comandos sejam repetidos enquanto a expressão de controle for verdadeira while (expressão de controle) instruções end Controladores de fluxo exemplo com while i=0; while ( sqrt(i) < 5 ) i = i+1; end sqrt(i) Resposta: i = 1 2 3 4 Funções auxiliares no controle de fluxo input – recebe dados através do teclado, que podem ser ou não armazenados em uma variável break – encerra um laço mais interno controlado pelo comando for pause – pára a execução do programa até que uma nova tecla seja pressionada Arquivos .m podemos criar novas funções ou scripts MATLAB possui um editor próprio e um debugger comentários começam por % ao se criar uma função ou script ela dever ser definida no path Arquivos .m scripts : executam os argumentos diretamente, automatizando uma série de comandos função : argumentos podem ser passados para a função, havendo uma manipulação de variáveis function [res1, res2, ...] = nome_da_função (arg1,arg2, ...) % comentário para help lista de procedimentos da função return Exemplo de função.m % Exibe o gráfico de y = ax^2 + bx + c em [-5,5] clear aux = 's'; while aux == 's’ clc a=input('a ='); b=input('b ='); c=input('c ='); x = -5:0.1:5; y = a*x.^2 + b*x + c; plot(y) pause figure(1) pause close aux=input('Exibir outro grafico? (s/n) ==> ','s'); end Exemplo de função.m arquivo: fun.m %.............................. % avalia a seguinte função % f(x)=x*x-cos(x) %.............................. function f = fun(x) f = x*x-cos(x); return Exemplo de função.m %.......................... % Aplica o método da % bisseção para encontrar % um zero de % f(x)= x*x - cos(x) % num intervalo [a,b], tal que f(a)*f(b) < 0. %.......................... k = 0; % conta núm. de iterações eps = 0.01; while( abs(b-a) >= 2*eps ) alfa = (a + b)/2; if ( fun(alfa) > 0) b = alfa; else a = alfa; end k = k+1; end display('A raiz da função é: ' ); (a+b)/2 display(‘número de iterações: '); k return zero.m function z = zero(a,b) % testa intervalo if ( fun(a)*fun(b) >= 0 ) display('O intervalo de .. .. busca da raiz está errado.') stop end Gráficos no MATLAB existem muitas funções para gerar gráficos 2D e 3D os gráficos podem ser armazenados em arquivos, coloridos ou em preto e branco Gráficos 2D Pode-se desenhar gráficos simples como y = f(x). Dados os vetores x e y, o gráfico é construído ligando-se os pontos (x(i),y(i)). >> x = [1.5 2.2 3.1 4.6 5.7 6.3 9.4]; >> y = [2.3 3.9 4.3 7.2 4.5 3.8 1.1]; >> plot(x,y) 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 Características dos Gráficos cores das linhas r vermelho g verde b azul w branco k preto y amarelo m roxo pontilhada: estrela* cruz+ xx circuloo ponto. tracejada-- tipos de linhas Gráficos no MATLAB 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 0 5 10 15 20 25 Exemplo de gráfico y = f(x) » x = [0:5]; » y = x.^2; » plot(x,y,‘ r : ’) x y = x² 0 0 1 1 2 4 3 9 4 16 5 25 Gráficos 3D plot3 curvas 3D surf,surfc,surfl superfícies 3D mesh,meshc,meshz linhas em perspectiva 3D contour curvas de nível Gráficos no MATLAB Exemplo de um gráfico 3D >> x = 0:pi/50:10*pi; >> plot3(sin(x),cos(x),x) -1 -0.5 0 0.5 1 -1 -0.5 0 0.5 1 0 5 10 15 20 25 30 35 Gráficos no MATLAB > t = 0:pi/50:10*pi; > plot3(sin(t),cos(t), t); > [X,Y] =meshgrid (-8:0.5:8,-8:0.5:8); > r =sqrt(X.^2+Y.^2)+eps; > Z = sin(r)./r; > subplot(221) > mesh(X,Y,Z); > subplot(222) > surf(X,Y,Z); > subplot(223) > meshc(X,Y,Z) > subplot(224) > contour(X,Y,Z) Animação de gráficos surf(peaks) axis vis3d for i=1:36 camorbit(10,0,'camera') drawnow end Animação de gráficos surf(peaks) axis vis3d for i=1:36 camorbit(10,2,'data',[0 1 0]) drawnow end Animação de gráficos surf(peaks) axis vis3d off for x = -200:5:200 campos([x,5,10]) drawnow end Animação de gráficos surf(peaks); axis vis3d xp = linspace(-150,40,50); xt = linspace(25,50,50); for i=1:50 campos([xp(i),25,5]); camtarget([xt(i),30,0]) drawnow end Help MATLAB on-line http://www.mathworks.com/access/helpdesk/help/tec hdoc/ref/ref.shtml http://www.mathworks.com/access/helpdesk/help/tec hdoc/matlab.shtml Introdução ao MATLABLeandro GazoniFernanda Raupp O que é o MATLAB ? Evolução do MATLAB Variáveis no MATLAB Representação de variáveis Características na declaração de uma variável Exemplos de declarações de variáveis Exemplos de declarações de variáveis Operadores matemáticos Exemplos com operadores matemáticos Operadores Matemáticos Ponto-a-Ponto Exemplos de operadores matemáticos ponto-a-ponto Característica na declaração de uma variável Característica na declaração de uma variável Manipulação de matrizes Manipulação de matrizes Manipulação de matrizes Manipulação de matrizes Manipulação de matrizes Funções especiais para geração de matrizes Exemplos de funções especiais para geração de matrizes Operadores matemáticos Variáveis e Comandos Permanentes Exercícios: Exercícios: Outras funções Polinômios no MATLAB Funções relacionadas a polinômios Exemplos com funções de polinômios Operadores relacionais Operadores lógicos Exemplos com operadores lógicos e relacionais Exemplos com operadores lógicos e relacionais Programaçãoem MATLAB Controladores de fluxo Controladores de fluxo Controladores de fluxo Controladores de fluxo Controladores de fluxo Controladores de fluxo Controladores de fluxo Controladores de fluxo Funções auxiliares no controle de fluxo Arquivos .m Arquivos .m Exemplo de função.m Exemplo de função.m Exemplo de função.m Gráficos no MATLAB Gráficos 2D Características dos Gráficos Gráficos no MATLAB Gráficos 3D Gráficos no MATLAB Gráficos no MATLAB Animação de gráficos Animação de gráficos Animação de gráficos Animação de gráficos Help MATLAB on-line
Compartilhar