Informática para Ciências e Engenharias (B) 2016/17. Teórica 3

Documentos relacionados
Informá(ca para as Ciências e Engenharias Versão : C (Engenharia Civil) Pedro Barahona 2016 / 17

Informática para Ciências e Engenharias (B) 2015/16. Teórica 3

Informática para Ciências e Engenharias (B) 2015/16. Teórica 9

Informá(ca para as Ciências e Engenharias Versão : C (Engenharia Civil) Pedro Barahona 2018 / 19

Informática para Ciências e Engenharias (B) 2016/17. Teórica 2

Informática para Ciências e Engenharias (B) 2015/16. Teórica 5

Informática para Ciências e Engenharias 2013/14. Teórica 3

Informática para Ciências e Engenharias (B) 2015/16. Teórica 2

Informática para Ciências e Engenharias (B) 2015/16. Teórica 4

Informá(ca para as Ciências e Engenharias Versão : C (Engenharia Civil) Aula 10. Pedro Barahona 2016 / 17

Informática para as Ciências e Engenharias Versão : C (Engenharia Civil) Aula 10. Pedro Barahona 2018 / 19

Informática para Ciências e Engenharias (B) 2015/16. Teórica 11

Informática para Ciências e Engenharias (B) 2015/16. Teórica 8

Informática para as Ciências e Engenharias Versão : C (Engenharia Civil) Pedro Barahona 2017 / 18

ANÁLISE COMPLEXA E EQUAÇÕES DIFERENCIAIS TESTE 2A - 15 DE JUNHO DE DAS 11H. Apresente e justifique todos os cálculos. dy dt = y t t ; y(1) = 1.

Informática para Ciências e Engenharias (B) 2016/17. Teórica 4

Breve resolução do e-fólio B

Na figura abaixo, a balança está em equilíbrio e as três melancias têm o mesmo peso. Nessas condições, qual é o peso (em kg) de cada melancia?

Informá(ca para as Ciências e Engenharias Versão : C (Engenharia Civil) Pedro Barahona 2016 / 17

Informá(ca para as Ciências e Engenharias Versão : C (Engenharia Civil) Pedro Barahona 2016 / 17

Podemos utilizar o cálculo do determinante para nos auxiliar a encontrar a inversa de uma matriz, como veremos à seguir.

Análise matricial de estruturas não-lineares usando o Método de Newton.

A linguagem matemática

ANÁLISE MATEMÁTICA IV FICHA SUPLEMENTAR 5 EQUAÇÕES DIFERENCIAIS PARCIAIS E TRANSFORMADA DE LAPLACE

Emerson Marcos Furtado

Informática para Ciências e Engenharias (B) 2016/17. Teórica 1

A linguagem matemática

Informática para Ciências e Engenharias (B) 2015/16. Teórica 1

Um dos conceitos mais utilizados em Matemática

Triângulos especiais

Triângulos. O triângulo é uma figura geométrica muito. Para pensar. Nossa aula

Método dos Deslocamentos

Calculando áreas. Após terem sido furadas, qual delas possui maior área?

Informática para Ciências e Engenharias (B) 2016/17. Teórica 10

Calculando áreas. Após terem sido furadas, qual delas possui maior área?

O triângulo é uma figura geométrica muito. Você já sabe que o triângulo é uma figura geométrica de:

Detecção de Infração em faixa de pedestres sem semáforos utilizando visão computacional e redes neurais

Informá(ca para as Ciências e Engenharias Versão : C (Engenharia Civil) Aula 8. Pedro Barahona 2016 / 17

Operando com potências

As combinações. combinatória que envolviam o princípio multiplicativo e as permutações.

Informática para Ciências e Engenharias (B) 2015/16. Teórica 6

Operando com potências

INE Fundamentos de Matemática Discreta para a Computação

Exercícios de Programação e Computação para Arquitectura. António Menezes Leitão

FORMAÇÃO CONTINUADA EM MATEMÁTICA FUNDAÇÃO CECIERJ/CONSÓRCIO CEDERJ

Recordando operações

Informática para Ciências e Engenharias 2012/13. Teórica 9

3 Estática das estruturas planas

e rápido para estimar a potência. do rotor (i.e. seleccionar a sua área) para um

Informática para Ciências e Engenharias 2014/15. Teórica 4

Física IV Poli Engenharia Elétrica: 15ª Aula (07/10/2014)

PROGRAMAÇÃO ORIENTADA A OBJETOS: Introdução

Computação e Linguagem de Programação

8.5 Cálculo de indutância e densidade de energia magnética

Recordando operações

Informática para Ciências e Engenharias (B) 2015/16. Teórica 7

Perfis Importantes no Scrum

Informática para Ciências e Engenharias 2014/15. Teórica 9

Você já percebeu que os gráficos são cada vez. Relatórios de empresas Análises governamentais Relatórios de pesquisas Balanços financeiros

ÇÃO COM OBJECTOS PROGRAMAÇÃ. Programação com Objectos. Programação com Objectos INSTRUÇÕES DE CONTROLO ÍNDICE. Nuno Mamede

Sist. Lin. I. Sistemas Lineares Introdução Definições Geometria Resolução Equivalência Eliminação de Gauss Após Escalonamento. Sist. Lin.

Andson M. Balieiro, Kelvin L. Dias {amb4,

RAZÕES TRIGONOMÉTRICAS NO TRIÂNGULO RETÂNGULO

Informática para Ciências e Engenharias (B) 2016/17. Teórica 7

Matemática A Semi-Extensivo V. 1 Exercícios

Computação e Linguagem de Programação

Introdução ao MatLab Princípios de Programação

Computação e Programação Exame Época de recurso

Estruturas de Dados em Python

A Análise de Causa Raiz pode ser uma das ferramentas mais importantes que sua organização pode ter nas mãos.

Informática para Ciências e Engenharias (B) 2015/16. Teórica 10

9 Proposta de dimensionamento de elementos de concreto armado à flexão simples em situação de incêndio

5.1. Simulações para o Campo Magnético Gerado por um Ímã Permanente.

Parábola. Sumário Parábola com vértice V = (x o, y o ) e reta focal. paralela ao eixo OX... 7

MOVIMENTO DE ROTAÇÃO: O ROTOR RÍGIDO

Informática para as Ciências e Engenharias - 2º semestre 2016/2017

Num determinado jogo de fichas, os valores

Informática para Ciências e Engenharias 2013/14. Teórica 7

Informática para Ciências e Engenharias (C) Trabalho Prático /18

Informática para as Ciências e Engenharias - 2º semestre 2016/2017

Camada de Transporte

Nome: Número: Computação e Programação Mestrado Integrado em Engenharia Civil Licenciatura Bolonha em Engenharia Geológica e de Minas

Áreas de Figuras Planas: Resultados Básicos - Parte 1. Nono Ano. Autor: Prof. Ulisses Lima Parente Revisor: Prof. Antonio Caminha M.

Física III para a Poli

2. Complexidade de Algoritmos

Informática para Ciências e Engenharias-B 2017/18

Informática para Ciências e Engenharias 2014/15. Teórica 7

Na natureza nada se cria, nada se perde, tudo se transforma

Pedro Vasconcelos DCC/FCUP. Programação Funcional 8 a Aula Listas infinitas

Introdução ao MATLAB 6.1

Um algoritmo deve conter passos não ambíguos, executáveis e que sejam terminados quando seguidos.

Computação e Programação Exame Época de recurso

CIRCUITOS MAGNÉTICOS LINEARES E NÃO LINEARES

XXVII Olimpíada Brasileira de Matemática GABARITO Segunda Fase

GRUPO X GRUPO DE ESTUDO DE SOBRETENSÕES E COORDENAÇÃO DE ISOLAMENTO - GSC

Aplicação do Teorema de Pitágoras

Transcrição:

Informática para Ciências e Engenharias (B) 2016/17 Teórica 3

Na aua de hoje Vetores. Cicos FOR. Percursos em vetores. Exempos 22 Março 2017 Vetores; cicos FOR 2

Probema dos Contaminantes Para avaiar a quaidade da água de um rio foi medida a concentração de Pb em 50 amostras. c 1, c 2, c 3,..., c 50 Probema: Desenvover um programa para cacuar a concentração média de Pb nas amostras. 22 Março 2017 Vetores; cicos FOR 3

Resoução Probema [1] 1. Compreender totamente o probema descrito no enunciado. 2. Caracterizar o probema. Probema: Cácuo de uma média. Entrada: reais c 1,..., c 50. Saída: a média de c 1,..., c 50. µ = 1 50 50 c i i=1 22 Março 2017 Vetores; cicos FOR 4

Resoução Probema [2] 3. Generaizar o probema (sempre que possíve) Probema: Cácuo de uma média de n vaores. Entrada: reais c 1,..., c n (n 1) Saída: a média de c 1,..., c n. µ = 1 n n c i i=1 22 Março 2017 Vetores; cicos FOR 5

Resoução Agoritmo [1] 4. Desenhar o agoritmo para resover o probema. a. Conceber o agoritmo, decompondo o probema em subprobemas (se necessário). Como cacuar a média de c 1,..., c n? Somando os vaores c 1,..., c n e dividindo peo seu número. b. Identificar, caracterizar e generaizar cada sub-probema. Não há sub-probemas. 22 Março 2017 Vetores; cicos FOR 6

Resoução Agoritmo [2] c. Conceber o agoritmo, assumindo que os sub-probemas estão resovidos. Média (c 1,..., c n ) : µ = 1 n n c i i=1 Ideia base: impementa-se uma soma de n parceas como uma sequência de n somas de duas parceas, usando-se sempre o resutado anterior. 22 Março 2017 Vetores; cicos FOR 7

Resoução Agoritmo [3] Cácuo do somatório Exempo para n = 5: soma = 0 µ = 1 n n c i i=1 soma = soma + c 1 % soma tem c 1 soma = soma + c 2 % soma tem (c 1 ) + c 2 soma = soma + c 3 % soma tem (c 1 +c 2 ) + c 3 soma = soma + c 4 % soma tem (c 1 +c 2 +c 3 ) + c 4 soma = soma + c 5 % soma tem (c 1 +c 2 +c 3 +c 2 ) + c 5 22 Março 2017 Vetores; cicos FOR 8

Resoução Programa 5. Para cada sub-probema, desenhar o agoritmo para o resover. Não há sub-probemas. 6. Para cada sub-probema (começando peos mais simpes), impementar o respetivo agoritmo e testar o sub-programa. Não há sub-probemas. 7. Impementar o agoritmo que resove o probema e testar o programa pedido. Média (c 1,..., c n ) 22 Março 2017 Vetores; cicos FOR 9

Impementação Que questões? Como é que se guarda um número (finito mas) arbitrário de vaores (do mesmo tipo)? No probema: os reais c 1,..., c n, para quaquer n Como é que se pode executar uma instrução um número arbitrário (mas finito) de vezes? No probema: a atribuição no cácuo de um somatório, para quaquer n. 22 Março 2017 Vetores; cicos FOR 10

Na aua de hoje Vetores. Cicos FOR. Percursos em vetores. Exempos 22 Março 2017 Vetores; cicos FOR 11

Impementação Que questões? Como é que se guarda um número (finito mas) arbitrário de vaores (do mesmo tipo)? No probema: os reais c 1,..., c n, para quaquer n Resposta: Num vetor : [ c 1 c 2... c n ] Mais gera: como usar vetores em Matab? 22 Março 2017 Vetores; cicos FOR 12

Vetores em Informática Um vetor é uma estrutura de dados que guarda um número pré-definido de dados do mesmo tipo. Um vetor corresponde a uma sequência de posições de memória. A sequência tem um comprimento fixo. Acede-se a uma posição do vetor através de um índice, que é um inteiro positivo (1, 2,..., comprimento ). V: -5 18 8-3.5-5 0 9 1 2 3 4 5 6 7 22 Março 2017 Vetores; cicos FOR 13

Vetores Criação Sintaxe: [ ista de vaores ] Os vaores na ista podem ser separados por vírguas V: -5 18 8-3.5-5 0 9 1 2 3 4 5 6 7 [-5, 18, 8, -3.5, -5, 0, 9]... ou por espaços [-5 18 8-3.5-5 0 9] Normamente, o vetor é atribuído a uma variáve quando é criado (o nome da variáve é o nome do vetor) V = [-5 18 8-3.5-5 0 9] 22 Março 2017 Vetores; cicos FOR 14

Vetores Acesso a uma posição Os eementos do vetor podem ser acedidos individuamente Sintaxe: nomevetor( expressão ) O vaor da expressão deve ser um inteiro positivo, inferior ou igua ao comprimento do vetor. A função ength permite obter o comprimento de um vetor Exempos: >> V = [-5, 18, 8, -3.5, -5, 0, 9]; >> V(3) ans = 8 >> ength(v) ans = 7 >> 22 Março 2017 Vetores; cicos FOR 15

Vetores Acesso a uma posição Os acessos podem ser feitos não só para para eitura dos eementos de um vetor, mas também para atribuição de novos vaores a esses eementos Exempos: >> V = [-5, 18, 8, -3.5, -5, 0, 9] -5 18 8-3.5-5 0 9 >> V(6) = 2-5 18 8-3.5-5 2 9 >> p = 1; >> V(p+2) = V( ength(v) ) % A posição 3 fica com 9. -5 18 9-3.5-5 2 9 >> V(p) = V(p+4)^2; % A posição 1 fica com 25. >> V(1) ans = 25 >> 22 Março 2017 Vetores; cicos FOR 16

Vetores Erros Típico de Acesso Quando o índice indicado não é um inteiro positivo, inferior ou igua ao comprimento do vetor, o interpretador reporta um erro. Exempos: >> V(20) % indice maior que o comprimento??? error: A(I): index out of bounds; vaue 20 out of bound 7 >> V(-4) % indice negativo??? error: subscript indices must be either positive integers ess than 2^31 or ogicas >> V(sqrt(2)) % indice não inteiro??? error: subscript indices must be either positive integers ess than 2^31 or ogicas 22 Março 2017 Vetores; cicos FOR 17

Vetores Erros Típico de Acesso Quando o índice indicado não é um inteiro positivo, inferior ou igua ao comprimento do vetor, o interpretador reporta um erro. Exempos: Em Matab, apesar de não ser possíve er um eemento de uma posição de um vetor que não esteja definida, é possíve fazer crescer um vetor e escrever um eemento numa posição ainda não definida. Em Matab, são assim váidas as atribuições da forma: V(pos) = vaor, com pos > ength(v). 22 Março 2017 Vetores; cicos FOR 18

Matab Escrita numa posição Dada uma atribuição V(pos) = vaor (pos > ength(v)) o Matab 1. Cria um novo vetor com comprimento pos. 2. Copia os eementos de V para esse novo vetor, preservando as suas posições. 3. Escreve o vaor na posição pos. 4. Escreve zero nas posições {ength(v)+1,..., pos 1} do novo vetor. 5. O vetor V é destruído. 6. O novo vetor passa a chamar-se V. 20 Março 2017 ICE-c Aua 3: Vetores; cicos FOR 19

REGRA DE PROGRAMAÇÃO O código deve ser eficiente. Os vetores devem ser criados com o comprimento máximo necessário, para que não se escreva numa posição inexistente (o que obriga a refazer o vetor) Todas as exceções à regra anterior têm de ser muito bem justificadas. Para esse efeito podem ser usadas funções predefinidas para a criação de vetores com o comprimento desejado. 20 Março 2017 ICE-c Aua 3: Vetores; cicos FOR 20

Vetores Funções de criação V = zeros(1, nºposições) V é um vetor com comprimento nºposições, com zero em todas as posições. V = ones(1, nºposições) V é um vetor com comprimento nºposições, com um em todas as posições. 20 Março 2017 ICE-c Aua 3: Vetores; cicos FOR 21

Sequências de números [1] Sequências de inteiros podem ser representadas de forma mais compacta: Exempo: 2, 3, 4, 5 pode ser representada por: 2:5 Em Matab, uma sequência é um vetor, e pode ser definida compactamente com a seguinte Sintaxe: primeiroeemento : útimoeempossíve; ou primeiroeemento : passo : útimoeempossíve O vetor é constituído por todos os vaores da série aritmética, com razão igua ao passo começada peo primeiroeemento e cujo útimo eemento não utrapasse o útimoeempossíve. 20 Março 2017 ICE-c Aua 3: Vetores; cicos FOR 22

Sequências de números [1] Exempos: >> 1:5 % caso mais comum com passo = 1 ans = 1 2 3 4 5 >> 1:2:9 % passo maior que 1 ans = 1 3 5 7 9 >> 1:1.5:7 % passo não inteiro (eementos não inteiros) ans = 1.0 2.5 4.0 5.5 7.0 >> 1:2:6 % utimo eemento não atinge o imite ans = 1 3 5 >> 12:-2:6 % passo negativo ans = 12 10 8 6 >> 12:-2:-3 % igua mas utimo eemento não atinge o imite ans = 12 10 8 6 4 2 0-2 >> 20 Março 2017 ICE-c Aua 3: Vetores; cicos FOR 23

Vetores Acesso & criação Em Matab, um sub-vetor pode ser obtido de outro através de um terceiro vetor usado para indexar o anterior. Em particuar, é muito comum usarem-se sequências para indexação de vetores Nota: O identificador end representa até ao fim no respectivo contexto >> V = 11:2:24 % criacao de vetor V = 11 13 15 17 19 21 23 >> V(3:5) % indexacao por vetor/sequencia ans = 15 17 19 >> V(5:end) % indexacao por vetor/sequencia ans = 19 21 23 >> I = [1,4,6]; X = V(I) % vetor de indices >> X = 11 17 21 >> 20 Março 2017 ICE-c Aua 3: Vetores; cicos FOR 24

Questão 1 Como é que se guarda um número (finito mas) arbitrário de vaores (do mesmo tipo)? No probema: os reais c 1,..., c n, para quaquer n Resposta: Num vetor : [ c 1 c 2... c n ] A soução do probema será impementada pea função function res = media( vaores )! em que o parâmetro vaores receberá um vetor como argumento 20 Março 2017 ICE-c Aua 3: Vetores; cicos FOR 25

Na aua de hoje Vetores. Cicos FOR. Percursos em vetores. Exempos 20 Março 2017 ICE-c Aua 3: Vetores; cicos FOR 26

Impementação Que questões? Como é que se pode executar uma instrução um número arbitrário (mas finito) de vezes? No probema: a atribuição no cácuo de um somatório, para quaquer n. n v i = v 1 + v 2 +...+ v n i=1 Ideia base: impementa-se uma soma de n parceas como uma sequência de n somas de duas parceas, usando-se sempre o resutado anterior. 20 Março 2017 ICE-c Aua 3: Vetores; cicos FOR 27

Impementação Que questões? n v i = v 1 + v 2 +...+ v n i=1 soma = 0 soma = soma + v1 % soma tem v1 soma = soma + v2 % soma tem (v1) + v2 soma = soma + v3 % soma tem (v1+v2) + v3 etc 20 Março 2017 ICE-c Aua 3: Vetores; cicos FOR 28

Cico FOR Sintaxe: for variáve = sequência... instruções end Operacionamente: Se a variáve não existe, é criada. Para cada eemento E da sequência (pea ordem por que os eementos ocorrem): 1. variáve = E; 2. executam-se as instruções. 20 Março 2017 ICE-c Aua 3: Vetores; cicos FOR 29

Cico FOR Exempo [1] Exempos: >> V = [4 9 8, 2, 5] >> for i = 1:4 i end % mostra os indices i = 1 i = 2 i = 3 i = 4 >> for i = [1,4,2] V(i) end % mostra os vaores de V ans = 4 ans = 2 ans = 9 >> 20 Março 2017 ICE-c Aua 3: Vetores; cicos FOR 30

Cico FOR Exempo [2] Exempos: Cácuo de somas (e produtos) de vetores >> V = [4 9 8, 2, 5] >> soma = 0, for i = 1:3 soma = soma + V(i) end soma = 0 soma = 0 soma = 4 soma = soma + v1 % soma tem v1 soma = 13 soma = soma + v2 % soma tem (v1) + v2 soma = 21 soma = soma + v3 % soma tem (v1+v2) + v3 >> 20 Março 2017 ICE-c Aua 3: Vetores; cicos FOR 31

Cico FOR Exempo [2] Exempos: Cácuo de somas (e produtos) de vetores >> V = [4 9 8, 2, 5] >> prod = 1, for i = 1:ength(V) prod = prod * V(i) end prod = 1 prod = 1 prod = 4 prod = prod * v1 % prod tem v1 prod = 36 prod = prod * v2 % prod tem (v1) * v2 prod = 288 prod = prod * v3 % prod tem (v1*v2) * v3 prod = 576 etc prod = 2880 >> soma = 0; for i = 1:ength(V) soma = soma + V(i); end >> soma soma = 28 20 Março 2017 ICE-c Aua 3: Vetores; cicos FOR 32

Função Média Exempo: Definição da função média function res = media( vaores )! % res = media(vaores)! % Cacua a media dos eementos do vetor vaores.! end! soma = 0;! n = ength(vaores)! for i = 1 : n! end! soma = soma + vaores(i);! res = soma / n;! 1 n n v i i=1 20 Março 2017 ICE-c Aua 3: Vetores; cicos FOR 33

Função Média Geométrica Exempo: Definição da função média geométrica function res = media_geometrica( vaores )! % res = media(vaores)! % Cacua a media geometrica dos eementos! % do vetor vaores.! end! prod = 1;! n = ength(vaores)! for i = 1 : n! prod = prod * vaores(i);! end! res = prod ^ (1/n);! n i=1 V(i) 1 n 20 Março 2017 ICE-c Aua 3: Vetores; cicos FOR 34

Função Média % res = media(vaores) % Cacua a media dos eementos do vetor vaores. function res = media( vaores ) end soma = 0; for i = 1 : ength(vaores) end soma = soma + vaores(i); res = soma / ength(vaores); i vaores(i) soma (antes) 1 5 0 2 3 3 7 n 6 1 n n i=1 v i soma (depois) 20 Março 2017 ICE-c Aua 3: Vetores; cicos FOR 35

Função Média % res = media(vaores) % Cacua a media dos eementos do vetor vaores. function res = media( vaores ) end soma = 0; for i = 1 : ength(vaores) end soma = soma + vaores(i); res = soma / ength(vaores); i vaores(i) soma (antes) soma (depois) 1 5 0 5 3 7 n 6 1 n n i=1 v i 20 Março 2017 ICE-c Aua 3: Vetores; cicos FOR 36

Função Média % res = media(vaores) % Cacua a media dos eementos do vetor vaores. function res = media( vaores ) end soma = 0; for i = 1 : ength(vaores) end soma = soma + vaores(i); res = soma / ength(vaores); i vaores(i) soma (antes) soma (depois) 1 5 0 5 2 3 5 7 n 6 1 n n i=1 v i 20 Março 2017 ICE-c Aua 3: Vetores; cicos FOR 37

Função Média % res = media(vaores) % Cacua a media dos eementos do vetor vaores. function res = media( vaores ) end soma = 0; for i = 1 : ength(vaores) end soma = soma + vaores(i); res = soma / ength(vaores); i vaores(i) soma (antes) soma (depois) 1 5 0 5 2 3 5 8 7 n 6 1 n n i=1 v i 20 Março 2017 ICE-c Aua 3: Vetores; cicos FOR 38

Função Média % res = media(vaores) % Cacua a media dos eementos do vetor vaores. function res = media( vaores ) end soma = 0; for i = 1 : ength(vaores) end soma = soma + vaores(i); res = soma / ength(vaores); i vaores(i) soma (antes) 1 n n i=1 soma (depois) 1 5 0 5 2 3 5 8 v i 3 7 8 15 n 6 999 1005 20 Março 2017 ICE-c Aua 3: Vetores; cicos FOR 39

Média Exempos de execução Aguns exempos de execução da função media O que acontece quando o vetor é vazio??? >> V = [4 9 8, 2, 5] >> m = media(v) m = 5.6 >> X = [4] X = 4 >> m = media(x) m = 4 >> Z = [] >> m = media(z) warning: division by zero m = NaN 20 Março 2017 ICE-c Aua 3: Vetores; cicos FOR 40

Probema dos Contaminantes (2) Em gera a média de um conjunto de vaores não nos fornece toda a informação úti para descrever esse conjunto. Nomeadamente não nos dá ideia da variabiidade dos vaores do conjunto A média de 0 e 10 é a mesma de 5 e 5, mas a útima é equiibrada. Para medir a variação é vugar utiizar-se o desvio padrão, e portanto pode reformuar-se o probema anterior para:...faça um programa para cacuar a média e o desvio padrão daquees vaores. 20 Março 2017 ICE-c Aua 3: Vetores; cicos FOR 41

Probema dos Contaminantes (2) Este probema mais compexo é naturamente decomposto em dois subprobemas: Cácuo da média já feito Cácuo do desvio padrão a impementar tendo em conta a sua definição σ = Nota-se imediatamente que para este cácuo é conveniente dispor da média do vetor V, µ. n (V(i) µ) i=1 n 2 20 Março 2017 ICE-c Aua 3: Vetores; cicos FOR 42

Probema dos Contaminantes (2) Vamos pois resover este probema com 3 funções com assinaturas function res = estatistica(v) function res = media (V)! function res = desviopadrao(v, med)! sendo a primeira função impementada a partir das duas útimas. A função média já foi definida, peo que podemos passar para a impementação do função desviopadrao, que é muito semehante 20 Março 2017 ICE-c Aua 3: Vetores; cicos FOR 43

Função Desvio Padrão Exempo: Definição da função desvio padrão function res = desviopadrao(v, med)! % res = desviopadrao(v, med)! % Cacua o desvio padrao de um vetor! % dada a sua media, med.! n num = 0;! n = ength(v)! σ = for i = 1 : n! num = num +(V(i)-med)^2;! end! res = sqrt(num / n);! end! (V(i) µ) i=1 n 2 20 Março 2017 ICE-c Aua 3: Vetores; cicos FOR 44

Probema da Cerâmica (2) FIM Uma vez impementadas as funções mais simpes, a função estatística é impementada através da combinação das outras. function res = estatistica(v)! % [med,dvp] = estatistica(v, med)! % Cacua a media e o desvio padrao do vetor V! med = media(v);! dvp = desviopadrao(v,med)! end! res = [med,dvp]! De notar que o resutado desta função é um vetor, já que a função retorna dois vaores (a média e o desvio padrão). 20 Março 2017 ICE-c Aua 3: Vetores; cicos FOR 45

Na aua de hoje Vetores. Cicos FOR. Percursos em vetores. Exempos 20 Março 2017 ICE-c Aua 3: Vetores; cicos FOR 46

Função Quadrado de um Vetor A função que cacua o quadrado de um vetor pode ser impementada percorrendo os seus eementos num cico FOR function U = quadrado(v)! % U = quadrado(v)! % U é o vetor como o quadrado dos eementos de V! n = ength(v);!!u = zeros(1,n);! for i = 1:ength(V)! U(i) = V(i)^2;! end! end! Nota: Para evitar a criação de n vetores U, o vetor deve ser iniciaizado com a função zeros (ou ones) 20 Março 2017 ICE-c Aua 3: Vetores; cicos FOR 47

Média Exempos de execução De notar que as variáveis n e U são ocais e desaparecem após a execução da função. >> V = [4 9 8] >> quadrado(v) ans = 16 81 64 >> U error: 'U' undefined near ine 1 coumn 1 >> Q = quadrado(v) Q = 16 81 64 >> V V = 4 9 8 >> V = quadrado(v) V = 16 81 64 function U = quadrado(v)! n = ength(v);!!u = zeros(1,n);! for i = 1:ength(V)! U(i) = V(i)^2;! end! end! 20 Março 2017 ICE-c Aua 3: Vetores; cicos FOR 48

Vetor Fibonacci Os eementos da série de Fibonacci 0, 1, 1, 2, 3, 5, 8,... são definidos como a soma dos 2 anteriores. Desta forma a construção de um vetor de Fibonacci com n eementos (n 2) pode ser construido a partir da função function F = fibonaccivetor(n)! % F = fibonaccivetor(n)! % O vetor F contem os primeiros n eementos da! % série de Fibonacci! F = zeros(1,n);! F(2) = 1;! for i = 3:n! F(i) = F(i-2) + F(i-1);! end! end! 20 Março 2017 ICE-c Aua 3: Vetores; cicos FOR 49

Fibonacci Exempos de execução >> Fn = fibonnacivetor(5) F = 0 0 0 0 0 F = 0 1 0 0 0 F = 0 1 1 0 0 F = 0 1 1 2 0 F = 0 1 1 2 3 Fn = 0 1 1 2 3 >> Fn Fn = 0 1 1 2 3 >> F F = zeros(1,n)! F(2) = 1! for i = 3:n! F(i) = F(i-2) + F(i-1)! end! error: F' undefined near ine 1 coumn 1 >> 20 Março 2017 ICE-c Aua 3: Vetores; cicos FOR 50

Vetor Fibonacci De notar que uma função semehante cacuar o n-ésimo eemento de Fibonacci sem necessitar do vetor. Mas neste caso, terão de ser usadas variáveis auxiiares que se vão actuaizando ao ongo do cico FOR (como as usadas nas práticas) function fn = fibonaccieem(n)! % F = fibonaccieem(n)! % fn é o n-esimo eementos da série de Fibonacci! fantant = 0! fant = 1! for i = 3:n! fn = fant+fantant! fantant = fant! fant = fn! end! end! 20 Março 2017 ICE-c Aua 3: Vetores; cicos FOR 51

Fibonacci Exempos de execução >> f5 = fibonnacieem(5) fantant = 0! fant = 1! fn = 1 fantant = 1! fant = 1! fn = 2 fantant = 1! fant = 2! fn = 3 fantant = 2! fant = 3! f5 = 3! >> fn! error: fn' undefined near ine 1 coumn 1 >>!! fantant = 0! fant = 1! for i = 3:n! fn = fant+fantant! fantant = Fant! fant = fn! end! 20 Março 2017 ICE-c Aua 3: Vetores; cicos FOR 52

Inversão de uma String Em Matab, uma string é impementada através de um vetor de carateres, em que cada caracter é representado peo seu código (ASCII ou UTF). Apesar de haver várias funções pré-definidas para strings que serão abordadas mais à frente, podemos usar a matéria de cicos FOR e vetores para inverter uma string (escrevê-a de trás para a frente ). Para esse efeito poderemos escrever como anteriormente uma função com assinatura function inv = inverter(str)! 20 Março 2017 ICE-c Aua 3: Vetores; cicos FOR 53

Inversão de uma String A sua impementação com um cico for é semehante à anterior Notar que a string invertida é iniciaizada com a função banks, semehante às funções zeros e ones, mas que cria um vetor de caracteres espaço. function inv = inverte(str)! % inv = inverte(str)! % A string inv é a inversão da string str! n = ength(str);! inv = banks(n)! for i = 1:n! inv(i) = str(n-i+1) % indice compementar! end % 1<- n; 2<- n-1 ;... ; n<- 1! end! 20 Março 2017 ICE-c Aua 3: Vetores; cicos FOR 54

Inversão de uma String Ta como anteriormente poderemos testar esta função (de uma forma não exaustiva) >> inverte( abcd ) inv =! inv = d! inv = dc inv = dcb! inv = dcba! ans = dcba >> inv inv = banks(n)! for i = 1:n! inv(i) = str(n-i+1)! end! error: inv' undefined near ine 1 coumn 1 >> s = abcd >> s = inverte(s) s = dcba >>!! 20 Março 2017 ICE-c Aua 3: Vetores; cicos FOR 55

Inversão de uma String De notar que a utiização de indexação apropriada num vetor, neste caso numa string, permite inverter uma string numa só instrução, eeiminando-se a necessidade de usar uma função. >> str = abcd str = abcd >> n = ength(str) n = 4 >> inv = str(n:-1:1)! inv = dcba >>!!!?!? 20 Março 2017 ICE-c Aua 3: Vetores; cicos FOR 56

Para Estudar a Aua de Hoje Recomendado Physica Modeing in MATLAB Capítuos 3 e 4 Opciona Manua do Octave Capítuo 4.1 Matrizes Vetores são matrizes (matéria das próximas auas) Capítuo 4.2 e 10.5 20 Março 2017 ICE-c Aua 3: Vetores; cicos FOR 57