Académique Documents
Professionnel Documents
Culture Documents
http://www.mat.ufmg.br/gaal/matlab/matlab1.html
1. O que o MATLAB
MATLAB (acrnimo de MATrix LABoratory) um software interativo de alta performance voltado para o clculo numrico. O MATLAB integra anlise numrica, clculo com matrizes, processamento de sinais e construo de grficos em ambiente fcil de usar, onde problemas e solues so expressos somente como eles so escritos matematicamente, ao contrrio da programao tradicional. O MATLAB um sistema interativo cujo elemento bsico de informao uma matriz que no requer dimensionamento. Esse sistema permite a resoluo de muitos problemas numricos em apenas uma frao do tempo que se gastaria para escrever um programa semelhante em linguagem Fortran, Basic ou C. Alm disso, as solues dos problemas so expressas no MATLAB quase exatamente como elas so escritas matematicamente. Alguns pacotes para clculos especficos podem ser incorporados a rotinas pr-definidas. Um pacote chamado GAAL com funes que so direcionadas para o estudo de Geometria Analtica e lgebra Linear pode ser obtido atravs da Internet no endereo http://www.mat.ufmg.br /~regi. Neste endereo, voc encontrar as instrues para instalar esse pacote. OBS: voc deve ter o MATLAB instalado anteriormente para instalar o pacote GAAL!
2. Matrizes
As matrizes constituem a estrutura bsica do MATLAB, por isso ele permite vrias maneiras de manipul-las. Para construir uma matriz, os elementos de uma mesma linha devem estar separados por branco ou vrgulas e as linhas devem estar separadas por ponto e vrgula. Para criarmos uma matriz 3x2 fazemos: EDU>>B=[1 2 3; 4 5 6]; ou EDU>> A=[1,2,3;4,5,6]; O ponto e vrgula foram colocados para que o MATLAB no exibisse o resultado do comando executado, por exemplo: EDU>> A=[1 2;3 4]; EDU>> A=[1 2;3 4]
1 de 18
30/07/2012 17:53
1- Introduo ao MATLAB
http://www.mat.ufmg.br/gaal/matlab/matlab1.html
A= 1 3 2 4
Exemplo 1: Consideremos as matrizes A=[1 2;3 4] e B=[2 3;1 5]. Vamos realizar as operaes listadas na tabela acima sobre estas matrizes. EDU>> A=[1 2;3 4]; EDU>> B=[2 3;1 5]; EDU>> A+B ans = 3 4 5 9 % declarao da matriz A % declarao da matriz B %soma das matrizes
OBS: Quando no se atribui o resultado de um comando a uma varivel, o MATLAB atribui o resultado a uma varivel ans (ou seja, answer)
% transposta da matriz A
2 de 18
30/07/2012 17:53
1- Introduo ao MATLAB
http://www.mat.ufmg.br/gaal/matlab/matlab1.html
1 2
3 4
% segunda coluna de B
Para modificar o elemento de uma matriz, basta atribuirmos a ele um novo valor: EDU>> A(1,2)=5; EDU>> A A= 1 3 5 4
Se um for atribudo um valor a um elemento no existente, ou seja, cujos ndices (um ou ambos) excedem o tamanho da matriz, ento o MATLAB aumenta esta matriz automaticamente preenchendo-a com valores nulos nas demais posies novas, de forma que a matriz permanea retangular: EDU>> A(1,4)=7; EDU>> A A= 1 5 0 7
3 de 18
30/07/2012 17:53
1- Introduo ao MATLAB
http://www.mat.ufmg.br/gaal/matlab/matlab1.html
Seja agora a matriz quadrada C de ordem 3: EDU>> C=[1 2 3;4 5 6;7 8 9]; Os elementos de uma matriz podem ser referenciados tantos individualmente, tal como EDU>> C(3,3) ans = 9 ou em conjuntos. Se quisermos os elementos das linhas 1 2 3 e da coluna 2, fazemos EDU>> C([1 2 3],2) ans = 2 5 8 Consideremos agora uma matriz D, 4x3: EDU>> D=[3 5 1;7 3 5; 3 1 2;5 2 4]; Para sabermos o nmero de linhas e de colunas de uma matriz, utilizamos o comando size. Existem duas notaes para essa funo: EDU>> t=size(D) t= 3 3
onde a varivel t uma matriz linha contendo duas posies, uma contendo o nmero de linhas e outra contendo o nmero de colunas. A outra maneira : EDU>> [l,c]=size(D) l= 4 c=
4 de 18
30/07/2012 17:53
1- Introduo ao MATLAB
http://www.mat.ufmg.br/gaal/matlab/matlab1.html
Descrio Soma dos elementos das colunas da matriz Produto dos elementos das colunas da matriz Mdia aritmtica dos elementos das colunas da matriz Desvio padro dos elementos das colunas da matriz Maiores elementos das colunas da matriz Menores elemento das colunas da matriz Ordena em ordem crescente os elementos das colunas da matriz
Exemplo 2: Considere um quadrado mgico, isto , uma matriz de ordem n>=3, com valores entre 1 e n , tal que a soma das linhas, das colunas e das diagonais do sempre o mesmo valor. Vamos demonstrar as principais operaes da tabela acima.
2
EDU>> F=magic(3) F= 8 3 4 1 5 9 6 7 2
5 de 18
30/07/2012 17:53
1- Introduo ao MATLAB
http://www.mat.ufmg.br/gaal/matlab/matlab1.html
96
45
84
EDU>> mean(F) % efetua a mdia aritmtica dos elementos das colunas de F ans = 5 5 5
EDU>> std(F) % efetua o desvio padro dos elementos das colunas de F ans = 2.6458 4.0000 2.6458 % Mostra os maiores elementos das colunas da matriz
EDU>> min(F) % Mostra os menores elementos das colunas da matriz ans = 3 1 2 % Ordena em ordem crescente os elementos das colunas da matriz
Todas essas funes podem ser aplicadas para se produzir os resultados relativos a cada linha, bastando aplicar as funes transposta da matriz: EDU>> sum(F.') ans = 15 15 15
6 de 18
30/07/2012 17:53
1- Introduo ao MATLAB
http://www.mat.ufmg.br/gaal/matlab/matlab1.html
Funo Descrio diag Sendo o argumento um vetor, cria uma matriz diagonal com os elementos do vetor. Se o argumento for uma matriz, produz uma matriz coluna com os elementos da diagonal principal. tril Obtm a parte triangular inferior de uma matriz triu Obtm a parte triangular superior de uma matriz
Exemplo 3: Utilizaremos a matriz F declarada no exemplo anterior para mostrar as funes acima: EDU>> d=diag(F) % mostra os elementos da diagonal principal da matriz F d= 8 5 2 EDU>> D=diag(d) os elementos do vetor d. D= 8 0 0 0 5 0 0 0 2 % Obtm a parte triangular inferior da matriz F % cria uma matriz diagonal em que os elementos da diagonal principal so
EDU>> L=tril(F) L= 8 3 4 0 5 9 0 0 2
EDU>>U=triu(F) U= 8 1 6
7 de 18
30/07/2012 17:53
1- Introduo ao MATLAB
http://www.mat.ufmg.br/gaal/matlab/matlab1.html
0 0
5 0
7 2
Descrio da matriz Cria uma matriz em que todos os elementos so nulos Cria uma matriz em que todos os elementos so iguais a 1 Cria a matriz identidade ou parte dela Cria uma matriz de elementos aleatrios uniformemente distribudos entre 0 e 1 Cria uma matriz de elementos aleatrios uniformemente distribudos entre -5 e 5 Cria uma matriz de elementos aleatrios com distribuio normal com mdia zero e desvio padro 1
* comando do pacote GAAL. Exemplo 4: Algumas matrizes construdas com o auxlio dessas funes: EDU>> Z=zeros(2) Z= 0 0 0 0
EDU>> U=ones(2,3) U= 1 1 1 1 1 1
EDU>> I=eye(2,4) I= 1 0 0 1 0 0 0 0
8 de 18
30/07/2012 17:53
1- Introduo ao MATLAB
http://www.mat.ufmg.br/gaal/matlab/matlab1.html
EDU>> R=rand(3) R= 0.9501 0.4860 0.4565 0.2311 0.8913 0.0185 0.6068 0.7621 0.8214 EDU>> randn(3,5) ans = -0.4326 0.2877 1.1892 0.1746 -0.5883 -1.6656 -1.1465 -0.0376 -0.1867 2.1832 0.1253 1.1909 0.3273 0.7258 -0.1364
3. Sistemas Lineares
Nesta seo, vamos utilizar os comandos do pacote GAAL para resolvermos sistemas lineares. Instrues sobre a instalao deste pacote voc encontra no site http://www.mat.ufmg.br/~regi. O mtodo que ser utilizado na resoluo de sistemas lineares o mtodo de GaussJordan. No quadro abaixo, esto listados os comandos que efetuam as operaes elementares sobres matrizes.
Descrio Faz a operao elementar alpha x linha i linha i da matriz A e armazena na matriz B. Faz a operao elementar alpha x linha i + linha j linha j da matriz A e armazena em B. Faz a troca da linha i com a linha j da matriz A e armazena a matriz resultante na varivel B. Calcula passo a passo a forma escalonada reduzida da matriz A e armazena a matriz resultante na varivel B. Retorna o vetor soluo x do sistema linear Ax=b.
* comandos do pacote GAAL. Vamos utilizar os comandos listados acima para resolvermos o seguinte sistema linear:
Inicialmente vamos criar a matriz aumentada: EDU>> A=[1 1 2 8; -1 -2 3 1; 3 -7 4 10] %cria a matriz aumentada do sistema.
9 de 18
30/07/2012 17:53
1- Introduo ao MATLAB
http://www.mat.ufmg.br/gaal/matlab/matlab1.html
A= 1 1 -1 -2 3 -7 2 8 3 1 4 10
Temos que encontrar o piv da primeira coluna. Como o primeiro elemento da coluna 1 1, basta zerarmos os demais elementos. EDU>> B=opel(1,1,2,A); % multiplica por 1 a primeira linha e soma com a segunda linha. 1*linha 1 + linha 2 ==> linha 2 EDU>> B=opel(-3,1,3,B); % multiplica a primeira linha por 3 e soma com a terceira. -3*linha 1 + linha 3 ==> linha 3 EDU>> B B= 1 1 2 8 0 -1 5 9 0 -10 -2 -14 Vamos agora encontrar o piv da segunda coluna. Para isso, basta multiplicarmos a segunda linha por 1. EDU>> B=opel(-1,2,B) -1*linha 2 ==> linha 2 B= 1 1 2 8 0 1 -5 -9 0 -10 -2 -14 Temos que zerar os outros elementos da segunda coluna. EDU>> B=opel(-1,2,1,B); % multiplica por 1 a segunda linha e soma com a primeira linha. -1*linha 2 + linha 1 ==> linha 1 EDU>> B=opel(10,2,3,B); % multiplica a segunda linha por 10 e soma com a terceira linha. 10*linha 2 + linha 3 ==> linha 3 EDU>> B B= 1 0 7 17 % mostra o contedo da matriz B. % multiplica a segunda linha por 1. % mostra o contedo da matriz B
10 de 18
30/07/2012 17:53
1- Introduo ao MATLAB
http://www.mat.ufmg.br/gaal/matlab/matlab1.html
0 0
1 -5 -9 0 -52 -104
Encontraremos agora o piv da terceira linha. Para isso, multiplicaremos a terceira linha por 1/52. EDU>> B=opel(-1/52,3,B); -1/52*linha 3 ==> linha 3 EDU>> B B= 1 0 0 0 1 0 7 17 -5 -9 1 2 % multiplica a terceira linha por 1/52.
Para terminarmos o processo de escalonamento, basta zerarmos os elementos da terceira coluna. EDU>> B=opel(5,3,2,B); % multiplica por 5 a terceira linha e soma com a segunda linha. 5*linha 3 + linha 2 ==> linha 2 EDU>> B=opel(-7,3,1,B); % multiplica a terceira linha por -7 e soma com a primeira linha. -7*linha 3 + linha 1 ==> linha 1 EDU>> B B= 1 0 0 0 1 0 0 0 1 3 1 2 % mostra o contedo da matriz B.
Portanto encontramos o vetor soluo deste sistema, X=[3 1 2]; Executando o comando escalona(A), bastaria criar a matriz aumentada e executarmos o comando. Como exemplo, vamos resolver o sistema acima utilizando este comando. Inicialmente temos que criar a matriz aumentada do sistema. EDU>> A=[1 1 2 8; -1 -2 3 1; 3 -7 4 10] A= 1 1 2 8 -1 -2 3 1 3 -7 4 10
11 de 18
30/07/2012 17:53
1- Introduo ao MATLAB
http://www.mat.ufmg.br/gaal/matlab/matlab1.html
Criada a matriz aumentada, basta executarmos o comando escalona(A): EDU>> B=escalona(A) [ 1, 1, 2, 8] [ -1, -2, 3, 1] [ 3, -7, 4, 10] eliminao 1: (1)*linha 1 + linha 2 ==> linha 2 (-3)*linha 1 + linha 3 ==> linha 3 [ 1, 1, 2, 8] [ 0, -1, 5, 9] [ 0, -10, -2, -14] Continua ? (s/n) s eliminao 2: (-1)*linha 2 ==> linha 2 [ 1, 1, 2, 8] [ 0, 1, -5, -9] [ 0, -10, -2, -14] Continua ? (s/n) s (-1)*linha 2 + linha 1 ==> linha 1 (10)*linha 2 + linha 3 ==> linha 3 [ 1, 0, 7, 17] [ 0, 1, -5, -9] [ 0, 0, -52, -104] Continua ? (s/n) s eliminao 3: (-1/52)*linha 3 ==> linha 3 [ 1, 0, 7, 17] [ 0, 1, -5, -9] [ 0, 0, 1, 2] Continua ? (s/n) s (-7)*linha 3 + linha 1 ==> linha 1 (5)*linha 3 + linha 2 ==> linha 2 [ 1, 0, 0, 3] [ 0, 1, 0, 1] [ 0, 0, 1, 2]
12 de 18
30/07/2012 17:53
1- Introduo ao MATLAB
http://www.mat.ufmg.br/gaal/matlab/matlab1.html
[ 1, 0, 0, 3] [ 0, 1, 0, 1] [ 0, 0, 1, 2] Portanto, obtemos o mesmo vetor soluo, X=[3 1 2]; Um recurso que o prprio MATLAB oferece para resolver sistemas lineares com rapidez o operador \. Dado qualquer sistema linear Ax=b, a soluo pode ser facilmente digitando o comando A\b. Vamos resolver o sistema acima utilizando este comando. Inicialmente, do mesmo modo que acima, temos que criar a matriz dos coeficientes e o vetor dos termos independentes do sistema: EDU>> A=[1 1 2 ; -1 -2 3 ; 3 -7 4 ]; % forma a matriz A EDU>> b=[8 1 10]'; % forma o vetor dos termos independentes Agora, basta executar o comando: EDU>> x=A\b x= 3.0000 1.0000 2.0000 Obtemos, claro, o mesmo vetor soluo encontrado acima quando utilizamos o pacote de GAAL.
4. Inverso de matrizes
Nesta seo, encontraremos a inversa de matrizes usando o MATLAB. Utilizaremos aqui o mesmo mtodo apresentado no livro texto, que consiste em escalonar a matriz aumentada. Essa matriz aumentada formada pela matriz cuja inversa queremos encontrar e pela matriz identidade. Inicialmente, vamos listar os comandos do pacote GAAL que utilizaremos:
Descrio Atribui matriz M a matriz obtida colocando lado a lado as M=[A,B] matrizes A e B Faz a operao elementar alpha x linha i linha i da matriz A B=opel(alpha,i,A) e armazena na varivel B. Faz a operao elementar alpha x linha i + linha j linha j da B=opel(alpha,i,j,A) matriz A e armazena em B.
Comando
13 de 18
30/07/2012 17:53
1- Introduo ao MATLAB
http://www.mat.ufmg.br/gaal/matlab/matlab1.html
B=opel(A,i,j) B=escalona(A)
Faz a troca da linha i com a linha j da matriz A e armazena a matriz resultante na varivel B. Calcula passo a passo a forma escalonada reduzida da matriz A e armazena a matriz resultante na varivel B.
Inicialmente, escrevemos a matriz aumentada. EDU>> A=[1 2 3;1 1 2;0 1 2]; EDU>> B=[A,eye(3)]; EDU>> B B= 1 1 0 % forma a matriz A % forma a matriz aumentada B % escreve a matriz B
2 1 1
3 2 2
1 0 0
0 1 0
0 0 1
Vamos agora escalonar a matriz aumentada. O elemento da primeira linha (piv) 1, precisamos apenas zerar os elementos da primeira coluna. EDU>> B=opel(-1,1,2,B) % multiplica a primeira linha por 1 e soma com a segunda. -1*linha 1 + linha 2 ==> linha 2 B= 1 0 0 2 -1 1 3 -1 2 1 -1 0 0 1 0 0 0 1
Encontraremos agora o piv da segunda linha. Para isso, basta multiplicarmos a segunda linha por -1. EDU>> B=opel(-1,2,B) -1*linha 2 ==> linha 2 B= 1 0 0 1 2 1 1 3 1 2 1 1 0 0 -1 0 0 0 % multiplica a segunda linha por 1.
14 de 18
30/07/2012 17:53
1- Introduo ao MATLAB
http://www.mat.ufmg.br/gaal/matlab/matlab1.html
Devemos agora zerar os elementos da segunda coluna. EDU>> B=opel(-2,2,1,B) % multiplica a segunda linha por 2 e soma com a primeira linha. -2*linha 2 + linha 1 ==> linha 1 B= 1 0 0
0 1 1
1 1 2
-1 2 1 -1 0 0
0 0 1
EDU>> B=opel(-1,2,3,B) % multiplica a segunda linha por 1 e soma com a terceira linha. -1*linha 2 + linha 3 ==> linha 3 B= 1 0 0
0 1 0
1 1 1
-1 2 1 -1 -1 1
0 0 1
Como o elemento da terceira linha e terceira coluna j o piv, basta zerarmos os elementos da terceira coluna. EDU>> B=opel(-1,3,2,B) % multiplica a terceira linha por 1 e soma com a segunda. -1*linha 3 + linha 2 ==> linha 2 B= 1 0 0 0 1 0 1 0 1 -1 2 2 -2 -1 1 0 -1 1
EDU>> B=opel(-1,3,1,B) % multiplica a terceira linha por 1 e soma com a primeira. -1*linha 3 + linha 1 ==> linha 1 B= 1 0 0
0 1 0
0 0 1
0 1 -1 2 -2 -1 -1 1 1
3 3
Assim, a matriz [A|I ] equivalente por linhas matriz acima, que da forma [I |S], portanto a matriz A invertvel e sua inversa a matriz S, ou seja,
S=
O MATLAB tambm oferece um comando muito simples para o clculo da inversa de uma
15 de 18
30/07/2012 17:53
1- Introduo ao MATLAB
http://www.mat.ufmg.br/gaal/matlab/matlab1.html
Vamos utilizar o comando acima para calcularmos a inversa da matriz definida anteriormente. EDU>> A=[1 2 3;1 1 2;0 1 2]; EDU>> B=inv(A) B= 0 1 -1 2 -2 -1 -1 1 1 Como esperado, obtemos a mesma matriz encontrada anteriormente. % forma a matriz A % calcula a inversa da matriz A
5. Determinantes
O determinante de uma matriz pode ser facilmente encontrado usando o MATLAB. O quadro abaixo mostra esse comando, alm de um comando especfico do pacote GAAL para encontrarmos o determinante de uma matriz. Comando b=det(A) b=detopelp(A)* Descrio Atribui varivel b o determinante da matriz A. Calcula o determinante da matriz A aplicando operaes elementares at que a matriz esteja na forma triangular superior e atribui o resultado varivel b.
Inicialmente temos que criar a matriz e depois executarmos os comandos. Vamos calcular primeiramente utilizando o recurso oferecido pelo MATLAB: EDU>> A=[1 2 3; 1 1 2; 0 1 2]; % cria a matriz A
16 de 18
30/07/2012 17:53
1- Introduo ao MATLAB
http://www.mat.ufmg.br/gaal/matlab/matlab1.html
EDU>> b=det(A) b= -1
Utilizando o comando do pacote GAAL: EDU>> b=detopelp(A) triangular superior. A= [ 1, 2, 3] [ 1, 1, 2] [ 0, 1, 2] eliminao 1: -1*linha 1 + linha 2 ==> linha 2 A= [ 1, 2, 3] [ 0, -1, -1] [ 0, 1, 2] Continua ? (s/n) s eliminao 2: -1*linha 2 ==> linha 2 A= [ 1, 2, 3] [ 0, 1, 1] [ 0, 1, 2] det(A) = (-1)*det(A) Continua ? (s/n) s -1*linha 2 + linha 3 ==> linha 3 A= [ 1, 2, 3] [ 0, 1, 1] [ 0, 0, 1] Continua ? (s/n) s Fim!
17 de 18 30/07/2012 17:53
uma matriz
1- Introduo ao MATLAB
http://www.mat.ufmg.br/gaal/matlab/matlab1.html
det(A) = (-1)*det(A) b= -1
18 de 18
30/07/2012 17:53