Escolar Documentos
Profissional Documentos
Cultura Documentos
Math Lab
Math Lab
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
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
27 de maio de 2009
Reginaldo J. Santos
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
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
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
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
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
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
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
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
Abaixo segue um resumo das funoes para manipulaao de expresses algbricas: c c o e 27 de maio de 2009 Reginaldo J. Santos
14
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
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
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
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
18
30
20
10
x
10
20
30
40
50 10
10
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
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
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
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 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