lunes, 3 de junio de 2019

SOLUCIÓN DE ECUACIONES Y SISTEMAS DE ECUACIONES CON R


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.

R  puede ser descargado del siguiente sitio: http://www.r-project.org/

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
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
> 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