Usted tiene un algoritmo que estima, dado un instante de tiempo t1, la variación de precio que tendrá una acción en la bolsa en los instantes t siguientes. Una vez que corre el algoritmo recibe una sucesión de variaciones de precio. Un valor de +3 significa que el precio tendrá un incremento de 3 unidades monetarias, un valor de -5 significa que el precio decrece en 5 unidades monetarias. Empezando con un precio de $0, ¿cuál será el precio resultante de la acción después de que ocurran todas las variaciones?
Cargamos el vector de variaciones en una variable que llmaremos “variaciones”.
Para calcular el precio después de que ocurrieran todas las variaciones sumaremos todas las entradas del vector variaciones y guardaremos el resultado en una variable que llamaremos “precio”.
precio <- sum(variaciones)
## [1] 439
Utilizaremos el ciclo “For” y el condicional “If” para crear un vector en el que se guarden los valores que se van obteniendo de sumar una por una las variaciones al precio de la acción comenzando con el precio igual a cero.
p=0
var<-c()
pre=0
for(i in 1:989){
pre = pre + variaciones[i,1]
if (is.element(pre,var)==T)
print(c(i,pre))
if(is.element(pre,var)==T)
break
else
var<-c(var,pre)
}
El ciclo está diseñado para que si se repite algún precio respecto a las variaciones, se detenga y además imprima cuál es el precio que se está repitiendo. La función no muestra ningún valor por lo cuál asumimos que nunca se repite, para estar completamente seguros, usaremos la función “replicated” para observar el vector de elementos repetidos. Sumamos las entradas y verificamos que la suma es igual a cero, es decir, no se encuentra ningún valor “TRUE” en el vector.
rep<-duplicated(var)
Si hacemos una lista de los números naturales menores a 10 que son multiplos de 3 o 5 obtendremos c(3, 5, 6, 9), la suma de esos multiplos es 23.
Encuentre la suma de todos los multiplos de 3 o 5 menores a 1000.
Primero creamos 2 vectores, uno que contenga a los múltiplos de 3 y otro que contenga a los múltiplos de 5, luego los unimos con la función “union” para no tener valores repetidos.
m3<-c()
m5<-c()
for(i in 1:1000){
if(i%%3==0)
m3<-c(m3,i)
if(i%%5==0)
m5<-c(m5,i)
}
m35<-union(m3,m5)
Obtenemos el resultdo de la suma de todos los valores.
## [1] 234168
Primero creamos un vector que contenga a los números de la suceción de Fibonacci menores o iguales a 1,000,000,000, llamaremos a este vector “fib”.
fib<-c(0,1)
for(i in 3:1000){
fibn=fib[i-2]+fib[i-1]
if(fibn<=1000000000)
fib<-c(fib,fibn)
else
break
}
Separamos los números pares e impares de entre los elementos del vector “fib” Sumamos ambos subconjuntos de números y realizamos el cociente entre estos valores.
f2<-c()
f3<-c()
for(i in 1:length(fib)){
if(fib[i]%%2==0)
f2<-c(f2,fib[i])
else
f3<-c(f3,fib[i])
}
y<-sum(f2)
x<-sum(f3)
z<-(x/y)
Por último, el resultado que obtuvimos es el siguiente:
## [1] 4.236068
Creamos una función que nos calcule para cualquier valor de n que se ingrese, los primeros 10*n números de la sucesión de Fibonacci, y con ellos realizar el mismo proceso que en ejercicio anterior.
fb<-function(n){
fib<-c(0,1)
fibn=0
f22<-c()
f33<-c()
for(i in 3:(10*n)){
fib[i]=fib[i-2]+fib[i-1]
if(fib[i]%%2==0)
f22<-c(f22,fib[i])
else
f33<-c(f33,fib[i])
}
y<-sum(f22)
x<-sum(f33)
z<-(x/y)
print(z)
}