MATLAB Comandos Básicos Introdução • Desenvolvido inicialmente na década de 70 nas Universidades do Novo México e Stanford. • Destinado a princípio a cursos de teoria matricial, álgebra linear e análise numérica. • Voltado basicamente para matemática numérica. • Possui várias ferramentas para aplicação em diversas áreas do conhecimento. Prompt de Comando • Ao iniciarmos o MATLAB a tela abaixo aparece em conjunto com o símbolo >> indicando que o software está pronto para receber comandos: To get started, select "MATLAB Help" from the Help menu. >> Operações Básicas • • • • • Adição Subtração Multiplicação Divisão Potenciação + – * / ou \ ^ Cálculo de Expressões Numéricas • Ao digitarmos a expressão abaixo seguida da tecla <enter>: >> 12/2+3*(2^4) • Teremos a resposta: ans = 54 Variáveis • Podemos armazenar valores em variáveis no MATLAB. • Variáveis devem ter um nome único, começando com uma letra e podem conter dígitos ou o símbolo _ (underline). • O MATLAB distingüe letras maísculas de minúsculas. Exemplos de variáveis >> distancia = 100 distancia = 100 >> tempo = 3 tempo = 3 >> velocidade_media = distancia / tempo velocidade_media = 33.3333 Variáveis • Note que ao digitarmos o nome da variável, o símbolo = e o seu valor o matlab armazena a variável e a apresenta na tela. • Para suprimir a exibição da variável adicionamos um ponto-e-vírgula ao final do comando. • Quando criamos uma expressão e não a armazenamos em uma variável o matlab a salva automaticamente na variável ans. Variáveis • O comando who mostra todas as variáveis armazenadas durante uma sessão do MATLAB. >> who Your variables are: ans distancia tempo velocidade_media Variáveis • O comando clear “apaga” uma ou mais variáveis. >> clear tempo Apaga somente a variável tempo. >> clear velocidade_media distancia Apaga as variáveis velocidade_média e distancia. >> clear Apaga TODAS as variáveis da sessão. Salvando Sessões • Para salvar uma sessão do MATLAB, vá no menu File e escolha a opção Save Workspace As. Escolha uma pasta e um nome para o arquivo e clique em salvar. • Para abrir uma sessão salva anteriormente escolha novamente o menu File e vá na opção Open. Escolha a pasta onde se encontra o arquivo, selecione o arquivo e clique em Abrir. Recuperando Comandos • Para evitar redigitação, o Matlab armazena todos os comandos do usuário durante uma sessão. • Para acessar os comandos anteriores basta pressionar a tecla (seta para cima) seguidas vezes até encontrar o comando desejado. • O comando então pode ser editado e executado novamente, Variáveis Especiais • ans Nome de variável padrão usado para resultados. • pi 3.1416 • eps Menor número que somado a 1, cria um número maior do que 1. • inf Infinito. • NaN Não número. • iej 1 • realmin menor número real positivo • realmax maior número real positivo Algumas Funções Matemáticas Elementares • • • • • • • • • • • abs(x) acos(x) asin(x) atan(x) cos(x) exp(x) log(x) log10(x) sin(x) sqrt(x) tan(x) Valor absoluto Arco cosseno Arco seno Arco tangente Cosseno Exponencial (ex) Logaritmo natural (base e) Logaritmo na base 10 Seno Raiz quadrada Tangente Expressões com Funções >> sin(pi/2) ans = 1 >> cos(pi/4)^2 ans = 0.5000 >> asin(1)*180/pi ans = 90 Vetores • O Matlab pode trabalhar com vetores de elementos, realizando operações sobre eles. • Definindo um vetor: >> A = [0 1 2 3 4 5] A = 0 1 2 3 4 5 >> X = [0 0.2*pi 0.4*pi 0.6*pi 0.8*pi pi] X = 0 0.6283 1.2566 1.8850 2.5133 3.1416 Vetores • Outra forma de se criar um conjunto: >> A = 1:1:5 A = 1 2 3 >> X = 0:pi/5:pi X = 0 0.6283 1.2566 4 1.8850 5 2.5133 3.1416 • O primeiro valor é o valor inicial, o segundo o “salto”e o terceiro o valor final. Vetores • Função linspace - Gera um vetor linearmente espaçado a partir de um valor inicial, um valor final e um número de elementos. >> X = linspace(0,pi,6) X = 0 0.6283 1.2566 1.8850 2.5133 3.1416 Vetores • Função logspace - Gera um vetor logaritmicamente espaçado a partir de uma potência inicial, uma potência final e um número de valores. >> V = logspace(0,2,5) V = 1.0000 3.1623 10.0000 31.6228 100.0000 Operações com Vetores >> B = 2 * A B = 2 4 6 8 10 >> Y = sin(X) Y = 0 0.5878 0.9511 0.9511 0.5878 0.0000 >> Z = A.^2 Z = 1 4 9 16 25 Operações com Vetores • O operadores *, / e ^ devem ser precedidos por um ponto para serem utilizados em vetores quando queremos realizar uma operação sobre cada um de seus elementos. • A^2 significa potência de matrizes. • A.^2 significa elevar cada elemento do vetor A ao quadrado. Operações com Vetores • Elevando cada elemento do vetor A ao quadrado: >> Z = A.^2 Z = 1 4 9 16 25 • Elevando o vetor A ao quadrado: >> Z = A^2 ??? Error using ==> ^ Matrix must be square. • Teremos um erro pois o vetor A é uma matriz 1x5 e não uma matriz quadrada. Acesso a Elementos de Vetores • Acesso a um elemento do vetor: >> Z(1) ans = 1 >> Z(2) ans = 4 >> Z(6) ??? Index exceeds matrix dimensions. • Temos um erro quando acessamos uma posição inexistente do vetor. Acesso a Elementos do Vetor • Podemos acessar mais de um elemento: >> Z(1:3) ans = 1 4 9 >> Z(3:5) ans = 9 16 25 >> Z(2:4) ans = 4 9 16 Matrizes • Podemos criar uma matriz da seguinte forma: >> M = [1 0 -1; 2 3 4; -7 1 3] M = 1 0 -1 2 3 4 -7 1 3 • Criamos uma matriz 3x3. Note que os elementos da linha são separados por espaço em branco e as linhas são separadas por ponto-e-vírgula. Matrizes • Podemos criar matrizes a partir de vetores ou outras matrizes >> b = [2 -3 1]; >> Mx = [b' M(:,2:3)] Mx = 2 0 -1 -3 3 4 1 1 3 • M(:, 2:3) significa a parte da matriz M compreendida por todas as linhas (:) e as colunas 2 e 3 (2:3). • A matriz Mx foi gerada concatenando-se o vetor b transposto e as colunas 2 e 3 da matriz M. Operações com Matrizes • Transposição - Utilizamos o operador ' (aspas simples) >> M' ans = 1 2 -7 0 3 1 -1 4 3 Operações com Matrizes • Determinante >> det(M) ans = -18 • Matriz inversa >> inv(M) ans = -0.2778 1.8889 -1.2778 0.0556 0.2222 0.0556 -0.1667 0.3333 -0.1667 Operações com Matrizes • Todas as operações vistas para os vetores funcionam para as matrizes. • Devemos tomar o cuidado em operações que exigem concordância das dimensões das matrizes. >> A = [1 2 3]; >> B = [4 5 6]; >> A*B ??? Error using ==> * Inner matrix dimensions must agree. >> A*B' ans = 32 Gráficos em Duas Dimensões • Podemos gerar gráficos a partir de matrizes: >> X = linspace(0,2*pi,100); >> Y = sin(X); >> plot(X,Y) Gráficos em Duas Dimensões • Duas linhas no mesmo gráfico (seno e cosseno): >> Z = cos(X); >> plot(X,Y,X,Z) Gráficos em Duas Dimensões • Título para o gráfico: >> title('seno(x) e cosseno(x)') • Nome para o eixo x: >> xlabel('grau (em radianos)') • Nome para o eixo y: >> ylabel('variaveis dependentes') Gráficos em Duas Dimensões • Resultado: Gráficos em Duas Dimensões • Linhas de grade >> grid Gráficos em Três Dimensões • Gráficos de Linhas - Função plot3 >> X = linspace(0, 10*pi, 300); >> Y = sin(X); >> Z = cos(X); >> plot3(X,Y,Z) >> grid Gráficos em Três Dimensões Gráficos em Três Dimensões • Gráficos de Superfícies - funcão mesh >> v = linspace(-10,10,20); >> [X, Y] = meshgrid(v,v); >> Z = X.^2 + Y.^2; >> mesh(X,Y,Z) • Utilizamos a função meshgrid para gerar X e Y como matrizes com valores repetidos que são utilizadas para gerar a matriz Z. Gráficos em Três Dimensões Gráficos em Três Dimensões • Função mesh - superfícies em rede • Função surf - superfícies coloridas(opacas) • Função surfl - superfícies coloridas com uma fonte de luz. • Exemplo 1: >> surf(X,Y,Z) • Exemplo 2: >> colormap(gray) >> surfl(X,Y,Z) Exemplo 1 Exemplo 2 Rotação em Gráficos 3D • Para rotacionar um gráfico 3D primeiro clique no botão presente na janela do gráfico. • Após isto, clique sobre o gráfico e mantenha o botão do mouse pressionado. • Uma caixa irá aparecer indicando a direção do gráfico. • Agora, basta movimentar o mouse para ajustar a posição desejada do gráfico. Superfícies de Contorno • Função contour - Gera superfícies de contorno. >> contour(X,Y,Z,30) • Os três primeiros parâmetros são as matrizes com os dados para os gráficos. O quarto parâmetro é o número de contornos. Superfícies de Contorno Superfícies de Contorno • Função pcolor - Gráfico de pseudocores >> pcolor(X,Y,Z) Matemática Simbólica • O Matlab não foi desenvolvido originalmente para trabalhar com matemática simbólica. • Outros softwares concorrentes são voltados para matemática simbólica como Mathematica e Maple. • Entretanto o Matlab possui uma “toolbox” que nos permite trabalhar com expressões simbólicas. Variáveis Simbólicas • Precisamos informar ao Matlab as nossas variáveis simbólicas: >> syms x y >> z = x^2 + y^2 z = x^2+y^2 • Acima definimos x e y como variáveis simbólicas com o comando syms e definimos z como uma expressão simbólica em função de x e y. Limite • Limite em um ponto >> y = sin(x)/x y = sin(x)/x >> limit(y,x,0) ans = 1 • A função limit tem como parâmetros: 1) a função, 2) a variável livre, 3) o ponto onde deve ser calculado o limite. Limite • Limite à esquerda (left) e à direita (right) do ponto: >> y = tan(x) y = tan(x) >> limit(y,x,pi/2,'left') ans = inf >> limit(y,x,pi/2,'right') ans = -inf Derivada • Função diff - Usada para diferenciar funções de uma ou mais variáveis. >> y = x^3+2*x^2 y = x^3+2*x^2 >> diff(y,x) ans = 3*x^2+4*x • No exemplo acima diff(y,x) deriva a função y em relação a variável x. Derivada • Funções de duas variáveis (derivadas parciais) >> syms x y >> z = x^2 + y^2 z = x^2+y^2 >> diff(z,x) ans = 2*x >> diff(z,y) ans = 2*y Derivada • Derivadas de ordens superiores >> syms y x >> y = (x^2 -1)/(x-3) y = (x^2-1)/(x-3) >> diff(y,x,2) ans = 2/(x-3)-4*x/(x-3)^2+2*(x^2-1)/(x-3)^3 • O terceiro parâmetro para a função diff é o número de vezes que queremos diferenciar y em relação a x. Integral • Para integrar uma função utilizamos a função int: >> y = x^2 y = x^2 >> int(y,x) ans = 1/3*x^3 Integral • Integral definida >> int(sin(x),x,0,2*pi) ans = 0 >> int(sin(x),x,0,pi) ans = 2 • O terceiro e quarto parâmetros da função int são os limites inferior e superior de integração. Simplificar Expressões • Comando simple: >> y = (x^3-1)/(x+4) y = (x^3-1)/(x+4) >> diff(y,x) ans = 3*x^2/(x+4)-(x^3-1)/(x+4)^2 >> simple(y) ans = (2*x^3+12*x^2+1)/(x+4)^2 Exibir Expressões • Comando pretty - Exibe uma expressão em um formato mais amigável. ans = (2*x^3+12*x^2+1)/(x+4)^2 >> pretty(ans) 3 2 2 x + 12 x + 1 ---------------2 (x + 4) Gráficos com Funções Simbólicas • Para gerar gráficos com funções baseadas em variáveis simbólicas utilizamos a função ezplot: >> syms x >> y=log(x) y = log(x) >> ezplot(y,0.001,10) • A função ezplot “acha” automaticamente a variável livre dentro da expressão da função. • Precisamos informar apenas a função a ser plotada e o intervalo de plotagem no caso acima [0.001, 10]. Gráficos com Funções Simbólicas Substituição de Variáveis • Usamos o comando subs para substituir variáveis por valores ou outras variáveis em expressões simbólicas: >> syms a x >> y = a*x^2 y = a*x^2 >> subs (y,a,2) ans = 2*x^2 Resolução de Equações • Função solve - Resolve uma equação algébrica: >> syms x; y = -3*x^2+2*x+3; >> solve(y) ans = [ 1/3+1/3*10^(1/2)] [ 1/3-1/3*10^(1/2)] >> numeric(ans) ans = 1.3874 -0.7208 • A função solve resolveu a equação y=0. A função numeric encontrou valores numéricos para a solução da equação. Exercícios Plotar os gráficos das funções (escolha um intervalo válido e representativo): • f(x) = x2 + 2x - 3 • f(x) = ln(x) • f(x) = ex • f(x) = tan(x) • f(x,y) = x3 + y2 Exercícios • Resolva os sistemas de equações lineares 3x 2 y z 4 a) x 3z 2 yz 7 x y 2t 2 y 4z 0 b) x 3 t 1 y t 4 Exercícios • Resolva o problema: Fulano está no alto de um edifício. Ele pega uma maçã, debruça-se sobre a beirada do terraço e atira-a no ar diretamente para cima a uma velocidade inicial v0=20m/s. O terraço encontrase a 30 metros acima do nível do solo. Onde estará a maçã a um intervalo arbitrário de t segundos mais tarde? Quando ela alcançará a altura máxima? Qual será esta altura? Quando a maçã atingirá o solo? Com qual velocidade? Considere desprezível a resistência do ar e a aceleração da gravidade igual a 10 m/s2