Você está na página 1de 27

Introduo ao Matlab 5

Esta apostila foi criada com o propsito de mostrar a simplicidade que a interface do Matlab, e mostrar as ferramentas bsicas para o curso de lgebra Linear do Inatel. No use essa apostila como nica fonte de consultas, procure livros e manuais. Essa apostila pode ser utilizada por qualquer pessoa, com fins comerciais ou no, peo apenas que mantenha este texto como est. Qualquer dvida entre em contato via e-mail: Tarcsio Nunes Filgueiras Jr major@uti.psi.br tarcisio@inatel.br Nick: ] ] M a J o R [ [ ICQ: 9755684 http://members.xoom.com/major_srs Santa Rita do Sapuca MG - Brasil

Tarcsio Nunes Filgueiras Jr tarcisio@inatel.br

Laboratrio de Simulao - DFM - Introduo ao MATLAB

1. INTRODUO Talvez a maneira mais fcil de visualizar o MATLAB seja pensar nele como uma calculadora cientfica completa. Assim como em uma calculadora bsica, ele faz operaes matemticas elementares como adio, subtrao, multiplicao e diviso. Tal como uma calculadora cientfica, ele opera com nmeros complexos, razes quadradas e potenciaes, logaritmos e operaes trigonomtricas tais como seno, coseno e tangente. Da mesma que em uma calculadora programvel, possvel armazenar e recuperar dados; criar, executar e armazenar seqncias de comandos para automatizar o clculo de equaes importantes; e fazer comparaes lgicas e controlar a ordem na qual os comandos so executados. Assim como nas calculadoras mais poderosas disponveis, ele lhe permite plotar os dados de diversas maneiras, executar lgebra matricial, manipular polinmios, integrar funes, manipular equaes simbolicamente etc.

MATLAB (MATrix LABoratory) Computao Visualizao Programao Mais de 500 funes: Matemticas Estatsticas Tcnicas lgebra linear e operaes com matrizes Anlise de Fourier e estatstica Solues de equaes diferenciais SIMULINK Coleo de blocos para simulao interativa de sistemas dinmicos Gerao de cdigos para hardware em tempo real TOOLBOX Coleo de funes MATLAB ( m-files ) para aplicaes especiais

Tarcsio Nunes Filgueiras Jr tarcisio@inatel.br

Laboratrio de Simulao - DFM Ambiente MATLAB

2. AMBIENTE MATLAB A execuo do MATLAB cria uma ou mais janelas em seu monitor. Dentre elas, a janela de comando seu local principal de interao com o MATLAB. A aparncia dessa janela apresentada a seguir. A cadeia de caracteres >> o prompt do MATLAB para a verso profissional. Quando a janela de comandos estiver ativa, um cursor dever aparecer direita do prompt. Esse cursor, juntamente com o prompt do MATLAB, significa que o MATLAB est esperando para responder a uma questo matemtica.

2.1 Matemtica Elementar Da mesma forma que sua calculadora, o MATLAB capaz de executar matemtica elementar. Por exemplo: 50 + 1 ans = 51 70 - 1 ans = 69 2 * 128 ans = 256 1024 / 2 ans = 512 4*25 + 6*22 + 2*99 ans = 430
Tarcsio Nunes Filgueiras Jr tarcisio@inatel.br

Laboratrio de Simulao - DFM Ambiente MATLAB

Observe que o MATLAB geralmente no se importa com espaos e que a multiplicao tem precedncia sobre a adio. Observe tambm que o MATLAB chama o resultado de ans nos clculos acima e clculos que no tenham variveis declaradas. resistores=4 resistores = 4 transistores=6 transistores = 6 capacitores=2; circuito = resistores + transistores + capacitores circuito = 12 Nessa demonstrao, criamos trs variveis MATLAB resistores, transistores e capacitores para armazenar a quantidade de cada tipo de componente. Depois de entrar com cada instruo, o MATLAB apresentou os resultados, exceto no caso dos capacitores. O ponto-evrgula depois do fim da linha capacitores=2; diz ao MATLAB para processar a linha mas no apresentar a resposta. Finalmente, em vez de chamar a resposta de ans, ns instrumos o MATLAB que chamasse o total de componentes de circuito. circuito = resistores + transistores + capacitores circuito = 12 Alm de adio e multiplicao, o MATLAB dispe das seguintes operaes aritmticas elementares:
Operao Adio, a+b Subtrao, a-b Multiplicao, axb Diviso, ab Potenciao, ab Smbolo + * / ou \ ^ Exemplo 5+3 23 12 3,14 * 0,85 56 / 8 = 8 \ 56 5^2

Tarcsio Nunes Filgueiras Jr tarcisio@inatel.br

Laboratrio de Simulao - DFM Ambiente MATLAB

2.2 O Espao de Trabalho do MATLAB Quando est trabalhando na janela de comandos, o MATLAB lembra-se dos comandos que voc introduz, assim como dos valores de quaisquer variveis criadas. Dizemos ento que esses comandos residem no espao de trabalho do MATLAB e podem ser chamados a qualquer momento que desejar. Por exemplo, para verificar o valor da varivel transistores, basta que voc o pea introduzindo seu nome aps o prompt: transistores transistores = 6 Se no conseguir se lembrar do nome de uma varivel, pode pedir para o MATLAB apresentar uma lista das variveis que ele conhece, utilizando o comando who: who Your variables are: ans circuito transistores capacitores resistores Para chamar comandos previamente utilizados, o MATLAB utiliza as teclas de cursor (,,,) do seu teclado. Por exemplo, ao pressionar a tecla uma vez, chamamos o comando mais recente do prompt do MATLAB. Pressionando-se a tecla repetidamente chamamos os comandos anteriores, um de cada vez. 2.3 Armazenamento e Recuperao de Dados Alm de lembrar variveis, o MATLAB pode armazenar e recuperar dados de arquivos de seu computador. O item de menu Save Workspace as... do Menu File abre uma caixa de dilogo de arquivo padro para armazenar todas as variveis atuais. De forma semelhante, o item de menu Load Workspace... do menu File abre uma caixa de dilogo para recuperar dados de uma rea de trabalho previamente armazenada. O armazenamento de variveis no as exclui do espao de trabalho do MATLAB. A recuperao de variveis de mesmo nome que

Tarcsio Nunes Filgueiras Jr tarcisio@inatel.br

Laboratrio de Simulao - DFM Ambiente MATLAB

aquelas que j se encontram no espao de trabalho muda seus valores para aqueles contidos no arquivo. 2.4 Formatos de Visualizao de Dados Quando o MATLAB apresenta resultados numricos, segue diversas regras. Por definio, se o resultado for um nmero inteiro, o MATLAB apresenta-o como inteiro. Da mesma forma, quando o resultado for um nmero real, o MATLAB apresenta-o com aproximadamente quatro dgitos a direita do ponto decimal. Se os dgitos significativos do resultado estiverem fora desse limite, o MATLAB apresenta o resultado em notao cientfica, de maneira semelhante s calculadoras cientficas. Voc pode anular esse comportamento padro especificando um formato numrico diferente por meio do item de menu Numerical Format, no menu Preferences, ou introduzindo o comando MATLAB apropriado no prompt. Vamos criar uma varivel A por exemplo e alterar os formatos, visualizando o que ocorre. A=10/3 A= 3.3333 Comando MATLAB
format long format short e format long e format hex format bank format + format rat format short

A
3.33333333333333 3.3333e+000 3.333333333333334e+000 400aaaaaaaaaaaab 3.33 + 10/3 3.3333

Observaes
16 dgitos 5 dgitos mais expoente 16 dgitos mais expoente Hexadecimal 2 dgitos decimais Positivo, negativo ou zero Aproximao racional Apresentao padro

importante observar que o MATLAB no altera a representao interna de um nmero quando optamos por diferentes formatos de apresentao; s a visualizao do nmero alterada.

Tarcsio Nunes Filgueiras Jr tarcisio@inatel.br

Laboratrio de Simulao - DFM Ambiente MATLAB

2.5 Variveis Assim como qualquer outra linguagem de programao, o MATLAB tem regras a respeito dos nomes de variveis. Os nomes de variveis devem ser palavras nicas, sem a incluso de espaos. Mais especificamente, as regras para nomes de variveis so:

Regra

Observaes

As variveis so sensveis a frutas, Frutas, FrUtAs e FRUTAS maisculas e minsculas. so todas variveis MATLAB diferentes. As variveis podem conter at 19 Os caracteres alm do dcimo caracteres. nono so ignorados. Os nomes de variveis devem Caracteres de pontuao no so por terem um comear com uma letra, seguida permitidos de um nmero qualquer de letras, significado especial para o algarismos ou sublinhas. MATLAB Alm dessas regras de nomes de variveis, o MATLAB tem diversas variveis especiais. Elas so: Varivel ans pi eps Valor Nome da varivel padro usada para resultados. Razo entre o permetro da circunferncia e seu dimetro. Menor nmero que, somado a 1, cria um nmero de ponto flutuante maior do que 1 no computador. inf Infinito, por exemplo, 1/0. NaN No-nmero, por exemplo, 0/0. iej i = j = -1 realmin Menor nmero real positivo utilizvel. realmax Maior nmero real positivo utilizvel

Tarcsio Nunes Filgueiras Jr tarcisio@inatel.br

Laboratrio de Simulao - DFM - MATLAB Caractersticas Cientficas

3. CARACTERSTICAS CIENTFICAS Assim como a maioria das calculadoras cientficas, o MATLAB oferece diversas funes que so importantes em matemtica, engenharia e nas cincias em geral. Alm disso, o MATLAB opera facilmente com nmeros complexos. 3.1 FUNES MATEMTICAS ELEMENTARES Os exemplos a seguir apresentam uma lista parcial de funes bsicas suportadas por MATLAB. A maior parte dessas funes usada da mesma forma que voc as escreveria matematicamente: x = sqrt(2)/2 x= 0.7071 y = asin(x) y= 0.7854 y_deg=y*180/pi y_deg = 45.0000 Esses comandos calculam o ngulo para o qual a funo seno tem o valor de 2/2 . Enquanto sua calculadora pode trabalhar tanto com graus quanto radianos, o MATLAB trabalha apenas com radianos onde 2 radianos igual 360 graus. Outros exemplos: y = sqrt(3^2 + 4^2) %Mostre que 3-4-5 so lados de um tringulo retngulo y= 5 y = rem(23,4) y= 3 x = 2.6, y1=fix(x), y2=floor(x), y3=ceil(x), y4=round(x) x= 2.6000 y1 = 2
Tarcsio Nunes Filgueiras Jr tarcisio@inatel.br

Laboratrio de Simulao - DFM - MATLAB Caractersticas Cientficas

y2 = 2 y3 = 3 y4 = 3 Funes Matemticas Elementares sqrt Raiz quadrada rem Resto da diviso de x por y fix Arredondar para zero floor Arredondar para menos infinito ceil Arredondar para mais infinito round Arredondar para o prximo nmero inteiro 3.2 NMEROS COMPLEXOS Varivel i ou j indica -1 i ans = 0 + 1.0000i j ans = 0 + 1.0000i Z1 = 1.2 +2.8i Z1 = 1.2000 + 2.8000i Z2 = 1.23 + 5.6i Z2 = 1.2300 + 5.6000i p = Z1 + 3.3 p= 4.5000 + 2.8000i

Tarcsio Nunes Filgueiras Jr tarcisio@inatel.br

Laboratrio de Simulao - DFM - MATLAB Caractersticas Cientficas

Transformao em formato polar >> abs (2 + j*3) , angle (2 + j*3) ans = 3.6056 ans = 0.9828 { magnitude } { fase em rad }

>> angle (-2) ans = 3.1416

Entrada com formato polar >> z = 7.5 * exp ( j*2.4 ) z = -5.5305 + 5.0660i

>> real ( z ) , imag ( z ) ans = -5.5305 ans = 5.0660 { parte real } { parte imaginria }

Valor conjugado complexo >> conj ( z ) ans = -5.5305 - 5.0660i

Tarcsio Nunes Filgueiras Jr tarcisio@inatel.br

Laboratrio de Simulao - DFM - MATLAB Vetores e Matrizes

5. VETORES E MATRIZES 5.1 GERAL Exemplo de uma matriz: A = 2.1 3.0 5.4 -1.0 0 4.6 5.7 -3.0 2.9 -7.1 0.45 10.2

Entrando com os elementos de uma matriz: >> A = [2.1 , 3 , 5.4 , -7.1 ; -1 , 0 , 4.6 , 0.45 ; 5.7 , -3 , 2.9 , 10.2] A= 2.1000 3.0000 5.4000 -7.1000 -1.0000 0 4.6000 0.4500 5.7000 -3.0000 2.9000 10.2000

Chamando um elemento da matriz A: >> A (2,3) coluna linha ans = 4.6000

O elemento pode ser uma expresso: >> X = [-1.3 , sqrt(3) , (1+2+3)*4/5] X= -1.3000 1.7321 4.8000

Tarcsio Nunes Filgueiras Jr tarcisio@inatel.br

Laboratrio de Simulao - DFM - MATLAB Vetores e Matrizes

Adicionando elementos ao vetor X: >> X ( 4 ) = 2.4 X= -1.3000 1.7321 4.8000 2.4000

>> X( 7 ) =5 X= -1.3000 1.7321 4.8000 2.4000 0 0 5.0000

Gerando um novo vetor a partir de um vetor j existente: >> X=[-1.3 , sqrt(3) , (1+2+3)*4/5 , 2.4 ] X= -1.3000 1.7321 4.8000 2.4000

>> Y = [ 1 , X ] Y= 1.0000 -1.3000 1.7321 4.8000 2.4000

Gerando um vetor vertical: >> y = [1 ; 3.4 ; 5.6 ] y= 1.0000 3.4000 5.6000


Tarcsio Nunes Filgueiras Jr tarcisio@inatel.br

Laboratrio de Simulao - DFM - MATLAB Vetores e Matrizes

>> y(2) ans = 3.4000

>> y(2,1) ans = 3.4000

Composio de um vetor: >> x1=[1,2,3,4] , x2=[5,6,7,8] x1 = 1 2 3 4

x2 = 5 6 7 8

>> x3=[x1,x2] x3 = 1 2 3 4 5 6 7 8

Composio de uma matriz: >> M=[x1;x2] M=


Tarcsio Nunes Filgueiras Jr tarcisio@inatel.br

Laboratrio de Simulao - DFM - MATLAB Vetores e Matrizes

1 5

2 6

3 7

4 8

>> A=[ M , [ 2.3 ; -5 ] ] A= 1.0000 5.0000 2.0000 3.0000 4.0000 2.3000 6.0000 7.0000 8.0000 -5.0000

Tamanho de um vetor: >> length(x1) ans = 4

Tamanho de uma matriz size(M) ans = 2 4

>> [m , n]=size(M) m=2 n= 4 5.2 MANIPULAO DE MATRIZES

>> x = 1 : 6 x=

{ gera o vetor x }

Tarcsio Nunes Filgueiras Jr tarcisio@inatel.br

Laboratrio de Simulao - DFM - MATLAB Vetores e Matrizes

>> y = 5 : -1 : -2 y= 5 4 3 2 1

{ gera o vetor y }

-1

-2

>> z = 6 : -1.5 : -2 { gera o vetor z } z= 6.0000 4.5000 3.0000 1.5000 0 -1.5000

Operador de transposio ( ): >> A = [ 1 2 3 ; 4 5 6 ; 7 8 9 ] A= 1 4 7 2 5 8 3 6 9

>> B = A' B= 1 2 3 4 5 6 7 8 9

>> t = (0 : 0.25 : 1) ' t= 0


Tarcsio Nunes Filgueiras Jr tarcisio@inatel.br

Laboratrio de Simulao - DFM - MATLAB Vetores e Matrizes

0.2500 0.5000 0.7500 1.0000

>> u = 2.5*sin( 2*pi*t/0.25) u= 0 -6.1230e-016 -1.2246e-015 -1.8369e-015 -2.4492e-015

Concatenando duas matrizes: >> Y = [ t , u ] Y= 0 0 2.5000e-001 -6.1230e-016 5.0000e-001 -1.2246e-015 7.5000e-001 -1.8369e-015 1.0000e+000 -2.4492e-015

Trabalhando com submatrizes: >> Y(2:4,1) ans = 2.5000e-001 5.0000e-001 7.5000e-001 { elementos da coluna 1, linhas 2 a 4 }

>> Y(:,2)

{ todos os elementos da coluna 2 }

Tarcsio Nunes Filgueiras Jr tarcisio@inatel.br

Laboratrio de Simulao - DFM - MATLAB Vetores e Matrizes

ans = 0 -6.1230e-016 -1.2246e-015 -1.8369e-015 -2.4492e-015

Tarcsio Nunes Filgueiras Jr tarcisio@inatel.br

Laboratrio de Simulao - DFM - MATLAB Operaes com matrizes

6. OPERAES COM MATRIZES >> x=[1:4], y=x-1 x= 1 2 3 4

y= 0 1 2 3

Adio >> z = x + y z= 1 3 5 7

Subtrao >> k = x - y k= 1 1 1 1

Multiplicao: p Sejam: n m matriz A n * p matriz B = m matriz Y

onde
y i j = a i k * bk j
k =1 n

, i = 1, L , m e j = 1, L , p

Tarcsio Nunes Filgueiras Jr tarcisio@inatel.br

Laboratrio de Simulao - DFM - MATLAB Operaes com matrizes

>> A=[1 2 3 ; 4 5 6] A= 1 4 2 5 3 6

B=[1 0 0; 0 1 0; 0 0 1] B= 1 0 0 0 1 0 0 0 1

Y=A*B Y= 1 4 2 5 3 6

Inverso de Matriz >> A = [1 2; 3 4] A= 1 3 2 4

inv (A) ans = -2.0000 1.0000 1.5000 -0.5000

Tarcsio Nunes Filgueiras Jr tarcisio@inatel.br

Laboratrio de Simulao - DFM - MATLAB Operaes com matrizes

Aplicao para soluo de um sistema de equaes: Historicamente, o Matlab foi escrito para simplificar os clculos de lgebra linear que aparecem em muitas aplicaes. Em diversas aplicaes, o corao do problema constitui solucionar um conjunto de equaes lineares. Para ilustrar isso, consideremos o seguinte exemplo:
Joozinho comprou um resistor, dois transistores e trs capacitores e pagou R$3,66. Mariazinha comprou quatro resistores, cinco transistores e seis capacitores e pagou R$8,04. Bernardinho no precisava de capacitores, portanto ele comprou sete resistores, oito transistores e nenhum capacitor, e pagou R$3,51. Qual era o preo individual de cada componente?

Para resolver esse problema, escreva cada afirmao como uma equao matemtica. Se chamarmos o preo do resistor de x1, do transistor de x2 e do capacitor de x3, ento 1x1 + 2x2 + 3x3 = 366 4x1 + 5x2 + 6x3 = 804 7x1 + 8x2 + 0x3 = 804 Descrevem as relaes dadas no enunciado do problema, nas quais os totais so dados em centavos por convenincia. Essas equaes podem ser organizadas em uma equao matricial da seguinte forma: 1x1 + 2x2 + 3x3 = 366 4x1 + 5x2 + 6x3 = 804 7x1 + 8x2 + 0x3 = 804 1x1 + 2x2 + 3x3 4x1 + 5x2 + 6x3 7x1 + 8x2 + 0x3 1 4 7 2 5 8 3 6 0 x 366 804 804 366 804 804

x1 x2 x3

Ax = b Onde a multiplicao agora definida na sua forma matricial, e no MATLAB essa multiplicao simbolizada pela notao de asterisco *. As equaes acima definem o produto matricial entre a matriz A e o vetor x como sendo igual ao vetor b. Na lgebra linear ou matricial, h regras rigorosas que governam as operaes matemticas entre matrizes e no a finalidade desse tutorial expliclas, mas isso ser dado em sala de aula no curso de lgebra linear.
Tarcsio Nunes Filgueiras Jr tarcisio@inatel.br

Laboratrio de Simulao - DFM - MATLAB Operaes com matrizes

Para resolver o problema necessrio introduzir A e b: A=[1 2 3; 4 5 6 7 8 0] A= 1 4 7 2 5 8 3 6 0

b=[366;804;351] b= 366 804 351 Como discutido anteriormente, a introduo da matriz A mostra duas maneiras de o MATLAB distinguir entre linhas. O ponto-e-vrgula entre 3 e o 4 significa comeo de uma nova linha, assim como o incio de linha entre o 6 e o 7. O vetor b uma coluna porque cada ponto-e-vrgula significa o comeo de uma nova linha. Sem entrar em maiores detalhes, sabemos que esse problema tem uma soluo nica sempre que o determinante da matriz A for diferente de zero: det(A) ans = 27 Como isso verdade, o MATLAB pode achar a soluo para Ax = b de duas maneiras, uma das quais preferida. O mtodo menos favorvel, mas mais direto, resolver x = A-1b: x=inv(A)*b x= 25.0000 22.0000
Tarcsio Nunes Filgueiras Jr tarcisio@inatel.br

Laboratrio de Simulao - DFM - MATLAB Operaes com matrizes

99.0000 Aqui inv(A) a funo MATLAB que calcula A-1 e o operador de multiplicao matricial *, sem o ponto precedente, a multiplicao de matrizes. A soluo prefervel encontrada usando-se o operador de diviso matricial esquerda: x=A\b x= 25.0000 22.0000 99.0000

Tarcsio Nunes Filgueiras Jr tarcisio@inatel.br

Laboratrio de Simulao - DFM - MATLAB Grficos Simples

7. GRFICOS SIMPLES Grficos constituem um recurso visual poderoso para interpretao de dados. Consideremos o processo que voc seguiria para plotar uma funo seno ao longo de um perodo, de forma manual, ou seja, y = sen(x) para 0 x 2. Inicialmente escolhem-se os pontos para a varivel independente x. Esses dados formam o eixo horizontal do grfico. Depois disso, o seno de cada ponto escolhido calculado, fornecendo assim os dados do eixo vertical. Cada par de dados [xn, yn] ento marcado em um conjunto adequado de eixos. Finalmente, como orientao visual, comum desenhar uma linha reta entre cada par de pontos plotados. Usando-se conjuntos, o MATLAB segue esse mesmo procedimento para a plotagem. Consideremos ento a tarefa de plotar a funo senoidal descrita acima: x = linspace(0,2*pi,30); cria 30 pontos entre 0 e 2. y = sin(x); calcula o seno dos pontos em x. plot(x,y) gera o grfico apresentado abaixo.

Tarcsio Nunes Filgueiras Jr tarcisio@inatel.br

Laboratrio de Simulao - DFM - MATLAB Grficos Simples

A funo plot do MATLAB extremamente poderosa. Ela automaticamente escolhe os limites dos eixos, marca os pontos individuais e desenha linhas retas entre eles. As opes no comando plot permitem-lhe plotar conjuntos mltiplos de dados nos mesmos eixos, usar tipos diferentes de linhas, usar tipos diferentes de linhas, tais como pontilhada ou tracejada, marcar somente os pontos de dados sem interlig-los, usar cores distintas para diferentes curvas. Alm disso, possvel colocar nomes nos eixos, um ttulo na parte superior, desenhar uma grade nas marcas mais grossas, e da por diante. Para ilustrar alguns desses recursos, consideremos os seguintes exemplos: z = cos(x); plot(x,y,x,z) obtm-se um grfico do seno e coseno nos mesmos eixos.
1 0.8 0.6 0.4 0.2 0 -0.2 -0.4 -0.6 -0.8 -1 0 1 2 3 4 5 6 7

plot(x,y,x,y,'+') obtm-se o grfico do seno duas vezes: a primeira com linhas interconectando os pontos de dados e a Segunda marcando os pontos com o smbolo +.

Tarcsio Nunes Filgueiras Jr tarcisio@inatel.br

Laboratrio de Simulao - DFM - MATLAB Grficos Simples

plot(y,z) um grfico de seno versus cosseno.

Tarcsio Nunes Filgueiras Jr tarcisio@inatel.br

Laboratrio de Simulao - DFM - MATLAB Grficos Simples

plot(x,y,x,2*y.*z,'--') obtm-se uma ilustrao da identidade 2sen cos = sen2 . O grfico de 2sen cos plotado usando-se linha tracejada.

grid coloca uma grade nas marcas grossas do grfico atual. xlabel('Varivel independente X') coloca um nome no eixo dos x do grfico atual. ylabel('Variveis independentes') coloca um nome no eixo dos y do grfico atual. title('2sen(x)cos(x) = sen(2x)') coloca um ttulo no grfico atual, mostrado abaixo.

Tarcsio Nunes Filgueiras Jr tarcisio@inatel.br

Laboratrio de Simulao - DFM - MATLAB Grficos Simples

plot3(y,z,x), grid cria um grfico tridimensional com grade.

Tarcsio Nunes Filgueiras Jr tarcisio@inatel.br