Upload
doquynh
View
216
Download
0
Embed Size (px)
Citation preview
Informática para as Ciências e EngenhariasVersão : C
(Engenharia Civil)
Pedro Barahona2017 / 18
Sumário
• Instrução IF.
• Operadores relacionais e lógicos.
§ Avaliação de conjunções e de disjunções.
• Matrizes.
§ Criação de matrizes.
§ Relações entre vetores e matrizes.
§ Percursos em matrizes.
22 Março 2018 2Instrução IF; Matrizes
Equação do 2º Grau
• Problema: Obtenha as raízes de uma equação do 2º grau, dados osseus parâmetros a, b, e c.
ax2 + bx +c = 0
• A função é suficientemente simples para não ser necessário decomporeste problema em problemas mais simples, usando uma função comassinatura
function raizes = equacao2(a,b,c)
• No entanto a solução depende do valor do discriminante, e portantoexige uma instrução para controlar um execução condicional: o IF.
22 Março 2018 3Instrução IF; Matrizes
Equação do 2º Grau - Algoritmo
• Algoritmo: O algoritmo para resolver a equação do 2º grau ébem conhecido:
ax2 + bx +c = 0• Informalmente
d = b2 – 4acse d < 0 então
não há raízessenão
se d = 0 entãouma só raíz: -b / 2a
senãoduas raízes: (-b ± sqrt(d)) / 2a
22 Março 2018 4Instrução IF; Matrizes
Equação do 2º Grau
• Apesar de muito simples, este algoritmo levanta duas questões quevamos agora abordar:1. Como implementar a execução condicional de instruções• Resposta: Instrução IF.2. Como determinar o valor das condições que determinam essa
execução condicionada• Resposta: Através de operadores relacionais e lógicos.
22 Março 2018 5Instrução IF; Matrizes
Sumário
22 Março 2018 6
• Instrução IF.
• Operadores relacionais e lógicos.
§ Avaliação de conjunções e de disjunções.
• Matrizes.
§ Criação de matrizes.
§ Relações entre vetores e matrizes.
§ Percursos em matrizes.
Instrução IF; Matrizes
Implementação – Que questões?
1. Como é que se executam blocos de instruções distintos conformeseja o resultado da avaliação de uma condição?No problema: se ... então ... senão ... .
2. Como é que se escrevem condições?No problema: d > 0 e d = 0.
22 Março 2018 7Instrução IF; Matrizes
A instrução IF [1]
22 Março 2018 8
Sintaxe:
if condição1
instruções1
end
Exemplo:
if sopa está insossa
adicione sal
end
Operacionalmente:
1. A condição1 é avaliada.
§ Se for verdadeira, executam-se as instruções1.
§ (Se for falsa, não se faz mais nada.)
Instrução IF; Matrizes
A instrução IF [2]
22 Março 2018 9
Sintaxe:if condição1
instruções1
elseinstruções2
end
Operacionalmente:
1. A condição1 é avaliada.
§ Se for verdadeira, executam-se as instruções1.
§ Se for falsa, executam-se as instruções2
Exemplo:if está sol e calor
almoce no terraço
else
almoce na sala
end
Instrução IF; Matrizes
A instrução IF [3]
22 Março 2018 10
Sintaxe:if condição1
instruções1
elseif condição2
instruções2
elseinstruções3
end
Exemplo:if semáforo está verde
avance
elseif semáforo está vermelho
páre
else % semáforo amarelo
acelere
end
• O número de condições pode ser arbitrário
• Neste caso existem 2 condições alternativas, mas poderiam serconsideradas mais com blocos elseif adicionais.
Instrução IF; Matrizes
A instrução IF [4]
22 Março 2018 11
Sintaxe:
if condição1
instruções1
elseif condição2
instruções2
elseinstruções3
end
Exemplo:if semáforo está verde
avance
elseif semáforo está vermelho
páre
else % semáforo amarelo
acelere
end
Operacionalmente:
1. A condição1 é avaliada.
2. Se for verdadeira, executam-se as instruções1.
3. Se for falsa, avalia-se a condição2
4. Se for verdadeira, executam-se as instruções2.
5. Se for falsa executam-se as instruções3.
Instrução IF; Matrizes
Sumário
22 Março 2018 12
• Instrução IF.
• Operadores relacionais e lógicos.
§ Avaliação de conjunções e de disjunções.
• Matrizes.
§ Criação de matrizes.
§ Relações entre vetores e matrizes.
§ Percursos em matrizes.
Instrução IF; Matrizes
Implementação – Que questões?
1. Como é que se executam blocos de instruções distintos conformeseja o resultado da avaliação de uma condição?No problema: se ... então ... senão ... .
2. Como é que se escrevem condições?No problema: d > 0 e d = 0.
• Comecemos pelo caso das condições simples, que podem seravaliadas comum só operador relacional
22 Março 2018 13Instrução IF; Matrizes
Operadores relacionais
• Operadores relacionais:== (igual) ~= ou !=(diferente: til igual ou exclamação igual)> (maior) >= (maior ou igual)< (menor) <= (menor ou igual)
• O resultado de uma operação relacional é um valor lógico (verdade oufalso)
Exemplo: x == 10 é uma expressão lógica que vale:• 1 (verdade), se o valor da variável x for (igual a) 10;• 0 (falso), se o valor da variável x não for (igual a) 10.
• Nota: Em Matlab, todo o valor diferente de 0 é consideradologicamente como verdade.
22 Março 2018 14Instrução IF; Matrizes
Constantes e operadores lógicos
• Funções que retornam as constantes lógicas:true (vale 1) false (vale 0)
As condições podem ser mais complexas e exigir a utilização de:
• Operadores lógicos:&& (conjunção, “e”) || (disjunção, “ou”)~ ou ! (negação: til ou exclamação)
~ tem precedência sobre && e ||;&& tem precedência sobre ||
22 Março 2018 15Instrução IF; Matrizes
Constantes e operadores lógicos
Exemplos:
• x >= 10 && x < 20 é uma expressão lógica que vale:§ 1, se o valor da variável x pertence ao intervalo [10,20[;§ 0, se o valor da variável x não pertence a [10,20[.
• x < 10 || x >= 20 é uma expressão lógica que vale:§ 1, se o valor da variável x não pertence ao intervalo [10,20[;§ 0, se o valor da variável x pertence a [10,20[.
22 Março 2018 16Instrução IF; Matrizes
O operador && (conjunção) [1]
• Operacionalmente:expr1 && expr2
1. A expressão expr1 é sempre avaliada.2. Se o valor de expr1 for 1 (verdade), a expr2 é avaliada (porque ainda
não se sabe o resultado da conjunção):1 ∧ 1 vale 1 1 ∧ 0 vale 0
• Se o valor de expr1 for 0 (falso), a expr2 não é avaliada (porque já sesabe o resultado da conjunção, que é 0):
0 ∧ 1 vale 0 0 ∧ 0 vale 0
22 Março 2018 17Instrução IF; Matrizes
O operador || (disjunção)
• Operacionalmente:expr1 || expr2
A expressão expr1 é sempre avaliada.• Se o valor de expr1 for 0 (falso), a expr2 é avaliada (porque ainda não
se sabe o resultado da disjunção):0� 1 vale 1 0 � 0 vale 0
• Se o valor de expr1 for 1 (verdadeiro), a expr2 não é avaliada (porquejá se sabe o resultado da disjunção, que é 1):
1� 1 vale 1 1 � 0 vale 1
22 Março 2018 18Instrução IF; Matrizes
O operador && (conjunção) [2]
Exemplos:
22 Março 2018 19
>> x = 15;>> y = 20;>> x >= 12 && y < 15 ans = 0>> x >= 25 || y < 25 ans = 1>> clear y>> x > 25 && y < 15 ans = 0>> x > 25 || y < 15 error: 'y' undefined near line 1 column 12>> x > 12 && y < 15 error: 'y' undefined near line 1 column 12
Instrução IF; Matrizes
Equação do 2º Grau - Função
22 Março 2018 20
function raizes = equacao2( a, b, c )% raizes = equacao2( a, b, c )% Calcula as raizes da equação% ax^2 + bx + c = 0
d = b^2 – 4*a*c;if d < 0
raizes = [];elseif d == 0
raizes = [-b/(2*a)];else
raizes = [(-b + sqrt(d))/(2*a),(-b - sqrt(d))/(2*a)];
endend
ax2 + bx +c = 0d = b2 – 4acse d < 0 então
não há raízessenãose d = 0 então
uma só raíz: -b / 2ªsenão
duas raízes: (-b ± sqrt(d)) / 2a
• Podemos agora implementar a função para calcular as raízes da equação do 2º grau, para todos os casos:
Instrução IF; Matrizes
Equação do 2º Grau - Teste
Podemos ainda fazer alguns testes, com valores conhecidos, para avaliara correcção da implementação:
22 Março 2018 21
>> equacao2( 1, 0, 0 )ans = 0>> equacao2( 1, 1, 0 )ans = 0
-1>> equacao2( 1, 1, 4 )ans = [](0x0)
x2 = 0
x2 + x = 0
x2 + x + 4 = 0
Instrução IF; Matrizes
Problema da Pauta de ICE
• Problema: Faça um programa que produz a pauta com as notas finaisde ICE por avaliação contínua.
§ O programa recebe, por cada aluno, o número e as notas dos doisexercícios, do projecto e dos dois testes do aluno (E1, E2, P, T1 eT2), arredondadas às décimas.
§ Por cada aluno, a pauta tem o número e a nota final por avaliaçãocontínua do aluno.
§ Os dados de entrada e os resultados estão em tabelas.
22 Março 2018 22Instrução IF; Matrizes
Resolução – Problema [1]
• Os dados de entrada e os resultados estão em tabelas, do tipo:
• Uma primeira questão se coloca: como representar tabelas emMatlab?
§ Resposta: em matrizes
22 Março 2018 23
Notas: Pauta:
Instrução IF; Matrizes
Implementação – Que questões?
1. Como é que se executam blocos de instruções distintos conformeseja o resultado da avaliação de uma condição?No problema: se ... então ... senão ... .
2. Como é que se escrevem condições?No problema: CompL >= 8.5 e CompTP >= 8.5.
3. Como é que se manipula uma tabela?No problema: as tabelas Notas e Pauta.
22 Março 2018 24Instrução IF; Matrizes
Matrizes [1]
• Uma matriz é uma estrutura de dados que guarda um número pré-definido de dados do mesmo tipo (tal como um vetor).
• Uma matriz corresponde a uma sequência de posições de memória (talcomo um vetor). Essas posições de memória estão agrupadas como numatabela com L linhas e C colunas.
• Acede-se a uma posição da matriz através de dois índices, que sãointeiros positivos. O primeiro índice (entre 1 e L) indica a linha; o segundoíndice (entre 1 e C) indica a coluna.
-3.5 5 -18 6 6.7 -20 0
41 89 3.1 3.1 0 44 7
22 Março 2018 25Instrução IF; Matrizes
Matrizes – Criação
• Uma matriz pode ser criada através da enumeração de todos os seuselementos.
§ Os elementos de cada linha são separados por vírgulas ou espaços.
§ As diferentes linhas são separadas por ponto e vírgula.
• Exemplo:
22 Março 2018 26
>> M = [1 2 3 4; 5,6,7,8; 9 10,11,12]M =
1 2 3 45 6 7 89 10 11 12
>>
Instrução IF; Matrizes
Matrizes – Funções de criação
• Tal como no caso dos vetores uma matriz pode ser inicializada a zerosou uns com as funções
M = zeros(nºLinhas, nºColunas)
M = ones(nºLinhas, nºColunas)
§ em que M é uma matriz de nºLinhas por nºColunas, criada comzeros ou uns em todas as posições
• Em Matlab, um vetor é uma matriz!
• Assim as funções de inicialização de vetores
zeros(1, c) e ones(1, c) ,
• criam de facto matrizes com 1 linha e c colunas.
22 Março 2018 27Instrução IF; Matrizes
Matrizes – Funções de Informação
• O tamanho de cada uma das dimensões de uma matriz M pode serobtido pela função size
nl = size(M, 1) % nl é o nº de linhas de Mnc= size(M, 2) % nc é o nº de linhas de M[ nl, nc] = size(M) % idem para nl e nc
22 Março 2018 28
>> M = [1 2 3 4; 5,6,7,8; 9 10,11,12];>> nl = size(M,1), nc = size(M,2)nl = 3nc = 4>> size(M)ans =
3 4>> [a, b] = size(M)a = 3b = 4>>
Instrução IF; Matrizes
Matrizes – Acesso a uma posição
• Os elementos de uma matriz vetor podem ser acedidosindividualmente,
• Sintaxe: nomeMatriz( expressão1, expressão2 )§ O valor da expressão1 é um inteiro positivo inferior ou igual ao
numero de linhas da matriz, i.e. size(nomeMatriz, 1).§ O valor da expressão2 é um inteiro positivo inferior ou igual ao
número de colunas da matriz, i.e. size(nomeMatriz, 2).
• Exemplo:
22 Março 2018 29
>> M = [1 2 3 4; 5,6,7,8; 9 10,11,12];>> a = M(2,3)a = 7>>
Instrução IF; Matrizes
Matrizes - Acesso & criação
• Em Matlab, uma sub-matriz pode ser obtido de outra através de um doisvetores que indexam as linhas e colunas a extrair.
• É muito comum usarem-se sequências para indexação de vetores, enúmeros para linhas/colunas “simples”.§ Nota: O identificador end representa até ao fim no devido contexto
22 Março 2018 30
>> M = [1 2 3 4; 5,6,7,8; 9 10,11,12];>> M(1:2, 3:4) ans =
3 47 8
>> X = M(2:end, 4) ans =
812
>>Instrução IF; Matrizes
Matrizes – Acesso a uma posição
• O acesso a uma ou mais posições pode ser feita quer para leitura querpara escrita.
• Exemplos:
22 Março 2018 31
>> M = [1 2 3 4; 5,6,7,8; 9 10,11,12];>> M(1,3) = 0 M =
1 2 0 45 6 7 89 10 11 12
>> M(2:3, 3:end) = [20 21 ; 22 23]M =
1 2 0 45 6 20 219 10 22 23
Instrução IF; Matrizes
Matrizes– Erros Típico de Acesso
• Tal como nos vetores, não é possível ler um valor de uma posiçãoinexistente de uma matriz.
22 Março 2018 32
>> M = [1 2 3 4; 5,6,7,8; 9 10,11,12];>> M(4,4) % indice maior que o número de linhas ???error: A(I,J): row index out of bounds; value 4 out of
bound 3>> M(3,-1) % indice de coluna negativo ???error: subscript indices must be either positive integers
less than 2^31 or logicals>> V(1.5, 3.2) % indice não inteiro ???error: subscript indices must be either positive integers
less than 2^31 or logicals
Instrução IF; Matrizes
Matlab – Escrita numa posição
• Tal como nos vetores, as matrizes podem “crescer” se se atribuiremvalores a posições não existentes.
• Eficiência: Como nos vetores, as matrizes devem ser criada com o nºde linhas e o nº de colunas necessários para que nunca se escrevanuma posição inexistente.
22 Março 2018 33
>> M = [1 2 3 4; 5,6,7,8; 9 10,11,12];>> M(5,7) = 33 M =
1 2 3 4 0 0 05 6 7 8 0 0 09 10 11 12 0 0 00 0 0 0 0 0 00 0 0 0 0 0 33
>>
Instrução IF; Matrizes
Resolução – Problema [1]
Problema: Faça um programa que produz a pauta com as notas finais deICE por avaliação contínua.
1. Compreender totalmente o problema.• Os dados de entrada e os resultados estão em tabelas:
22 Março 2018 34
Notas: Pauta:
Instrução IF; Matrizes
Resolução – Problema [2]
1. Compreender totalmente o problema.
• Seja CompL = 20% E1 + 20% E2 + 60% P (arredondada às décimas)
• Se não tem frequência (CompL < 8.5), NF = −1.
• Se tem frequência (CompL ≥ 8.5)
§ Seja CompTP = (T1 + T2)/2 (arredondada às décimas)
§ Se CompTP < 8.5,
« NF = CompTP (arredondada às unidades).
§ Se CompTP ≥ 8.5,
« NF = 0.6 CompTP + 0.4 CompL (arredondada às unidades).
22 Março 2018 35Instrução IF; Matrizes
Resolução – Problema [3]
2. Caracterizar o problema.
• Problema: Pauta de ICE.
• Entrada: Uma tabela de números, com uma linha por aluno e seis colunas (nº, E1, E2, P, T1, T2).
• Saída: Uma tabela de números, com uma linha por aluno e duas colunas (nº e NF).
3. Generalizar o problema (sempre que for possível).
• Não é possível generalizar este problema.
22 Março 2018 36Instrução IF; Matrizes
Resolução – Algoritmo [1]
4. Desenhar o algoritmo para resolver o problema.a) Conceber o algoritmo, decompondo o problema em sub-problemas.• Como calcular a pauta de ICE com a tabela E (L×6)?
§ Cria-se a tabela Pauta (L×2).§ Para cada linha i de Notas (abreviada por N abaixo)
« Pautai1 ç Ni1; % copia-se o nº de aluno« Pautai2 ç Nota final de ICE (Ni2, Ni3, Ni4, Ni5, Ni6).
22 Março 2018 37
è
Notas: Pauta:
Instrução IF; Matrizes
Resolução – Algoritmo [2]
b) Identificar, caracterizar e generalizar cada sub-problema.• Problema: nota final de ICE.• Entrada: vetor (com E1, E2, P, T1, T2).• Saída: a nota final de ICE.
22 Março 2018 38Instrução IF; Matrizes
Resolução – Algoritmo [3]
c) Conceber o algoritmo, assumindo que os sub-problemas estão
resolvidos.
• Pauta de ICE E (L×6) :
§ Cria-se a tabela Pauta (L×2).
§ Para cada linha i de N (Notas):
« Pautai1 ç Ni1;
« Pautai2 ç Nota final de ICE (vetor) em que
– Vetor = [Ni2, Ni3, Ni4, Ni5, Ni6).
22 Março 2018 39
è
Notas: Pauta:
Instrução IF; Matrizes
Resolução – Algoritmo [4]
5. Para cada sub-problema, desenhar o algoritmo para o resolver.Nota final de ICE (vetor com E1, E2, P, T1, T2) :
(no próximo slide)
22 Março 2018 40Instrução IF; Matrizes
Resolução – Algoritmo [5]
• Nota final de ICE (vetor com E1, E2, P, T1, T2) :
CompL = 20% E1 + 20% E2 + 60% P (arredondada às décimas)
se CompL< 8.5 entãonotaFinal ç −1
senãocompTP ç (T1 + T2)/2 (arredondada às décimas)
se compTP < 8.5 entãonotaFinal ç round(compTP)
senãocompL ç Arredonda às décimas( compL)
notaFinal ç round(0.6*compTP + 0.4*compL)
22 Março 2018 41Instrução IF; Matrizes
Resolução – Algoritmo [6]
5. Para cada sub-problema, identificar, caracterizar e generalizar cadasub-sub-problema e desenhar o algoritmo para o resolver.
• Problema: Arredonda às décimas.
• Entrada: real valor.
• Saída: o valor arredondado às décimas.
Arredonda às décimas (valor) :
valorArredondado ç round(valor * 10) / 10
22 Março 2018 42Instrução IF; Matrizes
Resolução – Programa
6. Para cada sub-problema (começando pelos mais simples),implementar o respetivo algoritmo e testar o “sub-programa”.§ Arredonda às décimas (valor)§ Nota final de ICE (vetor com E1, E2, P, T1, T2)
7. Implementar o algoritmo que resolve o problema e testar oprograma pedido.§ Pauta de ICE (E)
22 Março 2018 43Instrução IF; Matrizes
Resolução – Programa [1]
• Comecemos pelas funções mais simples
• que devemos testar, antes de utilizar
22 Março 2018 44
function res = arredondaDec(valor)% res = arredondaDec(valor)% Arredonda as decimas o valor real dado.
res = round(valor * 10) / 10;end
>> arredondaDec(5.3000001)ans = 5.3000>> arredondaDec(2.4500001)ans = 2.5000>>
Instrução IF; Matrizes
Resolução – Programa [2]
22 Março 2018 45
• Passemos agora à implementação da função notaFinalICE, começandopela sua documentação
function res = notaFinalICE(notasAC)% res = notaFinalICE(notas)% Calcula a nota final de ICE por avaliacao continua.% O vetor notasAC tem as notas dos dois exercicios,% do trabalho e dos dois testes:% (exer1, exer2, trab, teste1, teste2).% Sejam:% compTP = 0.4 teste1 + 0.6 teste2 e% compL = (trab1 + trab2) / 2,% ambas arredondadas `as decimas.
...end
Instrução IF; Matrizes
Resolução – Programa [2]
22 Março 2018 46
• E terminando a documentação antes de passar para o código.
function res = notaFinalICE(notasAC)% pauta = notaFinalICE(notas)% ...% O resultado é:% −1,% se o aluno nao tem frequencia;% compTP (arredondada as unidades),% se o aluno tem frequencia e compTP < 8.5;% 60% compTP + 40% compL (arredondada as unidades),% nos restantes casos.
...end
Instrução IF; Matrizes
Resolução – Programa [4]
22 Março 2018 47
• E agora o código da função notaFinalICE, condicionada pela obtençãoou não de frequência.
• Começando no caso do aluno não ter frequência
function res = notaFinalICE(notasAC)% ...
notaL = 0.2*notasAC(1)+0.2*notasAC(2)+0.6*notasAC(3);compL = arredondaDec(notaL);if compL < 8.5
% O aluno nao tem frequencia.res = -1;
else% O aluno tem frequencia....
endend
Instrução IF; Matrizes
Resolução – Programa [5]
22 Março 2018 48
• E acabando no caso em que o aluno obtém frequência
function res = notaFinalICE(notasAC)% ...
...else
% O aluno tem frequencianotaTP = (notasAC(4)+notasAC(5))/2;compTP = arredondaDec(notaTP);if compTP < 8.5
res = round(compTP);else
res = round(0.6 * compTP + 0.4 * compL);end
endend
Instrução IF; Matrizes
Resolução – Teste Unitário
• A função notaFinalICE pode ser testada para os vários casos
22 Março 2018 49
>> notaFinalICE([15.5, 16.4, 18.0, 15.7, 14.8])notaL = 17.18notaTP = 15.25compTP = 15.3 % nota teorico-pratica arredondadacompL = 17.2 % nota laboratorial arredondadares = 16 % arredondademnto de 16.06>> >> notaFinalICE([12.3, 9.2, 9.4, 8.7, 7.2])notaL = 9.94notaTP = 7.95compTP = 8 % nota teorico-pratica insuficiente!res = 8>> notaFinalICE([8.0, 4.5, 7.2, 8.1, 10.2])notaL = 6.82 % não tem frequencia !res = -1>>
Instrução IF; Matrizes
Resolução – Programa [6]
22 Março 2018 50
function pauta = pautaICE(notasAC)% pauta = pautaICE(notasAC)% Produz a pauta de ICE por avaliacao continua.% A matriz notasAC tem uma linha por aluno, com% o numero e as notas dos dois exercícios% do trabalhos e dos dois testes do aluno% (numero, exer1, exer2, trab, teste1, teste2).% A matriz pauta tem uma linha por aluno, com% o numero e a nota final por avaliacao continua% do aluno (numero, notaFinal)
...end
• Finalmente a função principal, pautaICE, começando pela suadocumentação
Instrução IF; Matrizes
• E terminando no código da função principal, pautaICE, que utiliza asfunções implementadas anteriormente
Resolução – Programa [7]
22 Março 2018 51
function pauta = pautaICE(notasAC)% ...
numAlunos = size(notasAC, 1);pauta = zeros(numAlunos,2);for i = 1:numAlunos
pauta(i, 1) = notasAC(i, 1);notasAluno = notasAC(i, 2 : end);pauta(i, 2) = notaFinalICE(notasAluno);
endend
Instrução IF; Matrizes
Resolução – Teste Final
• A função pautaICE pode ser testada para os vários casos.
• Para isso basta criar uma matriz de entrada com as notas testadasanteriormente e chamar a função pautaICE com esse argumento. Porexemplo:
22 Março 2018 52
>> N = zeros(2,6);>> N(1,:) = [58322, 15.5, 16.4, 18.0, 15.7, 14.8];>> N(2:3,:) = [57413, 12.3, 9.2, 9.4, 8.7, 7.2;
55064, 8.0, 4.5, 7.2, 8.1, 10.2];>> pauta = pautaICE(N)pauta =
58322 1657413 855064 -1
>>
Instrução IF; Matrizes
Operações sobre Matrizes
• Com o o nome indica, Matlab (MATrix LABoratory) é uma linguagemespecialmente desenhada para cálculo matricial. Neste sentido, emMatlab
§ Todas as variáveis numéricas são implementadas como matrizes.
« Em particular, números (escalares) correspondem a matrizes de uma linhapor uma coluna.
§ Todas as operações definidas na álgebra matricial são suportadasem Matlab.
§ Em particular são suportadas operações« Operações algébricas entre matrizes (+, -, *, e \ e /)« Operações algébricas entre matrizes e escalares (as mesmas e ^)« Operações ponto a ponto entre matrizes.
22 Março 2018 53Instrução IF; Matrizes
Operações sobre Matrizes
• As operações algébricas entre matrizes (e vectores) incluem§ a soma e diferença de matrizes;§ o produto de matrizes e vetores (produto interno);§ divisão entre matrizes (produto pela inversa de uma matriz).
• Exemplos:
22 Março 2018 54
>> V = [1 2 3];>> M = [3 1 2; 4 5 6; 7,0,9]>> V * Mans = 32 11 41>> M * Verror: operator *:nonconformant arguments (op1 is 3x3,op2 is 1x3)>> M * V’ % V’ é a transposta de Vans = 11
3234
>>
Instrução IF; Matrizes
Operações sobre Matrizes
• Em Matlab, as funções pre-definidas estão (normalmente) preparadaspara reveber vetores/matrizes como argumentos, distribuindo asfunções pelos elementos individuias e retornando os resultados naestrutura apropriada.
22 Março 2018 55
>> raiz = sqrt([1:3;4:6;7:9])raiz =
1.0000 1.4142 1.7321 2.0000 2.2361 2.4495 2.6458 2.8284 3.0000
>> AngG = [0 15 30 45 60];>> AngR = Ang * 180/piAngR =
0.00000 0.26180 0.52360 0.78540 1.04720 >> tg = tan(AngR)tg =
0.0000e+00 2.6795e-01 5.7735e-01 1.0000e+00 1.7321e+00>>
Instrução IF; Matrizes
Operações sobre Matrizes
• Problema:
a. Determinar o comprimento do vetor (3D) delimitado pelos
pontos P1 = (3,5,7) e P2 = (4,0.3) .
b. Que ângulo faz esse vetor com o vetor (2,5,7)
22 Março 2018 56
>> P1 = [3 6 7];>> P2 = [4,5,8];>> V = P2 – P1V1 = 1 -1 1>> c = sqrt(V*V�) % raiz quadrada do produto internoc = 1.7321 % sqrt(3)>> V2 = [2,4,7];>> cosv1v2 = V*V2’ / (sqrt(V*V’) * sqrt(V*V’))cosv1v2 = 0.34752>> ang = acos(cosv1v2) * 180 / pi % convertido em grausang = 69.664>>
Instrução IF; Matrizes
Operações sobre Matrizes
• Problema:§ Resolver o sistema de 2 equações a 2 incógnitas§ Em termos algébricos AX = B com
« Portanto X = A-1 B
22 Março 2018 57
>> A = [2 4; 3 -2];>> B = [8; 4]>> Ainv = A^(-1) % ou Ainv = inv(A)Ainv = 0.12500 0.25000
0.18750 -0.12500>> X = Ainv * BX = 2
1>> Y = A \ B % Multiplicação pela inversa (à esquerda)Y = 2
1>> Z = B / A % Multiplicação pela inversa (à direita)error: operator /: nonconformant arguments (op1 is 2x1, op2 is
2x2)
2x + 4y = 83x – 2y = 4
A = 2 4 e B = 8 3 -2 4
Instrução IF; Matrizes
Operações sobre Matrizes
• Problema:§ Quais as posições do vetor V em que ocorre o valor a.
§ Exemplo:
• Desafio:§ Escrever uma função que devolva as posições de um vetor V em
que ocorre o valor a.22 Março 2018 58
>> V = [3 5 7 -2 9 -1 0 -5 7 8 -6 4];>> a = 7>> V == aans =
0 0 1 0 0 0 0 0 1 0 0 0>> n = length(V)n = 12>> pos = (1:n) .* (V == a) % atenção: produto ponto a ponto
0 0 3 0 0 0 0 0 9 0 0 0>>
Instrução IF; Matrizes
• Physical Modeling in MATLAB
• Capítulo 4
• Consultar o manual Octave
• Matrizes (1.2)
• If (10.1)
Para estudar esta Aula
22 Março 2018 59Instrução IF; Matrizes