Matemáticas simbólicas

En R y en Python existen paquetes librerías que permiten trabajar con funciones matemáticas de forma simbólica.

Un ejemplo en R es la librería Ryacas y un ejemplo en Python en Sympy.

Ejemplo: consideremos la función \(f(x)=x^5+x^2\) \(x \in \mathbb{R}\) y supongamos que se desea hallar su integral.

Para la derivada se puede usar el siguiente código:

library(Ryacas)
## 
## Attaching package: 'Ryacas'
## The following object is masked from 'package:purrr':
## 
##     simplify
## The following object is masked from 'package:stats':
## 
##     integrate
## The following objects are masked from 'package:base':
## 
##     %*%, diag, diag<-, lower.tri, upper.tri
yac_str("D(x)x^5+x^2")
## [1] "5*x^4+2*x"

Para la integral indefinida se puede usar:

## [1] "x^6/6+x^3/3"

Estas tres funciones se pueden graficar así:

Actividades

Representación de funciones univariadas Grafique las siguientes funciones:

la función \(f(x)\) es convexa, suave y continua

El resultado es una función \(f(x)\) creciente continua y convexa

El resultado de la función \(f(x)=x \cos(\alpha x)\) es periodica, continua y suave.

La función \(|x|\) es continua y convexa

el resultado es una función \(f(x)\) racional discontinua.

## [1] "2*x"
## [1] "Deriv(x)xcos(x)"

Las funciones son continuas, suaves y \(f(x)=x^2\) es convexa

la función es discontinua en x=0

Especifique cuales de estas funciones:

Adicionalmente escoja una de las funciones anteriores, obtenga su primera y segunda derivada, y grafique las tres curvas en el mismo plano.

Representación de funciones de dos variables

Sea \(f(x_1, x_2)=x^2_1+x^2_1\). Las curvas de nivel de esta función se pueden obtener con el siguiente código:

# Particionamiento del rango de cada variable
x1 <- seq(-1, 1, length.out = 50)
x2 <- seq(-1, 1, length.out = 50)

# Dataframe con las combinaciones de ambas variables a evaluar:
X <- expand.grid(x1,x2)

# Función f(x1,x2)=x1^2+x2^2
f1 <- function(x1,x2){
  return(x1^2+x2^2)
}

# Evaluación de la función:
z <- f1(X[,1],X[,2])

# Expresión del resultado como matriz para graficar:
Z <- matrix(z, ncol = 50, nrow = 50)

Curvas de nivel de la función:

Sugerencia: probar la función filled.contour().

La representación 3D se puede obtener con la función persp():

persp(x1, x2, Z,d = 2, theta = 15)

Sugerecia: probar la librería plotly.

Escoja una de las siguientes funciones y represente sus curvas de nivel y su gráfica :

# Particionamiento del rango de cada variable
x1 <- seq(-2.048, 2.048, length.out = 50)
x2 <- seq(-2.048, 2.048, length.out = 50)

# Dataframe con las combinaciones de ambas variables a evaluar:
X <- expand.grid(x1,x2)

# Función f(x1,x2)=x1^2+x2^2
f1 <- function(x1,x2){
  return((100*(x2-x1^2)^2)+((1-x1)^2))
}

# Evaluación de la función:
z <- f1(X[,1],X[,2])

# Expresión del resultado como matriz para graficar:
Z <- matrix(z, ncol = 50, nrow = 50)

Curvas de nivel de la función:

persp(x1, x2, Z,d = 2, theta = 15)