Você está na página 1de 26

INTRODUCAO AO MATLAB

Reginaldo J. Santos Departamento de Matemtica-ICEx a Universidade Federal de Minas Gerais http://www.mat.ufmg.br/~regi Agosto de 2005 ultima atualizaao em c 27 de maio de 2009

SUMARIO

Sumrio a
1 Introduo ca 2 Clculos Cient a cos Clculos Simples . . . . . a 2.1 Area de Trabalho . . 2.2 Variveis . . . . . . . a 2.3 Funoes Cient c cas . 2.4 Formatos Numricos e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 4 4 6 6 7 8 10 15 17

3 Variveis e Expresses Simblicas a o o 4 Instalando o Pacote gaal 5 Desenhando Grcos de Funoes a c

6 Matrizes 21 6.1 Exerc cios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 Referncias e 26

Introduao ao Matlab c

27 de maio de 2009

Introduo ca

O Matlab 1 um software destinado a fazer clculos com matrizes (Matlab = MATrix e a LABoratory). Os comandos do MATLAB so muito prximos da forma como escrevemos a o expresses algbricas, tornando mais simples o seu uso. Podem ser incorporados as rotinas pro e ` e denidas, pacotes para clculos espec a cos. Escrevemos um pacote chamado gaal com funoes c que so direcionadas para um curso de Geometria Anal a tica e Algebra Linear. O programa Matlab pode ser adquirido gratuitamente na compra do Guia do Usurio [1]. a Por exemplo, atravs da internet, na livraria Blackwells na Inglaterra e (http://bookshop.blackwell.co.uk), o Guia do Usurio foi adquirido por US$ 68,00 ina cluindo a despesa com o transporte, acompanhado de um CD com o programa. Uma vez inicializado o Matlab , aparecer na janela de comandos um prompt >> ou a EDU>>. O prompt signica que o Matlab est esperando um comando. Todo comando deve a ser nalizado teclando-se Enter. No Matlab , pode-se obter ajuda sobre qualquer comando ou funao. O comando c >> help (sem o prompt >>) mostra uma listagem de todos os pacotes dispon veis. Ajuda sobre um pacote espec co ou sobre um comando ou funao espec c ca obtida com o comando e >> help nome, (sem a v rgula) onde nome pode ser o nome de um pacote ou o nome de um comando ou funao. c

Matlab

marca registrada de The Mathworks, Inc. e

27 de maio de 2009

Reginaldo J. Santos

CALCULOS CIENT IFICOS

Clculos Cient a cos

Clculos Simples a
O Matlab faz clculos simples e cient a cos como uma calculadora. Por exemplo, suponha que voc vai a uma loja e compra 3 objetos que custam 25 reais cada e 5 objetos que custam e 12 reais cada. Quanto custou a sua compra? No Matlab voc pode resolver este problema de pelo menos duas maneiras. A mais e simples e EDU>> 3*25 + 5*12 ans = 135 Observe que no Matlab a multiplicaao tem precedncia sobre a adiao. Note tambm que c e c e ele chamou o resultado de ans. Alternativamente, voc pode usar variveis para armazenar informaao. e a c EDU>> q1=3, p1=25, q2=5, p2=12 q1 = 3 p1 = 25 q2 = 5 p2 = 12 Introduao ao Matlab c 27 de maio de 2009

EDU>> total=q1*p1+q2*p2 total = 135 Primeiro, criamos quatro variveis, q1, p1, q2 e p2, atribuindo a elas os seus valores resa pectivos. Observe que no Matlab o sinal de igual tem um sentido diferente daquele da Matemtica. Aqui, igual signica atribuiao. O que estiver a direita do sinal de igual coa c ` e locado na varivel que estiver a esquerda. Finalmente, criamos uma varivel chamada total a ` a que recebeu o total da compra. Usamos a v rgula para separar os comandos que so dados em a uma mesma linha. Esta separaao poderia ser feita com ponto e v c rgula. Mas, neste caso o Matlab no mostra os resultados dos comandos. No exemplo anterior ter a amos EDU>> q1=3; p1=25; q2=5; p2=12; EDU>> total=q1*p1+q2*p2; Em qualquer momento, podemos ver o valor que est contido em uma varivel, simplesmente a a digitando no prompt o seu nome. EDU>> total total = 135 O Matlab oferece as seguintes operaoes aritmticas: c e

>> a+b soma a e b. Por exemplo, 5+6. >> a-b subtrai a de b. Por exemplo, 15-12. >> ab multiplica a por b. Por exemplo, 3.140.15. 27 de maio de 2009 Reginaldo J. Santos

6 >> a^b calcula a elevado a b. Por exemplo, 5^(1/2).

CALCULOS CIENT IFICOS

A ordem com que so avaliadas as expresses dada pela seguinte regra: expresses so a o e o a avaliadas da esquerda para a direita, com a potncia tendo a mais alta precedncia, seguida e e pela multiplicaao e diviso que tm igual precedncia, seguidas pela adiao e subtraao que c a e e c c tm igual precedncia. Parntesis podem ser usados para alterar esta ordem. Sendo que neste e e e caso, os parntesis mais internos so avaliados antes dos mais externos. e a

2.1

Area de Trabalho

Comandos que foram dados anteriormente podem ser obtidos novamente usando as teclas e . Por exemplo, pressionando a tecla uma vez voc obtem o ultimo comando digitado no e prompt. Pressionando repetidamente a tecla se obtem os comandos digitados anteriormente, um de cada vez na direao para trs. Analogamente, pressionando-se a tecla , mas na direao c a c para frente. Mais ainda, digitando no prompt os primeiros caracteres de um comando dado anteriormente e ento pressionando-se a tecla , obtem-se o comando mais recente tendo aqueles a caracteres iniciais. Em qualquer momento, as teclas , podem ser usadas para se mover o cursor dentro de um comando, no prompt. Desta forma um comando pode ser corrigido, alm e das teclas Delete e Backspace.

2.2

Variveis a

O Matlab tem certas regras para nomear as variveis. Os nomes de variveis devem a a ser nomes iniciados por letras no podem conter espaos nem caracteres de pontuaao. O a c c Matlab faz diferena entre letras maisculas e minsculas. Alguns nomes so usados para c u u a variveis predenidas. Estas so: a a Introduao ao Matlab c 27 de maio de 2009

2.3

Funoes Cient c cas

ans - varivel usada para os resultados. a pi - nmero . u eps - menor nmero tal que, quando adicionado a 1, cria um nmero maior que 1 no u u computador. flops - armazena o nmero de operaoes em ponto utuante realizadas. u c inf - signica innito. NaN ou nan - signica no nmero, por exemplo, 0/0. a e um u i e j - unidade imaginria 1. a nargin - nmero de argumentos de entrada de uma funao. u c nargout - nmero de argumentos de sa de uma funao. u da c realmin - menor nmero que o computador pode armazenar. u realmax - maior nmero que o computador pode armazenar. u As variveis podem ser redenidas a qualquer momento, bastando para isso atribu a -las um novo valor.

2.3

Funoes Cient c cas

O Matlab tem uma srie de funoes cient e c cas pr-denidas. A maioria pode ser usada e da mesma forma que seria escrita matematicamente. Por exemplo: EDU>> x=sqrt(2)/2 x = 0.7071 EDU>> y=acos(x) y = 0.7854 27 de maio de 2009 Reginaldo J. Santos

8 EDU>> y_graus=y*180/pi y_graus = 45.0000

CALCULOS CIENT IFICOS

Estes comandos calculam o arco cujo cosseno 2/2, inicialmente em radianos, depois em e graus. Abaixo segue uma lista de funoes cient c cas dispon veis: abs(x) - valor absoluto de x. acos(x) - arco cujo cosseno x. e asin(x) - arco cujo seno x. e atan(x) - arco cuja tangente x. e cos(x) - cosseno de x. exp(x) - exponencial ex . gcd(x,y) - mximo divisor comum de x e y. a lcm(x,y) - m nimo mltiplo comum de x e y. u log(x) - logaritmo de x na base e. log10(x) - logaritmo de x na base 10. rem(x,y) - resto da diviso de x por y. a sin(x) - seno de x. sqrt(x) - raiz quadrada de x. tan(x) - tangente de x.

2.4

Formatos Numricos e
mostra um resultado numrico ele segue certas regras. No caso de e 27 de maio de 2009

Quando o Matlab Introduao ao Matlab c

2.4

Formatos Numricos e

nenhum formato estar denido, se um resultado um nmero inteiro, o Matlab mostra e u como um inteiro. Este foi o caso no exemplo das compras, que zemos anteriormente. Quando um resultado um nmero real, o Matlab mostra uma aproximaao com at quatro casas e u c e decimais. Este foi o caso no exemplo do arco cosseno, que zemos ateririmente. Se os d gitos signicativos estiverem fora desta faixa, o Matlab mostra o resultado em notaao cient c ca. Voc pode denir um formato diferente. Abaixo seguem algumas possibilidades: e format short - exibe 5 d gitos. format long - exibe 16 d gitos. format rat - exibe no formato racional. E importante salientar que o Matlab no muda a sua forma de representar os nmeros a u internamente, quando formatos diferentes de exibiao de nmeros so escolhidos. c u a

27 de maio de 2009

Reginaldo J. Santos

10

VARIAVEIS E EXPRESSOES SIMBOLICAS

Variveis e Expresses Simblicas a o o

Agora, vamos ver como podemos manipular com expresses que alm de nmeros e variveis o e u a numricas, contm tambm variveis simblicas. Por exemplo: e e e a o EDU>> syms x EDU>> simplify((sin(x))^2+(cos(x))^2) ans = 1 Estes comandos mandam o Matlab simplicar a expresso sen2 x + cos2 x. Primeiro precia samos dizer ao Matlab que x uma varivel simblica, depois pedimos para simplicar a e a o expresso que envolve x. Neste caso usamos uma funo chamada simplify. A palavra funao a ca c no Matlab tem um signicado diferente daquele que tem na Matemtica. Aqui funao um a c e comando, que pode ter alguns argumentos de entrada e alguns de sa da. Neste caso, a funao c simplify tem como argumento de entrada uma expresso simblica e de sa tambm. a o da e Uma vez denido que a varivel x uma varivel simblica, podemos denir expresses que a e a o o envolvem esta varivel. Por exemplo, dadas duas funoes a c f (x) = 2x2 + 3x 5 e g(x) = x2 x + 7, podemos fazer uma srie de operaoes algbricas envolvendo estas funoes. e c e c EDU>> f=2*x^2+3*x-5; g=x^2-x+7; EDU>> f+g ans = 3*x^2+2*x+2 EDU>> f-g Introduao ao Matlab c 27 de maio de 2009

11

ans = x^2+4*x-12 EDU>> f*g ans = (2*x^2+3*x-5)*(x^2-x+7) EDU>> expand(ans) ans = 2*x^4+x^3+6*x^2+26*x-35 EDU>> f/g ans = (2*x^2+3*x-5)/(x^2-x+7) EDU>> expand(ans) ans = 2/(x^2-x+7)*x^2+3/(x^2-x+7)*x-5/(x^2-x+7) EDU>> pretty(ans) 2 x x 5 2 ---------- + 3 ---------- - ---------2 2 2 x - x + 7 x - x + 7 x - x + 7 EDU>> f^3 27 de maio de 2009 Reginaldo J. Santos

12

VARIAVEIS E EXPRESSOES SIMBOLICAS

ans = (2*x^2+3*x-5)^3 EDU>> expand(ans) ans = 8*x^6+36*x^5-6*x^4-153*x^3+15*x^2+225*x-125 Observe que o Matlab no faz as simplicaoes ou expanses automaticamente. Para a c o isso, usamos os comandos simplify que simplica e expand que faz a expanso. Alm destes, a e usamos acima tambm o comando pretty, que mostra a expresso de uma forma mais fcil de e a a enxergar. Alm destes, que j vimos, existe o comando simple, que tenta encontrar a forma e a mais simples de escrever uma expresso. a O Matlab pode realizar operaoes mais avanadas sobre expresses simblicas. A funao c c o o c compose calcula a composiao das funoes f (x) e g(x) em f (g(x)), a funao finverse encontra c c c a inversa funcional de uma expresso e a funao subs substitui uma varivel por um nmero a c a u (ou por outra varivel) em uma expresso. Por exemplo: a a EDU>> EDU>> ans = EDU>> ans = EDU>> ans = EDU>> ans = f=1/(1-x^2); g=sin(x); compose(f,g) 1/(1-sin(x)^2) compose(g,f) sin(1/(1-x^2)) finverse(g) asin(x) subs(f,x,2) -1/3 27 de maio de 2009

Introduao ao Matlab c

13 O Matlab pode resolver equaoes. Por exemplo, para resolver a equaao c c ax2 + bx + c = 0, algebricamente, podemos usar os comandos: EDU>> syms a b c x EDU>> solve(a*x^2+b*x+c) ans = [1/2/a*(-b+(b^2-4*a*c)^(1/2))] [1/2/a*(-b-(b^2-4*a*c)^(1/2))] O Matlab pretty. pode exibir este resultado de uma forma mais fcil de enxergar usando a funao a c

EDU>> pretty(ans) [ [ [1/2 [ [ [ [ [1/2 [ 1/2] -b + (b - 4 a c) ] --------------------] a ] ] 2 1/2] -b - (b - 4 a c) ] --------------------] a ] 2

Abaixo segue um resumo das funoes para manipulaao de expresses algbricas: c c o e 27 de maio de 2009 Reginaldo J. Santos

14

VARIAVEIS E EXPRESSOES SIMBOLICAS

diff(f) - calcula a derivada de f. compose(f,g) - determina a composta f (g(x)). expand(expr) - expande uma expresso expr. a finverse(expr) - determina a inversa funcional da expresso expr. a pretty(expr) - exibe a expresso expr numa forma mais bonita. a simple - procura encontrar uma forma mais simples de escrever uma expresso expr. a simplify(expr) - simplica a expresso expr. a solve(expr) - acha a(s) soluao(es) da equaao expr= 0. c c subs(expr,x,a) - substitui na expresso expr a varivel x por a. a a syms x y z a b - dene as variveis simblicas x, y, z, a e b. a o Existem vrias outras funoes para manipulaao de expresses algbricas. Voc pode obter a c c o e e informaoes sobre elas digitando help symbolic. Uma funao interessante que mostra as c c capacidades do Matlab em tratar com funoes matemticas funtool que uma calculadora c a e e para funoes. c

Introduao ao Matlab c

27 de maio de 2009

15

Instalando o Pacote gaal


1. Faa o download do pacote gaal que est no site http://www.mat.ufmg.br/~regi. c a 2. Extraia os arquivos em MATLAB\toolbox. Deve ser criada uma pasta a com nome gaal. 3. Inicialize o Matlab , se j no o tiver feito. a a 4. Na barra de ferramentas

clique com o boto esquerdo do mouse no boto a a 5. Clique no boto Add to Path.... a

27 de maio de 2009

Reginaldo J. Santos

16

INSTALANDO O PACOTE GAAL

Clique duas vezes com o boto esquerdo do mouse em toolbox e depois o mesmo em a gaal. Depois clique em Add to Back

6. Clique em OK. Depois, em Save Settings e por ultimo em Close 7. Verique se o Matlab adicionou o pacote gaal aos outros, digitando no prompt winhelp. Ele deve aparecer na ultima linha ou na primeira. Caso contrrio repita o a processo acima, com mais cuidado. 8. Para informaoes sobre o pacote gaal digite no prompt do Matlab c help gaal

Introduao ao Matlab c

27 de maio de 2009

17

Desenhando Grcos de Funoes a c

Para desenhar o grco de uma funao de uma varivel, existe no pacote gaal a funao a c a c plotf1 (use help plotf1 para saber seu uso). Para colocar os eixos coordenados temos no pacote gaal a funao eixos. Usando a funao f (x) = 1/(1 x2 ) que denimos acima temos: c c EDU>> plotf1(f,[-10,10],200)

30

20

10

10

20

30

40

50 10

10

EDU>> eixos 27 de maio de 2009 Reginaldo J. Santos

18

DESENHANDO GRAFICOS DE FUNCOES

30

20

10

x
10

20

30

40

50 10

10

Podemos mudar a escala do grco com a funao axis a c

EDU>> axis([-5,5,-5,5]) Introduao ao Matlab c 27 de maio de 2009

19

5 5

Neste caso como os eixos j estavam traados, o resultado no foi bom. Ento, vamos limpar a a c a a gura com o comando clf e com a seta para cima vamos recuperar comandos que haviamos digitado anteriormente. EDU>> EDU>> EDU>> EDU>> clf plotf1(f,[-10,10]) axis([-5,5,-5,5]) eixos Reginaldo J. Santos

27 de maio de 2009

20

DESENHANDO GRAFICOS DE FUNCOES

x
1

5 5

Introduao ao Matlab c

27 de maio de 2009

21

Matrizes

Para criar uma varivel onde armazenada uma matriz, basta escrever os elementos da a e matriz entre colchetes [ ... ], sendo os elementos de uma mesma linha da matriz separados por v rgula e as linhas separadas por ponto e v rgula. Por exemplo, para armazenar a matriz 1 2 3 4 5 6 numa varivel de nome A usamos o comando a >> A=[1,2,3;4,5,6] Podemos acessar os elementos de uma matriz usando os comandos EDU>> A(2,3) ans = 6 EDU>> A(2,:) ans = 4 5 EDU>> A(:,1) ans = 1 4 EDU>> A(:,1:2) ans = 1 2 4 5 27 de maio de 2009

Reginaldo J. Santos

22

MATRIZES

O primeiro comando foi para mostrar o elemento (1,2) da matriz A. O segundo, para exibir e a 2a. linha e o terceiro, para exibir a 1a. coluna. Finalmente, o quarto comando para exibir e e a submatriz formada pela 1a. e 2a. colunas da matriz A. As matrizes podem ser concatenadas EDU>> B=[A,[7;8]] B = 1 2 3 4 5 6 EDU>> [A;[7,8,9]] ans = 1 2 3 4 5 6 7 8 9

7 8

As operaoes matriciais so executadas de forma semelhante a que so executadas operaoes c a a c escalares EDU>> A=[1,2;3,4]; B=[-3;1]; C=[3,5;-5,2]; EDU>> A+C ans = 4 7 -2 6 EDU>> 3*A ans = 3 6 9 12 Introduao ao Matlab c 27 de maio de 2009

23

EDU>> C*A ans = 18 26 1 -2 EDU>> B*A ??? Error using ==> * Inner matrix dimensions must agree. EDU>> A^2 ans = 7 10 15 22 EDU>> (A*C)^2 ans = -50 144 -176 430 O Matlab tem funoes que geram matrizes especiais c

EDU>> I=eye(3) I = 1 0 0 0 1 0 0 0 1 EDU>> O=zeros(3,1) O = 0 27 de maio de 2009 Reginaldo J. Santos

24

MATRIZES

0 0 Alm destas, o pacote gaal oferece as funoes randi para gerar uma matriz com elementos e c inteiros aleatrios e matvand que cria a matriz de Vandermonde. o EDU>> A=randi(3) A = 0 3 2 2 1 0 -2 -1 -1 EDU>> B=randi(3,1) B = 4 2 -3 EDU>> C=matvand(B,2) C = 16 4 1 4 2 1 9 -3 1 Abaixo um resumo das operaoes matriciais c >> A=[a11,a12,...,a1n;a21,a22,...; ...,amn] cria uma matriz, m por n, usando os elementos a11, a12, ..., amn e a armazena numa varivel de nome A. a >> A+B a soma de A e B, e >> A-B a diferena A menos B, e c >> A*B o produto de A por B, e >> num*A o produto do escalar num por A, e >> A. a transposta de A, e >> A^k a potncia A elevado a k. e e Introduao ao Matlab c 27 de maio de 2009

6.1

Exerc cios

25

>> Aj=A(:,j) a coluna j da matriz A, >> Ai=A(i,:) a linha i da matriz A. e e

6.1

Exerc cios
1 3 0 0 4 2 3 e X= 2 . 5

1. Sejam A=

Verique que AX = 3A1 + 2A2 + 5A3 , onde Aj a j-sima coluna de A, para j = 1, 2, 3. e e 2. Encontre um valor de x tal que AB t = 0, onde A= 3. Use o Matlab x 4 2 e B= 2 3 5 .

para encontrar o menor inteiro k 0 1 0 1 0 0 A= 0 0 0 0 0 1

> 1 tal que Ak = A, onde 0 0 ; 1 0

4. Use o Matlab (a)

para calcular os membros da seqncia A, A2 , A3 . . . , Ak , . . ., para ue (b) 1/2 1/3 1 1/2 . ; A= A= 0 1/5 0 1/3

A seqncia parece estar convergindo para alguma matriz? Se estiver, para qual? ue 27 de maio de 2009 Reginaldo J. Santos

26

REFERENCIAS

Referncias e
[1] Mathworks Inc. Student Edition of MATLAB Version 5 for Windows. Prentice Hall, Upper Saddle River, New Jersey, 1997.

Introduao ao Matlab c

27 de maio de 2009

Você também pode gostar