##Ecuaciones en diferencia segundo orden
##Lab 2
##Miguel Antonio García 

#librerias
library(matlib)
library(MASS)

#Ecuacion

eqn_2o<-function(A1, A2, y0, y1, x){
  if(A1^2-4*A2<0){
    print("Imaginarias")  
    #Resolviendo el sistema de ecuaciones
    a = -A1/2
    b = sqrt(abs(A1^2-4*A2))/2
    r = sqrt(a^2+b^2)
    t = atan(b/a)
    a1<-c(cos(0),r*cos(t))
    a2<-c(sin(0),r*sin(t))
    A<-cbind(a1,a2)
    b1<-c(y0,y1)
    B=cbind(b1)
    C=ginv(A)%*%B
    yx = (r^x)*(C[1]*cos(t*x)+C[2]*sin(t*x))
  }
  
  #Condicionantes
  else if(A1^2-4*A2 == 0){
    print("Reales iguales")
    #Resolviendo le eq cuadrática 
    m1 <-(-A1+sqrt(A1^2-4*A2))/2 
    m2 <-(-A1-sqrt(A1^2-4*A2))/2
    #Resolviendo el sistema de ecuaciones
    a1<-c(1,m1)
    a2<-c(1,m2*x)
    A<-cbind(a1,a2)
    b1<-c(y0,y1)
    B=cbind(b1)
    C=ginv(A)%*%B
    yx = C[1]*m1^x+C[2]*x*m2^x
  }
  else if (A1^2-4*A2 > 0){
    print("Reales diferentes")
    #Resolviendo le eq cuadrática 
    m1 <-(-A1+sqrt(A1^2-4*A2))/2 
    m2 <-(-A1-sqrt(A1^2-4*A2))/2
    #Resolviendo el sistema de ecuaciones
    a1<-c(1,m1)
    a2<-c(1,m2)
    A<-cbind(a1,a2)
    b1<-c(y0,y1)
    B=cbind(b1)
    C=ginv(A)%*%B
    yx = C[1]*m1^x+C[2]*m2^x
  }
}

y_x<-eqn_2o(2,4,100,30,15)
## [1] "Imaginarias"
y_x
## [1] -3276800
serie <- list()
for (i in 1:15) {
  serie <- c(serie,eqn_2o(8,5,100,30,i))
}
## [1] "Reales diferentes"
## [1] "Reales diferentes"
## [1] "Reales diferentes"
## [1] "Reales diferentes"
## [1] "Reales diferentes"
## [1] "Reales diferentes"
## [1] "Reales diferentes"
## [1] "Reales diferentes"
## [1] "Reales diferentes"
## [1] "Reales diferentes"
## [1] "Reales diferentes"
## [1] "Reales diferentes"
## [1] "Reales diferentes"
## [1] "Reales diferentes"
## [1] "Reales diferentes"
plot(1:15,serie, type="l")

serie
## [[1]]
## [1] 30
## 
## [[2]]
## [1] -740
## 
## [[3]]
## [1] 5770
## 
## [[4]]
## [1] -42460
## 
## [[5]]
## [1] 310830
## 
## [[6]]
## [1] -2274340
## 
## [[7]]
## [1] 16640570
## 
## [[8]]
## [1] -121752860
## 
## [[9]]
## [1] 890820030
## 
## [[10]]
## [1] -6517795940
## 
## [[11]]
## [1] 47688267370
## 
## [[12]]
## [1] -348917159260
## 
## [[13]]
## [1] 2.552896e+12
## 
## [[14]]
## [1] -1.867858e+13
## 
## [[15]]
## [1] 1.366642e+14
serie <- list()
for (i in 1:15) {
  serie <- c(serie,eqn_2o(2,4,100,30,i))
}
## [1] "Imaginarias"
## [1] "Imaginarias"
## [1] "Imaginarias"
## [1] "Imaginarias"
## [1] "Imaginarias"
## [1] "Imaginarias"
## [1] "Imaginarias"
## [1] "Imaginarias"
## [1] "Imaginarias"
## [1] "Imaginarias"
## [1] "Imaginarias"
## [1] "Imaginarias"
## [1] "Imaginarias"
## [1] "Imaginarias"
## [1] "Imaginarias"
plot(1:15,serie, type="l")

serie
## [[1]]
## [1] 30
## 
## [[2]]
## [1] -340
## 
## [[3]]
## [1] -800
## 
## [[4]]
## [1] -240
## 
## [[5]]
## [1] 2720
## 
## [[6]]
## [1] 6400
## 
## [[7]]
## [1] 1920
## 
## [[8]]
## [1] -21760
## 
## [[9]]
## [1] -51200
## 
## [[10]]
## [1] -15360
## 
## [[11]]
## [1] 174080
## 
## [[12]]
## [1] 409600
## 
## [[13]]
## [1] 122880
## 
## [[14]]
## [1] -1392640
## 
## [[15]]
## [1] -3276800
serie <- list()
for (i in 1:15) {
  serie <- c(serie,eqn_2o(4,4,100,30,i))
}
## [1] "Reales iguales"
## [1] "Reales iguales"
## [1] "Reales iguales"
## [1] "Reales iguales"
## [1] "Reales iguales"
## [1] "Reales iguales"
## [1] "Reales iguales"
## [1] "Reales iguales"
## [1] "Reales iguales"
## [1] "Reales iguales"
## [1] "Reales iguales"
## [1] "Reales iguales"
## [1] "Reales iguales"
## [1] "Reales iguales"
## [1] "Reales iguales"
plot(1:15,serie, type="l")

serie
## [[1]]
## [1] -16
## 
## [[2]]
## [1] -60
## 
## [[3]]
## [1] 120
## 
## [[4]]
## [1] -240
## 
## [[5]]
## [1] 480
## 
## [[6]]
## [1] -960
## 
## [[7]]
## [1] 1920
## 
## [[8]]
## [1] -3840
## 
## [[9]]
## [1] 7680
## 
## [[10]]
## [1] -15360
## 
## [[11]]
## [1] 30720
## 
## [[12]]
## [1] -61440
## 
## [[13]]
## [1] 122880
## 
## [[14]]
## [1] -245760
## 
## [[15]]
## [1] 491520