Diferenças entre edições de "Manipulação de vetores"
(→Notação) |
(→Exercícios) |
||
Linha 145: | Linha 145: | ||
## Calcule o preço a pagar por cada um dos artigos, atendendo à quantidade. | ## Calcule o preço a pagar por cada um dos artigos, atendendo à quantidade. | ||
## Calcule valor total, isto é o valor apagar por todos os artigos multiplicados pelas respectivas quantidades. | ## Calcule valor total, isto é o valor apagar por todos os artigos multiplicados pelas respectivas quantidades. | ||
+ | # Crie um vetor com todos os múltiplos de 5 ou 7 entre 100 e 200 | ||
{| class="collapsible collapsed wikitable" | {| class="collapsible collapsed wikitable" | ||
Linha 200: | Linha 201: | ||
| <syntaxhighlight>dot(preco,quantidade) | | <syntaxhighlight>dot(preco,quantidade) | ||
ans = 52.600 | ans = 52.600 | ||
+ | </syntaxhighlight> | ||
+ | |- | ||
+ | | 4 | ||
+ | | Múltiplos de 5 ou 7 entre 100 e 200 | ||
+ | | <syntaxhighlight>num = 100:200; | ||
+ | mult = num(or(mod(num, 5) == 0, mod(num, 7) == 0)) | ||
</syntaxhighlight> | </syntaxhighlight> | ||
|} | |} |
Revisão das 16h35min de 7 de outubro de 2014
Existem muitas formas de manipular vetores no Octave.
Índice
Definição de um vetor
A forma mais simples de definir um vetor em Octave é listando os valores do mesmo entre '[' e ']'. Pode separar cada um dos elementos com vírgulas ou com espaços.
>> vel = [ 50 50 70 90 120 ] vel = 50 50 70 90 120 >> peso = [ 82.4, 82.7, 82.5] peso = 82.400 82.700 82.500
Notação
O vetor anterior poderá ser apresentado numa notação ligeiramente diferente, em que todos os números são multiplicados por 10 (1.0e+01), da seguinte forma:
>> peso = [82.4, 82.7, 82.5] peso = 1.0e+01 * 8.24000 8.27000 8.25000
Para usar a notação normal, usa-se a definição format long g
(ou a função fixed_point_format
). Mais informação sobre formatos.
>> format long g >> peso = [82.4, 82.7, 82.5] peso = 82.4 82.7 82.5 >>
Definição de um vetor por compreensão
Pode-se definir um vetor sem ter que enumerar todos os seus elementos. Uma forma muito simpática de o fazer é através da indicação do valor inicial, um incremento e o limite. O operador usa-se da seguinte forma:
valor inicial: incremento: limite
>> 1:1/3:3 ans = 1.0000 1.3333 1.6667 2.0000 2.3333 2.6667 3.0000
Desta forma é muito fácil, por exemplo, calcular os valores da função y = 2 * x - 3 para os valores de 1 a 10.
>> x = 1:1:10 x = 1 2 3 4 5 6 7 8 9 10 >> y = 2*x-3 y = -1 1 3 5 7 9 11 13 15 17
Pode ser abreviado para valor inicial: limite assumindo-se que o incremento é 1. Pode-se fazer, por exemplo:
>> 15:20 ans = 15 16 17 18 19 20
Alternativamente, pode-se usar a função linspace
para gerar um vetor com N elementos, igualmente espaçados entre o valor inicial e final, usando a sintaxe:
linspace(inicial,final,N)
Para obter um vetor com 6 elementos, igualmente espaçados entre 1 e 10, escreve-se:
>> linspace(1,10,6) ans = 1.0000 2.8000 4.6000 6.4000 8.2000 10.0000
Feedback
Quando se define um vetor, o octave apresenta imediatamente o mesmo, como aconteceu nos exercícios anteriores. Caso não se pretenda ter esse feedback, termina-se a instrução com ;
. No exemplo seguinte define-se um vetor x com e sem ;
no fim da instrução.
>> x = 1:10 x = 1 2 3 4 5 6 7 8 9 10 >> x = 1:10;
Operações
Se aplicar um operador normal, como a multiplicação, a um argumento do tipo vetor, o mesmo é aplicado a todos os elementos do vetor.
>> val = [1 2 3 4 5] val = 1 2 3 4 5 >> val*2 ans = 2 4 6 8 10
Da mesma forma, pode aplicar uma função a todos os elementos de um vetor.
>> valores = [0 pi/2 pi] valores = 0.00000 1.57080 3.14159 >> sin(valores) ans = 0.00000 1.00000 0.00000
Operadores sobre os elementos dos vectores
>> x = [4 5 6 7 8] x = 4 5 6 7 8 >> x^2 error: for A^b, A must be square >> x.^2 ans = 16 25 36 49 64
Exercícios
- Crie um vetor com todos os múltiplos de 3, entre 1 e 100.
- Seja x = [1 2 3 4 5].
- Calcule os valores da função y = -3x^2 +4x -1, para os valores de x.
- Calcule o máximo valor de y (no domínio definido por x).
- Considere os seguintes dados. Tem 3 artigos diferentes, cada um com o seu preço unitário, e quer adquirir determinadas quantidades de cada um desses artigos.
- Seja preco = [ 2.45, 3.95, 8]
- Seja quantidade = [2 6 3]
- Calcule o preço a pagar por cada um dos artigos, atendendo à quantidade.
- Calcule valor total, isto é o valor apagar por todos os artigos multiplicados pelas respectivas quantidades.
- Crie um vetor com todos os múltiplos de 5 ou 7 entre 100 e 200
Soluções dos exercícios | Resumo | Resposta |
---|---|---|
1 | Múltiplos de 3 | 3:3:100 |
2 | Dados do problema | x = [1 2 3 4 5] |
2.1 | Calcular os valores da função y | y = -3*x.^2 + 4*x -1 y = 0 -5 -16 -33 -56 |
2.2 | Máximo de y | max(y) ans = 0 |
3 | Dados do problema | preco = [ 2.45, 3.95, 8 ] quantidade = [2 6 3] |
3.1 | Valor a pagar por cada artigo (preço x quantidade) | preco .* quantidade ans = 4.9000 23.7000 24.0000 |
3.2 | Valor total a pagar | sum(preco .* quantidade) ans = 52.600 |
Valor total a pagar | preco * quantidade' ans = 52.600 | |
Valor total a pagar | dot(preco,quantidade) ans = 52.600 | |
4 | Múltiplos de 5 ou 7 entre 100 e 200 | num = 100:200; mult = num(or(mod(num, 5) == 0, mod(num, 7) == 0)) |
Grandes vetores
No Octave pode-se guardar uma ou mais variáveis num documento para posterior utilização. No documento heartrate.m
, disponível em http://octave.di.uminho.pt/images/files/ tem a definição de um vetor chamado bpm
.
Descarregue o documento, e depois leia o vetor bpm
do documento heartrate.m
.
>> load heartrate.m bpm >> load "C:/Users/jgr/Downloads/heartrate.m" >> who Variables in the current scope: ans bpm >> bpm
Neste vetor estão registados os batimentos cardíacos (batimentos por minuto) registados com intervalos de 5 segundos. O registo começou às 08:40:19 do dia 2012-10-03.
i) Diga quantos valores tem o vetor bpm
, ou seja, qual o comprimento ou dimensão do vetor bpm
.
length(bpm)
ii) Diga qual o valor mínimo do vetor.
min(bpm)
ii) Diga qual o valor máximo do vetor.
max(bpm)
iii) Diga quantas vezes se registaram batimentos acima dos 160.
fortes = bpm(bpm > 160); length(fortes)
iv) Diga qual a média dos batimentos cardíacos.
mean(bpm)
ou
sum(bpm)/length(bpm)
v) Mostre apenas os primeiros 5 elementos do vetor bpm
.
bpm(1:5)