Pregunta 1

Crea un vector llamado Harry formado por la sucesión de números consecutivos entre -10 y 27. Pídele a R que devuelva el elemento de índice 7. Escribe el resultado.

# Crear el vector Harry
Harry <- -10:27

# Obtener el elemento de índice 7
elemento_7 <- Harry[7]
print(elemento_7)
## [1] -4

Pregunta 2

Da el máximo de la sucesión \(100 \cdot 2^n - 7 \cdot 3^n\) con \(n = 0, \ldots, 200\).

# Crear la sucesión
n <- 0:200
sucesion <- 100 * 2^n - 7 * 3^n

# Obtener el máximo de la sucesión
max_sucesion <- max(sucesion)
print(max_sucesion)
## [1] 1499

Pregunta 3

Crea la sucesión de números consecutivos entre 0 y 40. A continuación, crea el vector \(3 \cdot 5^n - 1\) con \(n = 0, \ldots, 40\). Ponle como nombre x. Ahora, da el subvector de los elementos que son estrictamente mayores a 3.5.

# Crear la sucesión de números consecutivos entre 0 y 40
n <- 0:40

# Crear el vector x
x <- 3 * 5^n - 1

# Obtener el subvector de elementos mayores a 3.5
subvector <- x[x > 3.5]
print(subvector)
##  [1] 1.400000e+01 7.400000e+01 3.740000e+02 1.874000e+03 9.374000e+03
##  [6] 4.687400e+04 2.343740e+05 1.171874e+06 5.859374e+06 2.929687e+07
## [11] 1.464844e+08 7.324219e+08 3.662109e+09 1.831055e+10 9.155273e+10
## [16] 4.577637e+11 2.288818e+12 1.144409e+13 5.722046e+13 2.861023e+14
## [21] 1.430511e+15 7.152557e+15 3.576279e+16 1.788139e+17 8.940697e+17
## [26] 4.470348e+18 2.235174e+19 1.117587e+20 5.587935e+20 2.793968e+21
## [31] 1.396984e+22 6.984919e+22 3.492460e+23 1.746230e+24 8.731149e+24
## [36] 4.365575e+25 2.182787e+26 1.091394e+27 5.456968e+27 2.728484e+28

Pregunta 4

Crea una función que devuelva la parte real, la imaginaria, el módulo, el argumento y el conjugado de un número, mostrando solo 2 cifras significativas. RECOMENDACIÓN: En algún momento hará falta utilizar vectores.

# Crear la función
info_complejo <- function(z) {
  parte_real <- round(Re(z), 2)
  parte_imaginaria <- round(Im(z), 2)
  modulo <- round(Mod(z), 2)
  argumento <- round(Arg(z), 2)
  conjugado <- round(Conj(z), 2)
  
  return(list(parte_real = parte_real, parte_imaginaria = parte_imaginaria, 
              modulo = modulo, argumento = argumento, conjugado = conjugado))
}

# Ejemplo de uso
z <- 3 + 4i
resultado <- info_complejo(z)
print(resultado)
## $parte_real
## [1] 3
## 
## $parte_imaginaria
## [1] 4
## 
## $modulo
## [1] 5
## 
## $argumento
## [1] 0.93
## 
## $conjugado
## [1] 3-4i

Pregunta 5

Crea una función que resuelva ecuaciones de segundo grado (de la forma \(Ax^2 + Bx + C = 0\)). No importa, por ahora, que tengas en cuenta las ecuaciones de segundo grado que no tienen solución real. RECOMENDACIÓN: En algún momento hará falta utilizar vectores.

# Crear la función
resolver_ecuacion <- function(A, B, C) {
  discriminante <- B^2 - 4 * A * C
  if (discriminante >= 0) {
    x1 <- (-B + sqrt(discriminante)) / (2 * A)
    x2 <- (-B - sqrt(discriminante)) / (2 * A)
    return(c(x1, x2))
  } else {
    return("No tiene solución real")
  }
}

# Ejemplo de uso
soluciones <- resolver_ecuacion(1, -3, 2)
print(soluciones)
## [1] 2 1

Pregunta 6

Tomando el vector vec = c(0, 9, 98, 2, 6, 7, 5, 19, 88, 20, 16, 0), da 3 opciones diferentes para calcular el subvector c(9, 19, 20, 16).

Tomando el vector vec definido en el apartado anterior, busca: - qué entradas son pares - qué entradas no son pares y mayores que 20 - dónde toma vec su valor máximo - dónde toma vec sus valores mínimos

# Definir el vector vec
vec <- c(0, 9, 98, 2, 6, 7, 5, 19, 88, 20, 16, 0)

# Opciones para calcular el subvector c(9, 19, 20, 16)
subvector1 <- vec[c(2, 8, 10, 11)]
subvector2 <- vec[vec %in% c(9, 19, 20, 16)]
subvector3 <- vec[which(vec == 9 | vec == 19 | vec == 20 | vec == 16)]

print(subvector1)
## [1]  9 19 20 16
print(subvector2)
## [1]  9 19 20 16
print(subvector3)
## [1]  9 19 20 16
# Entradas que son pares
pares <- vec[vec %% 2 == 0]
print(pares)
## [1]  0 98  2  6 88 20 16  0
# Entradas que no son pares y mayores que 20
no_pares_mayores_20 <- vec[vec %% 2 != 0 & vec > 20]
print(no_pares_mayores_20)
## numeric(0)
# Dónde toma vec su valor máximo
maximo <- which.max(vec)
print(maximo)
## [1] 3
# Dónde toma vec sus valores mínimos
minimos <- which.min(vec)
print(minimos)
## [1] 1

Pregunta 7

Da la entrada (2, 2) de \(A \cdot (A + A) \cdot A\), con \[ A = \begin{pmatrix} 1 & 3 \\ 2 & 4 \end{pmatrix} \]

# Definir la matriz A
A <- matrix(c(1, 3, 2, 4), nrow = 2, byrow = TRUE)

# Realizar la operación
result <- A %*% (A + A) %*% A

# Obtener la entrada (2, 2)
entry_2_2 <- result[2, 2]
print(entry_2_2)
## [1] 236

Pregunta 8

Da los valores propios de la matriz \[ B = \begin{pmatrix} 2 & 4 & -6 \\ 0 & 0 & 3 \\ 0 & -2 & 5 \end{pmatrix} \]

# Definir la matriz B
B <- matrix(c(2, 4, -6, 0, 0, 3, 0, -2, 5), nrow = 3, byrow = TRUE)

# Calcular los valores propios
eigenvalues <- eigen(B)$values
print(eigenvalues)
## [1] 3 2 2

Pregunta 9

Da, redondeando a 3 cifras decimales, los vectores propios de la matriz \[ C = \begin{pmatrix} -48 & 35 & -12 \\ -134 & 95 & -32 \\ -194 & 133 & -44 \end{pmatrix} \]

# Definir la matriz C
C <- matrix(c(-48, 35, -12, -134, 95, -32, -194, 133, -44), nrow = 3, byrow = TRUE)

# Calcular los vectores propios y redondear a 3 cifras decimales
eigenvectors <- round(eigen(C)$vectors, 3)
print(eigenvectors)
##       [,1]  [,2]   [,3]
## [1,] 0.371 0.169  0.098
## [2,] 0.743 0.507 -0.195
## [3,] 0.557 0.845 -0.976

Pregunta 10

Da el rango de la matriz \[ D = \begin{pmatrix} -2 & -8 & -2 & 3 \\ -3 & -6 & -1 & 2 \\ -9 & -22 & -3 & 7 \\ -18 & -44 & -8 & 15 \end{pmatrix} \]

# Definir la matriz D
D <- matrix(c(-2, -8, -2, 3, -3, -6, -1, 2, -9, -22, -3, 7, -18, -44, -8, 15), nrow = 4, byrow = TRUE)

# Calcular el rango de la matriz
rank_D <- qr(D)$rank
print(rank_D)
## [1] 3