Utilizando a função obrigatorios(), obtém-se os exercícios designados, expostos na tabela a seguir.

Seção Página Exercícios
2.3 27 b,d,e
2.4 33 b,c,d,h
2.5 36 b,c
3.1 45 b,d,f
3.2 52 a,b


Exercícios

Seção 2.3

Item a

Uma sequência de valores de 5 a -11, gerada com incrementos de 0.3 pode ser obtida da seguinte forma:

a <- seq(from = 5, to = -11, by = -.3)

a
##  [1]   5.0   4.7   4.4   4.1   3.8   3.5   3.2   2.9   2.6   2.3   2.0   1.7
## [13]   1.4   1.1   0.8   0.5   0.2  -0.1  -0.4  -0.7  -1.0  -1.3  -1.6  -1.9
## [25]  -2.2  -2.5  -2.8  -3.1  -3.4  -3.7  -4.0  -4.3  -4.6  -4.9  -5.2  -5.5
## [37]  -5.8  -6.1  -6.4  -6.7  -7.0  -7.3  -7.6  -7.9  -8.2  -8.5  -8.8  -9.1
## [49]  -9.4  -9.7 -10.0 -10.3 -10.6 -10.9

Cabe notar que o incremento deve ter o sinal negativo para que a sequência seja gerada, isto é, não há uma conversão automática mediante apenas a indicação da direção da sequência.


Item b

A seguir o objeto a é reescrito, invertendo a direção da sequência:

a <- seq(-11, 5, .3)
a
##  [1] -11.0 -10.7 -10.4 -10.1  -9.8  -9.5  -9.2  -8.9  -8.6  -8.3  -8.0  -7.7
## [13]  -7.4  -7.1  -6.8  -6.5  -6.2  -5.9  -5.6  -5.3  -5.0  -4.7  -4.4  -4.1
## [25]  -3.8  -3.5  -3.2  -2.9  -2.6  -2.3  -2.0  -1.7  -1.4  -1.1  -0.8  -0.5
## [37]  -0.2   0.1   0.4   0.7   1.0   1.3   1.6   1.9   2.2   2.5   2.8   3.1
## [49]   3.4   3.7   4.0   4.3   4.6   4.9

Assim como ocorre no item a, o valor final da sequencia gerada não inclui o valor final inserido na função, já que não é possível fazer uma divisão em intervalos sem resto.


Item c

O vetor c(-1,3,-5,7,-9) é repetido duas vezes, com cada elemento sendo gerado 10 vezes. Seus resultados, armazenados no objeto item_c é ordenado de maneira decrescente. O operador %>% é usado como forma de melhorar a legibilidade.

item_c <- rep(c(-1,3,-5,7,-9), times = 2, each = 10) %>% sort()
item_c
##   [1] -9 -9 -9 -9 -9 -9 -9 -9 -9 -9 -9 -9 -9 -9 -9 -9 -9 -9 -9 -9 -5 -5 -5 -5 -5
##  [26] -5 -5 -5 -5 -5 -5 -5 -5 -5 -5 -5 -5 -5 -5 -5 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
##  [51] -1 -1 -1 -1 -1 -1 -1 -1 -1 -1  3  3  3  3  3  3  3  3  3  3  3  3  3  3  3
##  [76]  3  3  3  3  3  7  7  7  7  7  7  7  7  7  7  7  7  7  7  7  7  7  7  7  7


Item d

É criado um vetor que contenha:

  1. A sequência de inteiros [6, 12]
  2. Uma repetição tripla de 5.3
  3. O número -3
  4. Uma sequencia de nove valores começando em 102 e terminando no número que representa o comprimento do vetor criado no item c.
i <- seq(6, 12, by = 1)
ii <- rep(5.3, 3)
iii <- -3
iv <- seq(102, length(item_c), by = -(102 - length(item_c))/8)

vec <- c(i, ii, iii, iv)

vec
##  [1]   6.00   7.00   8.00   9.00  10.00  11.00  12.00   5.30   5.30   5.30
## [11]  -3.00 102.00 101.75 101.50 101.25 101.00 100.75 100.50 100.25 100.00


Item e

Por fim, confirmamos que o comprimento do vetor criado no item anterior tem valor 20.

length(vec)
## [1] 20

Seção 2.4

Item a

Criar um vetor que contenha os itens seguintes, em ordem:

  • Sequência de comprimento 5, em [3, 6]
  • Uma repetição dupla do vetor c(2,-5.1,-33)
  • o valor \(\frac{7}{42}\) + 2
i <- seq(3, 6, by = 3/4)
ii <- rep(c(2,-5.1,-33), 2)
iii <- 2+(7/42)

vec <- c(i, ii, iii)
vec
##  [1]   3.000000   3.750000   4.500000   5.250000   6.000000   2.000000
##  [7]  -5.100000 -33.000000   2.000000  -5.100000 -33.000000   2.166667


Item b

São extraídos o primeiro e o último elementos de vec e armazenados em um novo objeto.

vec2 <- vec[c(1, length(vec))]
vec2
## [1] 3.000000 2.166667


Item c

um terceiro objeto é obtido do item a, omitindo aqueles obtidos no item b.

vec3 <- vec[-c(1, length(vec))]
vec3
##  [1]   3.75   4.50   5.25   6.00   2.00  -5.10 -33.00   2.00  -5.10 -33.00


Item d

vec é reconstruído usando os objetos criados nos itens b e c.

newvec <- c(vec2[1], vec3, vec2[2])

newvec
##  [1]   3.000000   3.750000   4.500000   5.250000   6.000000   2.000000
##  [7]  -5.100000 -33.000000   2.000000  -5.100000 -33.000000   2.166667


Item e

vec é reescrito com os mesmos valores, mas em ordem crescente.

vec <- sort(vec)
vec
##  [1] -33.000000 -33.000000  -5.100000  -5.100000   2.000000   2.000000
##  [7]   2.166667   3.000000   3.750000   4.500000   5.250000   6.000000


Item f

usando o operador :, a ordem de vecé invertinda, confirmando que se trata dad mesma operação que sort(vec, decreasing = TRUE)

vec[12:1]
##  [1]   6.000000   5.250000   4.500000   3.750000   3.000000   2.166667
##  [7]   2.000000   2.000000  -5.100000  -5.100000 -33.000000 -33.000000
sort(vec, decreasing = TRUE)
##  [1]   6.000000   5.250000   4.500000   3.750000   3.000000   2.166667
##  [7]   2.000000   2.000000  -5.100000  -5.100000 -33.000000 -33.000000


Item g

É criado um vetor vec3 a partir do item c que repete o terceiro elemento três vezes, quatro vezes o sexto elemento e o último elemento uma vez.

vecg <- c(rep(vec3[3], 3), rep(vec3[6], 4), vec3[length(vec3)])

vecg
## [1]   5.25   5.25   5.25  -5.10  -5.10  -5.10  -5.10 -33.00


Item h

É criado um vetor como uma cópia do gerado no item e e, na cópia, sobrescreva o primeiro, quinto a sétimo e o último elemento pelos números de [99, 95] respectivamente.

num <- seq(99, 95, by = -1)
copia <- vec

copia[c(1, 5, 6, 7, length(copia))] <- num

copia
##  [1]  99.00 -33.00  -5.10  -5.10  98.00  97.00  96.00   3.00   3.75   4.50
## [11]   5.25  95.00


Seção 2.5

Item a

Converta o vetor c(2,0.5,1,2,0.5,1,2,0.5,1) em um vetor de apenas 1s, usando um vetor de comprimento 3.

vec <- c(2,0.5,1,2,0.5,1,2,0.5,1)
vec[1:9] <- c(1,1,1)

vec
## [1] 1 1 1 1 1 1 1 1 1


Item b

Usando o comportamento vetorizado em R, converta as temperaturas 45, 77, 20, 19, 101, 120 e 212 em Fahrenheit para graus Celsius.

temp <- c(45, 77, 20, 19, 101, 120, 212)

(temp-32)*5/9
## [1]   7.222222  25.000000  -6.666667  -7.222222  38.333333  48.888889 100.000000


Item c

Use o vetor c(2, 4, 6) e o vetor c(1, 2) em conjunção com rep e * para produzir o vetor c(2, 4, 6, 4, 8, 12).

c1 <- c(2, 4, 6)
c2 <- c(1, 2)

c1*rep(c2, 1, each = 3)
## [1]  2  4  6  4  8 12


Seção 3.1

bdf

Item a

Construa e armazene uma matriz 4x2 preenchida, linha a linha, pelos valores 4.3, 3.1, 8.2, 8.2, 3.2, 0.9, 1.6, e 6.5, nesta ordem.

mat <- matrix(data = c(4.3, 3.1, 8.2, 8.2, 3.2, 0.9, 1.6, 6.5), nrow = 4, ncol = 2, byrow = TRUE)

mat
##      [,1] [,2]
## [1,]  4.3  3.1
## [2,]  8.2  8.2
## [3,]  3.2  0.9
## [4,]  1.6  6.5


Item b

Confirme que as dimensões da matriz anterior são 3x2 se for removida qualquer linha.

dim(mat)
## [1] 4 2
mat[-1,] %>% dim()
## [1] 3 2

A função dim() evidencia que a matriz tem dimensões 4x2 e, se removida uma linha, se reduz a 3x2.


Item c

Sobrescreva a segunda coluna da matriz do item a pela mesma coluna, mas organizada de forma crescente.

mat2 <- mat

mat2[,1] <- sort(mat2[,1])

mat2
##      [,1] [,2]
## [1,]  1.6  3.1
## [2,]  3.2  8.2
## [3,]  4.3  0.9
## [4,]  8.2  6.5


Item d

Ao se apagar a quarta linha e a primeira coluna da matriz do item c, em formato de matriz, se obtem o seguinte:

mat2[-4, -1] %>% as.matrix()
##      [,1]
## [1,]  3.1
## [2,]  8.2
## [3,]  0.9


Item e

Os quatro itens inferiores da matriz do item c são armazenados em um objeto.

mat3 <- mat2[-c(1, 2),]

mat3
##      [,1] [,2]
## [1,]  4.3  0.9
## [2,]  8.2  6.5


Item f

Sobrescreva, nesta ordem, os elementos de c nas posições (4;2), (1;2), (4;1), e (1;1) com \(-\frac{1}{2}\) dos dois valores da diagonal da matriz do item e.

diag <- c(diag(mat3))*(-1)/2

mat2[c(4, 1), c(2,2,1,1)] <- diag

mat2
##       [,1]  [,2]
## [1,] -3.25 -3.25
## [2,]  3.20  8.20
## [3,]  4.30  0.90
## [4,] -2.15 -2.15


Seção 3.2

Item a

Calcule:

\[ \frac{2}{7} \left( \left[ \begin{matrix} 1 & 2 \\ 2 & 4 \\ 7 & 6 \end{matrix} \right] - \left[ \begin{matrix} 10 & 20 \\ 30 & 40 \\ 50 & 60 \end{matrix} \right] \right) \]

mat1 <- matrix(c(1, 2, 2, 4, 7, 6), ncol = 2, byrow = TRUE)

mat2 <- matrix(c(10,20,30,40,50,60), ncol = 2, byrow = TRUE)

(mat1-mat2)*2/7
##            [,1]       [,2]
## [1,]  -2.571429  -5.142857
## [2,]  -8.000000 -10.285714
## [3,] -12.285714 -15.428571


Item b

Considerando as matrizes:

\[ A = \left[ \begin{matrix} 1 \\ 2 \\ 7 \end{matrix} \right] B = \left[ \begin{matrix} 3 \\ 4 \\ 8 \end{matrix} \right] \]

é possível realizar as operações:

a <- matrix(c(1, 2, 7), byrow = FALSE)
b <- matrix(c(3, 4, 8), byrow = FALSE)
  1. \(A^{\top} \cdot B\)
t(a)%*%b
##      [,1]
## [1,]   67


  1. \(B^{\top} \cdot (A \cdot A^{\top})\)
t(b)%*%(a%*%t(a))
##      [,1] [,2] [,3]
## [1,]   67  134  469


  1. \([(B \cdot B^{\top})+(A \cdot A^{\top}) - 100I_{3}]^{-1}\)
((b%*%t(b))+(a%*%t(a)) -100*diag(3)) %>% inv()
##             [,1]        [,2]       [,3]
## [1,] -0.00792368  0.00312327 0.00784333
## [2,]  0.00312327 -0.00535024 0.01148381
## [3,]  0.00784333  0.01148381 0.01758474