Resolución de ecuaciones de segundo grado

Una ecuación de segundo grado tiene la siguiente estructura:

\[ ax^2+bx+c=0 \]

Para resolverla se utiliza la fórmula general:

\[ x=\frac{-b\pm\sqrt{b^2-4ac}}{2a} \]

El discriminante se calcula mediante:

\[ D=b^2-4ac \]

Código en R

resolver_ecuacion <- function(a, b, c) {

  if (a == 0) {
    stop("El coeficiente a debe ser diferente de cero")
  }

  D <- b^2 - 4*a*c

  cat("Ecuacion:", a, "x^2 +", b, "x +", c, "= 0\n")
  cat("Discriminante:", D, "\n")

  if (D > 0) {

    x1 <- (-b + sqrt(D))/(2*a)
    x2 <- (-b - sqrt(D))/(2*a)

    cat("Dos soluciones reales diferentes:\n")
    cat("x1 =", x1, "\n")
    cat("x2 =", x2, "\n")

  } else if (D == 0) {

    x <- -b/(2*a)

    cat("Una solucion real doble:\n")
    cat("x =", x, "\n")

  } else {

    parte_real <- -b/(2*a)
    parte_imaginaria <- sqrt(-D)/(2*a)

    x1 <- complex(real = parte_real,
                  imaginary = parte_imaginaria)

    x2 <- complex(real = parte_real,
                  imaginary = -parte_imaginaria)

    cat("Dos soluciones complejas:\n")
    cat("x1 =", x1, "\n")
    cat("x2 =", x2, "\n")
  }
}

Ejemplo

Resolver:

\[ 2x^2-5x+2=0 \]

a <- 2
b <- -5
c <- 2

resolver_ecuacion(a, b, c)
## Ecuacion: 2 x^2 + -5 x + 2 = 0
## Discriminante: 9 
## Dos soluciones reales diferentes:
## x1 = 2 
## x2 = 0.5

Comprobación

x1 <- 2
x2 <- 0.5

resultado1 <- a*x1^2 + b*x1 + c
resultado2 <- a*x2^2 + b*x2 + c

cat("Comprobacion de x1:", resultado1, "\n")
## Comprobacion de x1: 0
cat("Comprobacion de x2:", resultado2, "\n")
## Comprobacion de x2: 0

Resolución de sistemas de ecuaciones de dos incógnitas

Un sistema de dos ecuaciones con dos incógnitas tiene la siguiente estructura:

\[ a_1x+b_1y=c_1 \]

\[ a_2x+b_2y=c_2 \]

Se puede resolver mediante matrices utilizando la expresión:

\[ AX=B \]

La solución se obtiene mediante:

\[ X=A^{-1}B \]

Código en R

resolver_sistema <- function(a1, b1, c1,
                             a2, b2, c2) {

  A <- matrix(c(a1, b1,
                a2, b2),
              nrow = 2, byrow = TRUE)

  B <- c(c1, c2)

  D <- det(A)

  cat("Matriz de coeficientes:\n")
  print(A)

  cat("Vector de resultados:\n")
  print(B)

  cat("Determinante:", D, "\n")

  if (abs(D) < 1e-10) {

    cat("El sistema no tiene una solucion unica.\n")

  } else {

    solucion <- solve(A, B)

    cat("Solucion del sistema:\n")
    cat("x =", solucion[1], "\n")
    cat("y =", solucion[2], "\n")
  }
}

Ejemplo

Resolver el siguiente sistema:

\[ \begin{cases} 2x+y=7\\ x-y=2 \end{cases} \]

a1 <- 2
b1 <- 1
c1 <- 7

a2 <- 1
b2 <- -1
c2 <- 2

resolver_sistema(a1, b1, c1,
                 a2, b2, c2)
## Matriz de coeficientes:
##      [,1] [,2]
## [1,]    2    1
## [2,]    1   -1
## Vector de resultados:
## [1] 7 2
## Determinante: -3 
## Solucion del sistema:
## x = 3 
## y = 1

Comprobación

x <- 3
y <- 1

ecuacion1 <- 2*x + y
ecuacion2 <- x - y

cat("Primera ecuacion:", ecuacion1, "= 7\n")
## Primera ecuacion: 7 = 7
cat("Segunda ecuacion:", ecuacion2, "= 2\n")
## Segunda ecuacion: 2 = 2