SOLUCIÓN
DE ECUACIONES Y SISTEMAS DE ECUACIONES CON R
Ing. Luis Manfredo Reyes Chávez
R es actualmente el lenguaje de análisis más
utilizado en el mundo académico y de investigación, primero por su potencia de
procesamiento, y en segundo lugar por ser un software libre.
Existen versiones para Windows, Mac, Linux y Android
UN ERROR MUY COMUN POR TODOS LADOS ES: HAY GENTE QUE CREE QUE R
ES UN PAQUETE ESTADÍSTICO (COMO SAS O SPSS).
Por ser un lenguaje y no un paquete, R tiene capacidades para
muchos procesos, pero se debe reconocer que quizá donde más se le ha utilizado
es en el campo de la estadística.
Una de las ventajas de R, es la enorme cantidad de librerías (o
paquetes), que han sido desarrolladas para ampliar sus capacidades.
Si se necesita un poder de computación algébrica, o cálculos
demasiado complejos , es mejor usar paquetes libres que sí poseen esas
capacidades, por ejemplo MAXIMA O REDUCE, que están disponibles sin costo en el
sitio del proyecto GNU.
Sin embargo, para situaciones comunes, es posible usar R
1. SOLUCIÓN DE ECUACIONES
LINEALES
Resuelva: 5x = 10 (si, muy fácil)
>solve(5,10)
[1] 2
2. SOLUCIÓN DE SISTEMAS DE ECUACIONES LINEALES
3x + 2y = 8
x + y =2
Las ecuaciones se expresan en forma matricial Ax=bI
x + y =2
Las ecuaciones se expresan en forma matricial Ax=bI
En este ejemplo se usa la función Matrix para especificar las matrices, el
ingreso se realiza por columnas
La matriz A es 3 2
1
1
El vector b is:
8
2
El vector b is:
8
2
>
a <- matrix(c(3,1,2,1),nrow=2,ncol=2)
>
a
[,1] [,2]
[1,] 3
2
[2,] 1
1
>
b <- matrix(c(8,2),nrow=2,ncol=1)
>
b
[,1]
[1,] 8
[2,] 2
>
solve(a,b)
[,1]
[1,] 4
[2,] -2
Solución: x = 4, y = -2.
Otro ejemplo:
5x + 3y + 4z = 30
2x + 3y + 3z = 20
|
x + 4y + 3z = 15
|
Solución
En lugar de
Matrix se puede usar rbind para construir las matrices
a <- rbind(c(5, 3, 4),
c(2, 3, 3),
c(1, 4, 3))
b <- c(20, 15, 30)
solve(a, b)
[1] -1.25 -6.25 13.75
3. SOLUCIÓN DE ECUACIONES CUADRÁTICAS
Por ejemplo: x2+5x-6=0
p<- polynomial(c(-6,-5,1)) ## ojo con el orden
p
solve(p)
[1]
-1 6
4.
SOLUCION DE ECUACIONES NO LINEALES
En este caso no existe una función que resuelva directamente. Se requiere
implementar métodos numéricos (bisección, Newton Rapson, etc).
Se recomienda el uso del paquete rootSolve, el cual se puede instalar desde
el sitio CRAN
Ejemplo:
Definir función:
library(rootSolve)
f<-
function(x) cos(x)^4 - 4*cos(x)^3 + 8*cos(x)^2 - 5*cos(x) + 1/2
Graficar la función
para determinar el intervalo donde hay solución:
plot(f)
Una raíz está entre 0 y 1, pero pueden haber otras en otro intervalo
Invocar a la función en el intervalo
de cero a dos
uniroot.all(f, c(0,2))
[1] 0.6293342 1.4478556
Mientras
mayor sea el intervalo, mayor es la posibilidad de encontrar más raíces
Más
detalles:
No hay comentarios:
Publicar un comentario