16 março 2007vectores e matrizes - aplicações à engenharia1 vectores e matrizes aplicações à...

26
16 Março 2007 Vectores e Matrizes - Aplicações à Engenharia 1 Vectores e Matrizes Aplicações à Engenharia Pedro Barahona DI/FCT/UNL Introdução aos Computadores e à Programação 2º Semestre 2006/2007

Upload: internet

Post on 18-Apr-2015

106 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 16 Março 2007Vectores e Matrizes - Aplicações à Engenharia1 Vectores e Matrizes Aplicações à Engenharia Pedro Barahona DI/FCT/UNL Introdução aos Computadores

16 Março 2007 Vectores e Matrizes - Aplicações à Engenharia 1

Vectores e MatrizesAplicações à Engenharia

Pedro BarahonaDI/FCT/UNL

Introdução aos Computadores e à Programação2º Semestre 2006/2007

Page 2: 16 Março 2007Vectores e Matrizes - Aplicações à Engenharia1 Vectores e Matrizes Aplicações à Engenharia Pedro Barahona DI/FCT/UNL Introdução aos Computadores

16 Março 2007 Vectores e Matrizes - Aplicações à Engenharia 2

Tipo de Dados Primitivo: a Matriz

• Ao contrário da generalidade das linguagens de

programação, o Octave / MATLAB assume a matriz

como o tipo básica de uma variável.

• Por exemplo, ao se fazer a atribuição de um valor a uma

variável V, “simples”, o Octave está de facto a atribuir

esse valor a todos os elementos de uma matriz com uma

linha e uma coluna.

• Para obtermos a dimensão de uma variável X, quer seja

simples, vector ou matriz, podemos usar as funções pré-

definidas rows(X) e columns(X). No caso de vectores,

linha ou coluna, o número de colunas e linhas é

retornado pela função lenght(V).

>> V = 5

>> V(1)ans = 5

>> V(1,1)ans = 5

>> X = 5

>> columns(X)ans = 1

>> M = [1 ; 2];>> cols(M)ans = 2

Page 3: 16 Março 2007Vectores e Matrizes - Aplicações à Engenharia1 Vectores e Matrizes Aplicações à Engenharia Pedro Barahona DI/FCT/UNL Introdução aos Computadores

16 Março 2007 Vectores e Matrizes - Aplicações à Engenharia 3

Matrizes

• De facto, as funções aplicáveis a uma variável “simples” são sempre distribuídas por

todos os elementos de uma matriz. Por exemplo, se a função logaritmo receber como

parâmetro um vector ou matriz, retorna uma estrutura idêntica como resultado.

• Naturalmente, esta atribuição pode ser feita elemento a elemento. Assim, sendo V a

anterior matriz, a instrução log(V)/log(2) é equivalente ao programa

for i = 1:rows(V) for j = 1:columns(V) X(i,j) = log(V(i,j))/log(2) endforendfor

>> X = [1,2, 4;8 16 32]

V = 1 2 4 8 16 32>> X = log(V)/log(2)X = 0 1 2 3 4 5

Page 4: 16 Março 2007Vectores e Matrizes - Aplicações à Engenharia1 Vectores e Matrizes Aplicações à Engenharia Pedro Barahona DI/FCT/UNL Introdução aos Computadores

16 Março 2007 Vectores e Matrizes - Aplicações à Engenharia 4

União e Seleccção de Matrizes

• O facto de a estrutura matriz ser uma primitiva da linguagem Octave permite que a

“formação” de matrizes seja feita não só a partir de elementos simples, como também

o seja a partir de vectores ou matrizes.

• Assim, a partir de dois vectores 1*3, A = [1,2,3] e B = [4,5,6], pode constituir-se

• Similarmente, a selecção de elementos de uma matriz não tem de ser feita elemento

a elemento, podendo ser seleccionadas submatrizes mais complexas . Por exemplo,

% uma matriz de 2*3 >> C = [A;B]C = 1 2 3 4 5 6

% um vector de 1*6 >> D = [A,B]C = 1 2 3 4 5 6

>> S = V(2:3, 1:2)S = 4 5 7 8>> T = V(:,2:3)T = 2 3 5 6 8 9 6 9

>> V = [1,2,3; 4 5 6; 7 8 9; 3 6 9]

V = 1 2 3 4 5 6 7 8 9 3 6 9

ST

Page 5: 16 Março 2007Vectores e Matrizes - Aplicações à Engenharia1 Vectores e Matrizes Aplicações à Engenharia Pedro Barahona DI/FCT/UNL Introdução aos Computadores

16 Março 2007 Vectores e Matrizes - Aplicações à Engenharia 5

Selecção de Sub-Matrizes

• De notar que esta selecção pode ser feita elemento a elemento, através de 2 ciclos

encadeados, havendo necessidade de proceder a uma conversão de índices. Para a

matriz anterior de 4*3, a instrução S = V(2:3, 1:2) é equivalente ao programa

• De notar a utilização de expresssões booleanas compostas, obtidas pela aplicação

de operadores booleanos (& - “e”, | - “ou” e ! – “não”) a relações de comparação

simples (==, >=, <=, >, <, !=).

• De notar ainda a mudança de índices entre a matriz V e

a sua sub-matriz S: i(S) = i(V)+1; j(S) = J(V).

for i = 1:rows(V) for j = 1:columns(V) if i >= 2 & i <= 3 & j >= 1 & j <= 2 s(i-1,j) = v(i,j) endif endforendfor

1 2 34 5 67 8 93 6 9

V

S

Page 6: 16 Março 2007Vectores e Matrizes - Aplicações à Engenharia1 Vectores e Matrizes Aplicações à Engenharia Pedro Barahona DI/FCT/UNL Introdução aos Computadores

16 Março 2007 Vectores e Matrizes - Aplicações à Engenharia 6

Funções de Agregação sobre Vectores

• Por vezes estamos interessados em conhecer propriedades do conjunto dos

elementos de um vector, tais como os seus máximo, mínimo ou soma.

• Estes valores agregados podem ser calculados por funções que utilizam ciclos, em

que se vai alterando uma variável de acumulação. Por exemplo, para calcular o

máximo ou a média de um vector, podem utilizar-se as seguintes funções

• Na realidade não é necessário definir estas funções, pois já existem predefinidas

as funções max(V), min(V), sum(V) e prod(V), com o significado óbvio.

• Outras funções agregadas podem ser obtidas indirectamente, como é o caso da

média dos valores de um vector V, obtida através de sum(V)/length(V).

function m = maximo(V); m = -inf; for j = 1:length(M) m = max(m, V(j)); endforendfunction

function s = soma(V); s = 0; for j = 1:length(M) s = s+ V(j); endforendfunction

Page 7: 16 Março 2007Vectores e Matrizes - Aplicações à Engenharia1 Vectores e Matrizes Aplicações à Engenharia Pedro Barahona DI/FCT/UNL Introdução aos Computadores

16 Março 2007 Vectores e Matrizes - Aplicações à Engenharia 7

Soma de Vectores

• Em geral, qualquer operação “” entre valores numéricos pode ser estendida a todos

os valores corespondentes de vectores e matrizes antecedendo o operador por um

ponto, i.e. através do operador “. ”.

• Desta forma a soma de dois vectores V1 e V2, que implementa a conhecida regra do

“paralelograma”, pode ser especificada através da operação

V = V1 .+ V2

• Por ser a matriz um tipo de dados primitivo, e por estar definida a soma de matrizes, a

mesma operação pode ser, no caso da soma, ser especificada como

V = V1 + V2que faz o “overload” do operador "+.

>> V1 = [5,4]>> V2 = [7,-3]>> V = V1 + V2ans = [12 1]

V1

V2

V

Page 8: 16 Março 2007Vectores e Matrizes - Aplicações à Engenharia1 Vectores e Matrizes Aplicações à Engenharia Pedro Barahona DI/FCT/UNL Introdução aos Computadores

16 Março 2007 Vectores e Matrizes - Aplicações à Engenharia 8

Produto Interno de Vectores

• Para além da soma de vectores, o produto interno de vectores é igualmente muito

utilizado em Engenharia, por exemplo, para determinação do ângulo entre dois

vectores e do módulo (valor absoluto, intensidade) de um vector.

• Formalmente o produto interno entre dois vectores com o mesmo número de

elementos, A e B, (denotado por A B) é a soma do produto de todos os elementos

correspondentes. Pode pois ser especificado pela função prod_int abaixo (que

pressupõe 2 vectores linha com o mesmo número de colunas)

• Como será de esperar, este produto interno pode ser obtido directamente através da

composição das funções sum e o produto elemento a elemento, isto é

X = prod_int(V1,V2) é equivalente a X = sum( V1 .* V2)

function p = prod_int(V1, V2); p = 0 for j = 1:columns(V1) p = p + V1(j)* V2(j); endforendfunction

Page 9: 16 Março 2007Vectores e Matrizes - Aplicações à Engenharia1 Vectores e Matrizes Aplicações à Engenharia Pedro Barahona DI/FCT/UNL Introdução aos Computadores

16 Março 2007 Vectores e Matrizes - Aplicações à Engenharia 9

Médias Ponderadas

• É muito vulgar pretender-se obter a média de um conjunto de valores, ponderada

pela sua “importância”. Por exemplo, a nota final é a média ponderada entre a nota

prática e a nota escrita (exame), sendo os pesos relativos, 25% e 75%,

respectivamente..

• Como é sabido, a média de k valores, v1.. vk, com pesos relativos p1 ..pk define-se

através da expressão

• Dados os vectores V e P, contendo respectivamente os valores e os pesos, a média

ponderada pode ser obtida através da função

ou simplesmente através da expressão m = sum(V .* P)/sum(P)

function m = media_ponderada(V, P); x = 0; s= 0; for j = 1:columns(V) x = x + V(j)* P(j); s = s + P(j) endfor m = x/sendfunction

ni

i

ni

iipipivm

11)(/)(*)(

Page 10: 16 Março 2007Vectores e Matrizes - Aplicações à Engenharia1 Vectores e Matrizes Aplicações à Engenharia Pedro Barahona DI/FCT/UNL Introdução aos Computadores

16 Março 2007 Vectores e Matrizes - Aplicações à Engenharia 10

Módulo e Ângulo entre Vectores

• Para além da soma de vectores, o produto interno de vectores é igualmente muito

utilizado em Engenharia.

• Por exemplo, o módulo de um vector A = [a1, a2, a3, ... , an], é definido como

|A| = (a12 + a1

2+ ... an2)1/2

e portanto, a função vec_mod pode ser definida como

• Para definir, na função ang_vec, o ângulo entre dois vectores A e B, basta notar

que A B = | A | | B | cos(), e portanto = arccos(A B / (| A | | B | )), donde

function p = mod_vec(V); p = sqrt(prod_int(V,V))endfunction

function a = ang_vec(V1,V2); % retorna ângulo em graus M = prod_int(V1,V2)) cos = M /(mod_vec(V1) * mod_vec(V2)) a = acos(cos)*180/piendfunction

Page 11: 16 Março 2007Vectores e Matrizes - Aplicações à Engenharia1 Vectores e Matrizes Aplicações à Engenharia Pedro Barahona DI/FCT/UNL Introdução aos Computadores

16 Março 2007 Vectores e Matrizes - Aplicações à Engenharia 11

Módulo e Ângulo entre Vectores

• Exemplo: Um corpo é submetido a duas forças, F1 e F2.

– F1 = 2 ex -3 ey+ 4 ez ; F2 = 1 ex + 2 ey - 2 ez

Qual a intensidade (módulo) de cada uma das forças, qual o ângulo que essas forças

fazem entre si, e qual a força resultante, bem como a sua intensidade (Módulo).

F1 = [2 -3 4] , F2 = [1, 2, -2]

>> M1 = mod_vec(F1,F1), M2 = mod_vec(F2)

M1 = 5.3852

M2 = 3.0000

>> F = F1 + F2, M = mod_vec(F)

F = 3 -1 2 % vector [3 -1 2]

M = 3.7417

>> alfa = ang_vec(F1,F2) % em graus

alfa = 137.97

Page 12: 16 Março 2007Vectores e Matrizes - Aplicações à Engenharia1 Vectores e Matrizes Aplicações à Engenharia Pedro Barahona DI/FCT/UNL Introdução aos Computadores

16 Março 2007 Vectores e Matrizes - Aplicações à Engenharia 12

Filtros

• Tipicamente, as expressões booleanas são usadas para decidir condições de entrada

e saída de execuções condicionais e/ou iterativas.

• Na realidade, as expressões booleanas são avaliadas no conjunto {FALSE, TRUE}

que no Octave coincide com o conjunto {0,1} de valores numéricos, o que permite

trocar execuções condicionais por “filtros”.

• Exemplo: Dado um valor numérico x, atribuir a y esse valor, caso seja maior que 5,

ou 0, no caso contrário.

Este problema pode ser resolvido através de (pelo menos) 2 maneiras distintas.

Y = x * (x>5)

Filtroif x > 5

y = x

else

y = 0

endif;

ExecuçãoCondicional

Page 13: 16 Março 2007Vectores e Matrizes - Aplicações à Engenharia1 Vectores e Matrizes Aplicações à Engenharia Pedro Barahona DI/FCT/UNL Introdução aos Computadores

16 Março 2007 Vectores e Matrizes - Aplicações à Engenharia 13

Filtros em Vectores

• A filtragem de elementos pode ser feita naturalmente para todos os elementos de um

vector, utilizando a extensão do operador de filtragem (geralmente a multiplicação, “*”)

pelo correspondenete para todos os elementos do vector (i.e. “.*).

• Exemplo: Determinar a soma de todos os elementos de um vector que sejam pares

mas não múltiplos de 6.

1. Começamos por definir as funções booleanas par e múltiplo de 6.

2. Podemos agora utilizá-las em expressões/filtros booleanos

function p = div_2(x)

p = (rem(x,2) == 0)

endfunction;

Function p = div_6(x)

p = (rem(x,6) == 0)

endfunction;

function s = sum_esp(X)

p = sum(X .* (div_2(X) & !div_6(X)).

endfunction;

Page 14: 16 Março 2007Vectores e Matrizes - Aplicações à Engenharia1 Vectores e Matrizes Aplicações à Engenharia Pedro Barahona DI/FCT/UNL Introdução aos Computadores

16 Março 2007 Vectores e Matrizes - Aplicações à Engenharia 14

Matrizes

• As operações descritas para vectores são na generalidade extensíveis a matrizes, com

várias linhas e colunas. Por exemplo,

– a matriz A pode ser “dobrada” através da operação A*2

– duas matrizes A e B com o mesmo número de linhas e colunas podem ser

somadas quer através da operação A+B quer através de A.+B.

• Existem no entanto algumas diferenças nas operações de agregação (max, min, sum,

e prod) que não retornam os valores agregados de todos os elementos da matriz, mas

os agregados, coluna a coluna.

• Assim para se obter os valoers agregados de toda a matriz deverá repetir-se a

operação desejada, primeiro para agregação das colunas e depois para agregação da

linha resultante.A = [ 1 2 3; 8 5 2];

>> sum(A)

ans = 9 7 5

>> sum(sum(A)

ans = 21

Page 15: 16 Março 2007Vectores e Matrizes - Aplicações à Engenharia1 Vectores e Matrizes Aplicações à Engenharia Pedro Barahona DI/FCT/UNL Introdução aos Computadores

16 Março 2007 Vectores e Matrizes - Aplicações à Engenharia 15

Multiplicação de Matrizes

• Sendo a matriz o tipo de dados primitivo, o Octave implementa, como operação

primitiva a multiplicação de matrizes. Dadas duas matrizes A e B, com dimensões m*k

e k*n, o resultado é uma matriz C de dimensões m*n com elementos

• Naturalmente, esta operação poderia ser igualmente obtida pela função mult_mat

function C = mult_mat(A,B) for i = 1: rows(A) for j = 1: columns(B) C(i,j) = 0; for l = 1: columns(A) C(i,j) = C(i,j)+ A(i,l)*B(l,j); endfor endfor endforendfunction

kl

ljlbliajic

1),(*),(),(

Page 16: 16 Março 2007Vectores e Matrizes - Aplicações à Engenharia1 Vectores e Matrizes Aplicações à Engenharia Pedro Barahona DI/FCT/UNL Introdução aos Computadores

16 Março 2007 Vectores e Matrizes - Aplicações à Engenharia 16

Multiplicação de Matrizes

• Exemplo:>> A = [ 1 2 3 4 ; 7 5 3 1 ; 0 2 4 6]A = 1 2 3 4 7 5 3 1 0 2 4 6

>> B = [ 1 2; 3 4; 5 6 ; 7 8]B = 1 2 3 4 5 6 7 8

>> C = A*BC = 50 60 % 50 = 1*1 + 2*3 +3*5 + 4*7 44 60 68 80

>> D = C == mult_mat(A,B)D = 1 1 1 1 1 1

Page 17: 16 Março 2007Vectores e Matrizes - Aplicações à Engenharia1 Vectores e Matrizes Aplicações à Engenharia Pedro Barahona DI/FCT/UNL Introdução aos Computadores

16 Março 2007 Vectores e Matrizes - Aplicações à Engenharia 17

Transposição de Matrizes

• Em engenharia, a multiplicação de matrizes tem várias aplicações práticas. Para além

da resolução de sistemas de equações, pode ser ainda utuilizada na implementação

dos produtos interno e externo de vectores (e ainda para rotação de vectores).

• Para o produto interno, interessa definir inicialmente a operação de transposição de

matrizes, que informalmente corresponde a trocar as linhas pelas colunas. Pode ser

especificada formalmente através da função transp(A) definida abaixo.

• Em Octave esta operação é primitiva, e é denotada pelo operador ‘, posfixo, ou seja

A’ é equivalente a transp(A)

function B = transp(A) for i = 1: rows(A) for j = 1: columns(A) B(j,i) = A(i,j); endfor endforendfunction

A = 1 2 3 4 5 6 7 8

A’= 1 5 2 6 3 7 4 8

Page 18: 16 Março 2007Vectores e Matrizes - Aplicações à Engenharia1 Vectores e Matrizes Aplicações à Engenharia Pedro Barahona DI/FCT/UNL Introdução aos Computadores

16 Março 2007 Vectores e Matrizes - Aplicações à Engenharia 18

Produto Interno

• Para se obter o produto interno de dois vectores linha V1 e V2 com k elementos, basta

notar que este produto pode ser obtido através da multiplicação da “matriz” V1 (1*k)

com a “matriz transposta” de V2 (k*1).

• Igualmente a média dos valores de um vector V, ponderada pelos pesos de outro

vector P, pode ser obtida através da operação

V * P’/sum(P)

>> A = [ 1 3 5]A = 1 3 5 >> P = [ 5 2 1]P = 5 2 1>> C = A * P’C = 16

>> Mp = A * P’/sum(P)Mp = 2

Page 19: 16 Março 2007Vectores e Matrizes - Aplicações à Engenharia1 Vectores e Matrizes Aplicações à Engenharia Pedro Barahona DI/FCT/UNL Introdução aos Computadores

16 Março 2007 Vectores e Matrizes - Aplicações à Engenharia 19

Produto Externo de 2 Vectores

• Um outro produto de vectores (definido em espaços 3D) usado em Engenharia é o

produto externo de dois vectores V1 e V2, V1 V2, definido como o vector V, com

módulo igual ao produto dos módulos dos vectores V1 e V2 pelo seno do ângulo

formado entre eles, com direcção perpendicular a ambos os vectores e com sentido

definido pela regra do “saca-rolhas”.

• Em particular este produto é usado para determinar a força exercida por uma carga

eléctrica sujeita a uma força magnética, tal como acontece nos tubos de raios

catódicos (CRT) usados nos “antigos” monitores de televisão.

• Para obtermos este produto é conveniente a utilização de matrizes, da forma

seguinte..

1120º

1.8226

21.8226 = abs(1*2*sin(120*pi/180))

Page 20: 16 Março 2007Vectores e Matrizes - Aplicações à Engenharia1 Vectores e Matrizes Aplicações à Engenharia Pedro Barahona DI/FCT/UNL Introdução aos Computadores

16 Março 2007 Vectores e Matrizes - Aplicações à Engenharia 20

Produto Externo de 2 Vectores

• Denotando por x, y e z os vectores unitários dos repectivos eixos, e de acordo com

a definição, temos

– x x = y y = z z = 0 (pois x faz um ângulo de 0º com x

– x y = z ; x z = - y; y z = x (regra do saca-rolhas) ;

– y x = - z ; z x = y ; z y = - x (regra do saca-rolhas)

• Sendo o produto externo distributivo em relação à soma, dados dois vectores

A = ax x + ay y + az z e B = bx x + by y + bz z o seu produto externo é dado por

• A B = (ax x + ay y + az z ) ( bx x + by y + bz z) =

(ay bz - az by) x + (az bx - ax bz) y + (ax by - ay bx) z

que pode ser obtido pela multiplicação do vector A pela matriz M abaixo indicada

xy

z

[ax ay az] 0 -bz by = [aybz-azby azbx- axbz azbx-axbz] bz 0 -bx

-by bx 0 M

Page 21: 16 Março 2007Vectores e Matrizes - Aplicações à Engenharia1 Vectores e Matrizes Aplicações à Engenharia Pedro Barahona DI/FCT/UNL Introdução aos Computadores

16 Março 2007 Vectores e Matrizes - Aplicações à Engenharia 21

Produto Externo de 2 Vectores

• O produto externo de dois vectores pode pois ser definido através da função

• Por ser muito utilizado, o produto externo (cross-product em inglês) é

disponibilizado em Octave pela função primitiva cross. Assim,

0 -bz by

bz 0 -bx

-by bx 0

function P = prod_ext(A,B) M = zeros(3,3); M(1,2) = -B(3); M(1,3) = B(2); M(2,1) = B(3); M(2,3) = -B(1); M(3,1) = -B(2); M(3,2) = B(1); P = A * M; endfunction

>> A = [ 1 -3 5]; B = [ -1 0 4];

>> C = cross(A,B)C = -12 -9 -3

>> D = prod_ext(B,A)D = 12 9 3 % A B = - B A

Page 22: 16 Março 2007Vectores e Matrizes - Aplicações à Engenharia1 Vectores e Matrizes Aplicações à Engenharia Pedro Barahona DI/FCT/UNL Introdução aos Computadores

16 Março 2007 Vectores e Matrizes - Aplicações à Engenharia 22

Matrizes e Sistemas de Equações

• Uma outra aplicação muito importante de matrizes em engenharia (e não só) é na

resolução de sistemas de equações lineares. Um sistema de n equações lineares a

n incógnitas, pode ser representado na forma matricial por

a11 x1 + a12 x2 + ... + a1n xn = b1

a21 x1 + a22 x2 + ... + a2n xn = b2 A X = B

.....

an1 x1 + an2 x2 + ... + ann xn = b1

em que A é uma matriz n*n, e X e B são vectores coluna com n elementos, isto é

a11 a12 ... a1n

a21 a22 ... a2n

.....

an1 an2 ... ann

x1

x2

...

xn

b1

b2

...

bn

* =

Page 23: 16 Março 2007Vectores e Matrizes - Aplicações à Engenharia1 Vectores e Matrizes Aplicações à Engenharia Pedro Barahona DI/FCT/UNL Introdução aos Computadores

16 Março 2007 Vectores e Matrizes - Aplicações à Engenharia 23

Matrizes e Sistemas de Equações

• Um tal sistema ficará resolvido se se colocar na forma

1 x1 + 0 x2 + ... + 0 xn = s1

0 x1 + 1 x2 + ... + 0 xn = s2 M * A * X = M * B

.....

0 x1 + 0 x2 + ... + 1 xn = sn I * X = S

o que pode ser obtido através da multiplicação de uma matriz M em ambos os lados

da equação. Como M * A = I, a matriz M é a matriz inversa da matriz A.

• De notar que a multiplicação de matrizes não é comutativa, pelo que a multiplicação

de B por M “à esquerda”, M * B, é diferente da multiplicação “à direita”, B * M, ou seja

M * B ≠ B * M

m11 m12 ... m1n

m21 m22 ... m2n

.....

mn1 mn2 ... mnn

* =

1 0 ... 0

0 1 ... 0

.....

0 0 ... 1

a11 a12 ... a1n

a21 a22 ... a2n

.....

an1 an2 ... ann

Page 24: 16 Março 2007Vectores e Matrizes - Aplicações à Engenharia1 Vectores e Matrizes Aplicações à Engenharia Pedro Barahona DI/FCT/UNL Introdução aos Computadores

16 Março 2007 Vectores e Matrizes - Aplicações à Engenharia 24

Matrizes e Sistemas de Equações

• Existem várias formas de inverter uma matriz. Sendo a matriz um tipo de dados

primitivo no Octave a operação de inversão de uma matriz A pode ser invocada da

forma “standard”, A-1, ou alternativamente pela chamada da função pré-definida

inv(A), ou seja

A-1 == inv(A).

• Assim, para obter as soluções de um sistema de equações A*X = B, basta notar que

se A*X = B então é A-1*A*X = A-1*B, ou seja I*X = A-1*B, e finalmente

X = A-1B.

• Na álgebra “real”, a-1 * b = b/a, isto é a multiplicação pelo inverso corresponde a uma

divisão. A divisão é igualmente uma operação primitiva do Octave. No entanto como

as multiplicações “à direita” e “à esquerda” são diferentes, o Octave distingue a

divisão “à esquerda” da divisão “à direita”, sendo representadas como

A-1*B = A\B e B*A-1 = B/A

Page 25: 16 Março 2007Vectores e Matrizes - Aplicações à Engenharia1 Vectores e Matrizes Aplicações à Engenharia Pedro Barahona DI/FCT/UNL Introdução aos Computadores

16 Março 2007 Vectores e Matrizes - Aplicações à Engenharia 25

Matrizes e Sistemas de Equações

• Exemplo: Consideremos o sistema de 3 equações a 3 incógnitas

• Para o resolver basta obter a matriz inversa A-1 e multiplicá-la à direita por B

>> A = [2 4 -1; 1 -2 1 ; -3 3 -1]A = 2 4 -1 1 -2 1 -3 3 -1

>> M = A^-1M = 0.20000 0.00000 -0.20000 0.20000 0.50000 0.30000 0.20000 2.00000 0.80000

>> B = [7 ; 0 ; 2] ;

>> X = M*[7;0;2]X = 1 2 3

2 x1 + 4 x2 – x3 = 7 x1 - 2 x2 + x3 = 0-3 x1 + 3 x2 – x3 = 2

2 4 -1

1 -2 1

-3 4 -1

x1

x2

x3* =

7

0

2

Page 26: 16 Março 2007Vectores e Matrizes - Aplicações à Engenharia1 Vectores e Matrizes Aplicações à Engenharia Pedro Barahona DI/FCT/UNL Introdução aos Computadores

16 Março 2007 Vectores e Matrizes - Aplicações à Engenharia 26

Matrizes e Sistemas de Equações

• Podemos ainda notar igualmente que

2 x1 + 4 x2 – x3 = 7 x1 - 2 x2 + x3 = 0-3 x1 + 3 x2 – x3 = 2

2 4 -1

1 -2 1

-3 4 -1

x1

x2

x3* =

7

0

2

>> A = [2 4 -1; 1 -2 1 ; -3 3 -1]; B = [7 ; 0 ; 2];

>> M = A ^-1; D = M * AM = 1.00000 0.00000 0.00000 0.00000 1.00000 0.00000 0.00000 0.00000 1.00000

>> X = A\BX = 1 2 3

>> A \ B - M*Bans = 1.0e-16 * % erros de arredondamento! 4.44089 % (A \ B == M * B) = 0 4.44089 0 4.44089 0