MATLAB 6 R12 OTÍLIA GEROTTO O que é o Matlab? - MATLAB (Matrix Laboratory) – software p/ cálculo numérico e científico de visualização de alta performance. - Elementos Básicos: Matrizes que não requerem dimensionamento. - Mais rápido e eficiente que C, Basic, Pascal ou Fortran. - TOOLBOXES:Grande coleção de funções para: otimização, manip.algébrica, redes neurais, process. Sinais, simul.sist.dinâmicos, etc. Objetivos: Resolver problemas matemáticos rápida e eficientemente; Fácil de ser usado; Problemas e soluções são expressos quase que da mesma maneira que no papel; Facilidade de transcrição de fórmulas matemáticas para serem usadas em computadores; Utilizado em aplicações matemáticas, engenharia e análises científicas; Elementos Básicos do Matlab: Escalares (matriz 1X1) Vetores: Linha e Coluna Matrizes bi e multidimensionais Variáveis Reservadas: ans, pi, i, j, inf, version, flops, NaN, computer Expressões Lógicas Polinômios Gráficos 2D e 3D Programação e também o Help Tipos de Dados: INTEIRO : 5 COMPLEXO: ´i´ e ´j´ . Ex: -3i NOTAÇÃO CIENTÍFICA: -1.23e4 CHARACTER. Ex: ´ant´ Variáveis: Alfanuméricas com até 32 caracteres; 1º caractere deve ser uma letra; Aceita ‘-’ no meio da variável; São sensíveis a maiúsculo e minúsculo; Declaração de Variáveis: nome-do-tipo :: lista-de-identificadores Exemplos: >>vet_01=[0.1 -0.5 1] Vet_01 = 0.1000 -0.5000 1.000 >>Mat1=[1 2 3 4 5 6; 7 8 9 2 0 5] Mat1 = 123456 789205 Comando de Atribuição: Variável = expressão - Exemplos: x = sin(5) y=1/3 Z=9.63973 w=1.602e-20 r = .0001 soma=3+2i c = ‘ABC’ Expressões Aritméticas: OPERADOR OPERAÇÃO + Adição - Subtração * Multiplicação Matricial .* Multiplicação Escalar / Divisão Matricial ./ Divisão Escalar .\ Divisão ‘esquerda’ ^ Potência .^ Potência escalar ´ Transposta () Precedência Funções Básicas: Exp E Poly Polinômio característico Log Logarritmo natural Det Determinante Log10 Log.base 10 Abs Valor absoluto Find Indice não zero Sqrt Raiz quadrada Max Máximo valor Real Parte real nº complexo Min Mínimo valor Imag Parte imag.nºcomplexo Mean Média aritmética Conj Conjunto nº complexo Std Desvio padrão Round arredondar Expressões Lógicas: Operador Significado < Menor que <= Menor ou igual que == Igual ~= Não igual > Maior que >= Maior ou igual que Operadores lógicos: & Para conjunção | Para disjunção ~ Para a negação Polinômios Vetores de uma linha, com coeficientes ordenados em ordem descrescente. Ex: x³ - 6x² - 72x – 27 é representado da forma: > p=[1 –6 –72 27] p= 1 -6 -72 -27 Funções para Polinômios: Roots -> Polyval -> Conv -> Deconv -> Polyder -> outras... raízes do polinômio valor do polinômio no ponto multiplicação polinômios divisão de polinômios derivadas GRÁFICO 2D PLOT : função básica para desenhar gráficos em duas dimensões. Ex: f(x) = sen(x), 0<x<2*pi fica: >>x=[0:0.1:2*pi]; >>plot(x,sin(x)) Que resulta no seguinte gráfico: Ex. de Gráfico 2D: f(x) = sen(x) Gráficos 3D: Podem ser: Curvas ou Superfícies Curvas: plot3 – plota curvas em 3D contour – curvas de nível Superfícies: surf, surfc, sufl – superfícies em 3D mesh, meshc – linhas em perspectivas 3D Exemplo de um gráfico de curvas de uma hélice circular: t=0:pi/50:10*pi; plot3(sin(t),cos(t),t); Ex. Gráfico 3D de curvas: Um exemplo em 3 tempos: f(x,y) = sin(x/2).cos(y/3) -pi< x,y<pi 1). Se utilizarmos um gráfico 2D: x=[-pi:0.1:pi]; y=x; z=sin(x/2).*cos(y/3); plot(z) (x,y,z são vetores linha de 1x63) 2). Gráfico 3D com curvas x=[-pi:0.1:pi];y=x; [x,y]=meshgrid(x,y); z=sin(x/2).*cos(y/3); plot3(x,y,z) 3). Gráfico 3D com superfícies x=[-pi:0.1:pi];y=x; [x,y]=meshgrid(x,y); z=sin(x/2).*cos(y/3); mesh(z); (x,y,z são matrizes 63x63) 1).Utilizando-se plot (2D): 2).Utilizando-se meshgrid+plot3 3).Utilizando-se meshgrid+mesh Programação: Controladores de Fluxo Arquivos m : Scripts matrizes extensas Comandos frequentemente digitados Funções Função Funções Controladores de Fluxo: 1). FOR variável = expressão bloco de comandos ... END Ex: >For i=^1:10 v(i) = 3*i; end Cria um vetor V com 10 elementos: 1 6 9 12 15 18 21 24 27 30 Controladores de Fluxo.... 2). WHILE (expressão verdadeira) bloco de comandos ... END Ex do cálculo do fatorial de n até n!< 10¹00 >N=1; while prod(1:N)<1.e100 prod(1:N) N=N+1; end > N = 70 Controladores de Fluxo.... 3). IF condição verdadeira bloco de comandos ELSEIF condição2 verdadeira bloco de comandos ELSE bloco de comandos END Controladores de Fluxo.... BREAK – termina um laço INPUT - recebe dados do teclado. PAUSE - pausa na execução pgma até que qq.tecla seja pressionada. PAUSE(n) – dá uma pausa de n segundos. Arquivos m: Automatizam uma sequência comandos. Úteis p/entrar com matrizes extensas. Podem ser criados a partir de qq.editor de texto e são arquivos textos comuns. Três tipos de arquivos M: Scripts Funções Funções Função Scripts: Quando chamado, o Matlab executa todos os comandos do arquivo. Ex arq. Fibonacci.m: % Arquivo M que calcula prim.números de Fibonacci f= [1 1];I=1; while f(i) = f(i+1) < 1000 f(i+2) = f(i) + f(i+1); i = i+1; end plot(f) Para executar: somente fibonacci, fatorial, etc. Gráfico do script fibonacci Ex. de Script p/eq. 2o.Grau: Arquivo func2grau.m: % plota uma funcao y=ax^2 + bx +c no intervalo -5<x<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) figure(1) pause clc close aux=input('Plotar outro? (s/n) ==> ','s'); end Execução do script func2grau Para executar: func2grau a=3 b=4 c=5 já é criado a figura Plotar outro? (s/n) ==> n >> Figura gerada pela execução: Arquivos Função: Uma função difere de um script porque argumentos podem ser passados p/ela. Na prim.linha do arq. Deverá aparecer a palavra function que definirá o nome da função Ex. arq. Função: function y= escal(a,b) % escal Produto escalar de dois vetores if size(a) ~= size(b) error(´Erro: vetores tamanhos diferentes´) end y=sum(ª*b); p/ executar: a=3; b=98; escal(a,b); > Ans = 294 Arquivos Funções Funções: As Funções Funções recebem strings que são nomes de funções. Ex. de algumas funções funções: Fplot veja ex. Quad veja ex. Gráfico de uma função Fzero Raíz de uma função Integração Numérica Fmin Mínimo de uma função Ex. Função Fplot da função velocid function v=velocid(t) % velocid velocidade de uma partícula num instante t v=sin(t).*t.^2+8*t+1; Agora usando a função função fplot > fplot(‘velocid’,[0,12]) Script que utiliza funções: % Nome desse script tvelocid.m % Script para rodar a funçao velocid x=0:0.5:12; y=velocid(x); figure(1) plot(x,y) title('Figura 01 com plot') pause % Script para rodar a funçao velocid utilizando-se a funcao funcao fplot figure(2) fplot('velocid',[0,12]) title('Figura 02 com fplot') pause % Script da mesma funcao velocid, utilizando-se a funcao funcao quad (integracao numerica) xint=quad('velocid',0,12) Execução script tvelocid >> tvelocid (nesse ponto foi gerada as 2 figuras com pause entre elas) xint = 453.2950 Resultado execução tvelocid Bibliografia: 1. BALTHAZAR, J.Manoel, MATLAB Conceitos Básicos – UNESP – DEMAC, 2001 2. MATSUMOTO, Élia Yathie, Matlab6 Fundamentos Pgmação, 2001; 3. TODESCO, José Leomar, Curso Introdut. MATLAB – UFSC, 1995;