Usted tiene un algoritmo que estima, dado un instante de tiempo \(\Delta t_1\), la variación de precio que tendrá una acción en la bolsa en los instantes \(\Delta 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?
Para este ejercicio primero hay que importar los datos de las variaciones del .txt a un vector que se le dio el nombre de variaciones y después solo hay que aplicar la función sum() y aplicarla a dicho vector
variaciones=scan("C:\\Users\\hp\\Documents\\input.txt")
sum(variaciones)
## [1] 439
Usted recuerda que un supuesto fuerte del análisis técnico de acciones es, palabras más palabras menos, que la historia siempre se repite. Por lo cual como parte de su estrategia, y esperando tener cierta ventaja sobre el resto del mercado, se ve interesado en encontrar el primer precio que ocurre dos veces si las variaciones que obtuvo se repiten todo el tiempo.
Para este ejercicio, primero hacemos un vector que guardeen cada una de sus entradas a la suma de la primer variacion hasta la k-ésima variacion en cada caso, hasta el 989 que es el numero de variaciones. Este vector lo utilizamos para hacer una función que para a cada n nos devuelva la suma de las variaciones del 1 hasta n. En este caso el rpograma lo puse comentado porque se tardaba mucho en correr, en 20 minutos llego solo a 25000 iteraciones y parece ser que habias dicho que se necesitaban 1000000 o algo asi, entonces espero que lo puedas revisar a ver si esta bien redactado y todo eso.
#sumasv<-c()
#sumasv[1]=variaciones[1]
#for(i in 2:989){
# sumasv[i]=sumasv[i-1]+variaciones[i]
#}
#sumtn <- function(n){
#b=floor(n/989)
#c=n%%989
#if(c==0){
# sn=439*b
#}else {
# sn= b*439 + sumasv[c]
#}
#return(sn)
#}
#ABC=FALSE
#i=2
#sumtng<-c()
#sumtng[1]=sumtn(1)
#while(ABC==FALSE){
#sumtng[i]=sumtn(i)
#for(j in 1:(i-1)){
# if(sumtng[j]==sumtn(i)){
# ABC=TRUE
#print(j)
#print(i)
#print(sumtn(i))
# }}
#i=i+1}
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.
Para saber cuantos multiplos de 3 en 3 hay del 1 al 1000, basta dividir este numero entre 3 o 5, una vez que obtenemos la cantidad de estos multiplos la suma de los multiplos sera la suma de esos primeros numeros narurales por el numero en cuestion.Para hacer la suma total que se pide en el ejercicio necesitamos restarle los multiplos del 3 y 5, es decir los del 15, bajo el mismo procedimiento.Primero sacamos los multiplos de 3 del uno al mil a los sumamos para el tres si dividimos 1000 entre 3 el numero entero sera 333 y asi vamos haciendo el procedimiento
sum3=((333*334)/2)*3 #suma de los primeros 333 numeros naturales multiplicados por ese 3 en cuestion
sum5=((200*201)/2)*5 #suma de los primeros 200 numeros naturales multiplicados por ese 5 en cuestion
sum15=((66*67)/2)*15 #suma de los primeros 66 numeros naturales multiplicados por ese 15 en cuestion
total = sum3 + sum5 - sum15 #sumamos los de 3, los de 5 y restamos los de 15(la interseccion)
total
## [1] 234168
Como bien sabe, cada término de la sucesión de Fibonacci se obtiene sumando los dos elementos anteriores. Considere los elementos de la sucesión de Fibonacci menores a 1,000,000,000. Sea \(x\) la suma de los elementos impares, \(y\) la suma de los elementos pares. Encuentre \(z={x/y}\)
#la sucesion de fibonacci esta dada por la sigueinte expresion, hay que ver hasta que n es menor a 1000000000
#Construccion de sucesion de Fibonacci
#install.packages("gmp") ##Paqueteria para poder trabajar con numeros muy grandes
require(gmp)
## Loading required package: gmp
##
## Attaching package: 'gmp'
## The following objects are masked from 'package:base':
##
## %*%, apply, crossprod, matrix, tcrossprod
fibonesimo <- function(n) { #construimos una funcion que nos devuelva el n-esimo elemneto de la sucesion de fibonacci
j = 0
k = 1
for (i in 1:n) {
l = k
k = j
j = add.bigz(j, l) # funcion sumas de numeros grandes
}
return(j)
}
fa=1
x=0
y=0
repeat
if(fibonesimo(fa)<1000000000){
if(fibonesimo(fa)%%2==0){
y=y+fibonesimo(fa)
}else{
x=x+fibonesimo(fa)
}
fa=fa+1
}else{break}
x
## Big Integer ('bigz') :
## [1] 1485607536
y
## Big Integer ('bigz') :
## [1] 350704366
z=x/y
z
## Big Rational ('bigq') :
## [1] 742803768/175352183
Ahora considere los primeros \(10n\) elementos de la sucesión de Fibonacci con \(n\in(1,200)\), sean \(x\) el número de elementos impares, \(y\) el número de elementos pares y \(z={x/y}\). Haga un gráfico interactivo del vector de \(z's\) . Explique un par de insights interesantes sobre el ejercicio.
X<-numeric(200)
Y<-numeric(200)
Z<-numeric(200)
for(n in 1:200){
h=(10*n)
if(n==1){
for(j in 1:h){
if(fibonesimo(j)%%2==0)
{
Y[n]=Y[n]+1
}else{
X[n]=X[n]+1
}
}}else{
Y[n]=Y[n-1]
X[n]=X[n-1]
s=(10*(n-1))+1
for(j in s:h){
if(fibonesimo(j)%%2==0)
{
Y[n]=Y[n]+1
}else{
X[n]=X[n]+1
}
}
}
Z[n]=X[n]/Y[n]
}
X
## [1] 7 14 20 27 34 40 47 54 60 67 74 80 87 94
## [15] 100 107 114 120 127 134 140 147 154 160 167 174 180 187
## [29] 194 200 207 214 220 227 234 240 247 254 260 267 274 280
## [43] 287 294 300 307 314 320 327 334 340 347 354 360 367 374
## [57] 380 387 394 400 407 414 420 427 434 440 447 454 460 467
## [71] 474 480 487 494 500 507 514 520 527 534 540 547 554 560
## [85] 567 574 580 587 594 600 607 614 620 627 634 640 647 654
## [99] 660 667 674 680 687 694 700 707 714 720 727 734 740 747
## [113] 754 760 767 774 780 787 794 800 807 814 820 827 834 840
## [127] 847 854 860 867 874 880 887 894 900 907 914 920 927 934
## [141] 940 947 954 960 967 974 980 987 994 1000 1007 1014 1020 1027
## [155] 1034 1040 1047 1054 1060 1067 1074 1080 1087 1094 1100 1107 1114 1120
## [169] 1127 1134 1140 1147 1154 1160 1167 1174 1180 1187 1194 1200 1207 1214
## [183] 1220 1227 1234 1240 1247 1254 1260 1267 1274 1280 1287 1294 1300 1307
## [197] 1314 1320 1327 1334
Y
## [1] 3 6 10 13 16 20 23 26 30 33 36 40 43 46 50 53 56
## [18] 60 63 66 70 73 76 80 83 86 90 93 96 100 103 106 110 113
## [35] 116 120 123 126 130 133 136 140 143 146 150 153 156 160 163 166 170
## [52] 173 176 180 183 186 190 193 196 200 203 206 210 213 216 220 223 226
## [69] 230 233 236 240 243 246 250 253 256 260 263 266 270 273 276 280 283
## [86] 286 290 293 296 300 303 306 310 313 316 320 323 326 330 333 336 340
## [103] 343 346 350 353 356 360 363 366 370 373 376 380 383 386 390 393 396
## [120] 400 403 406 410 413 416 420 423 426 430 433 436 440 443 446 450 453
## [137] 456 460 463 466 470 473 476 480 483 486 490 493 496 500 503 506 510
## [154] 513 516 520 523 526 530 533 536 540 543 546 550 553 556 560 563 566
## [171] 570 573 576 580 583 586 590 593 596 600 603 606 610 613 616 620 623
## [188] 626 630 633 636 640 643 646 650 653 656 660 663 666
Z
## [1] 2.333333 2.333333 2.000000 2.076923 2.125000 2.000000 2.043478
## [8] 2.076923 2.000000 2.030303 2.055556 2.000000 2.023256 2.043478
## [15] 2.000000 2.018868 2.035714 2.000000 2.015873 2.030303 2.000000
## [22] 2.013699 2.026316 2.000000 2.012048 2.023256 2.000000 2.010753
## [29] 2.020833 2.000000 2.009709 2.018868 2.000000 2.008850 2.017241
## [36] 2.000000 2.008130 2.015873 2.000000 2.007519 2.014706 2.000000
## [43] 2.006993 2.013699 2.000000 2.006536 2.012821 2.000000 2.006135
## [50] 2.012048 2.000000 2.005780 2.011364 2.000000 2.005464 2.010753
## [57] 2.000000 2.005181 2.010204 2.000000 2.004926 2.009709 2.000000
## [64] 2.004695 2.009259 2.000000 2.004484 2.008850 2.000000 2.004292
## [71] 2.008475 2.000000 2.004115 2.008130 2.000000 2.003953 2.007812
## [78] 2.000000 2.003802 2.007519 2.000000 2.003663 2.007246 2.000000
## [85] 2.003534 2.006993 2.000000 2.003413 2.006757 2.000000 2.003300
## [92] 2.006536 2.000000 2.003195 2.006329 2.000000 2.003096 2.006135
## [99] 2.000000 2.003003 2.005952 2.000000 2.002915 2.005780 2.000000
## [106] 2.002833 2.005618 2.000000 2.002755 2.005464 2.000000 2.002681
## [113] 2.005319 2.000000 2.002611 2.005181 2.000000 2.002545 2.005051
## [120] 2.000000 2.002481 2.004926 2.000000 2.002421 2.004808 2.000000
## [127] 2.002364 2.004695 2.000000 2.002309 2.004587 2.000000 2.002257
## [134] 2.004484 2.000000 2.002208 2.004386 2.000000 2.002160 2.004292
## [141] 2.000000 2.002114 2.004202 2.000000 2.002070 2.004115 2.000000
## [148] 2.002028 2.004032 2.000000 2.001988 2.003953 2.000000 2.001949
## [155] 2.003876 2.000000 2.001912 2.003802 2.000000 2.001876 2.003731
## [162] 2.000000 2.001842 2.003663 2.000000 2.001808 2.003597 2.000000
## [169] 2.001776 2.003534 2.000000 2.001745 2.003472 2.000000 2.001715
## [176] 2.003413 2.000000 2.001686 2.003356 2.000000 2.001658 2.003300
## [183] 2.000000 2.001631 2.003247 2.000000 2.001605 2.003195 2.000000
## [190] 2.001580 2.003145 2.000000 2.001555 2.003096 2.000000 2.001531
## [197] 2.003049 2.000000 2.001508 2.003003
Escriba una función que encuentre los números primos entre \(1\) y \(n\). Haga un gráfico animado de la proporción de números primos en los primeros \(10k\) naturales con \(k\in(1:100)\)
Para este ejercicio primero hacemos una funcion que si nosotros le damos un numero \(n\), nos devuelva la cantidad de numeros primos del \(1\) hasta ese \(n\).Una vez hecho esto procedemos a contar cuantos hay para los primeros \(10k\) naturales con \(k\in(1:100)\), y los metemos en un vector donde la k-ésima entrada del vector representa justamente cuantos primos hay en los primeros \(10k\) naturales
fprimos <-function(n){
cont=1
j=1
for(j in 1:n){
h=1
aux=0
for(h in 1:j) {
if(j%%h==0){
aux = aux +1
}
}
if(aux==2){
cont=cont+1
}
}
return(cont)
}
P<-numeric(100)
k=1
for(k in 1:100){
hk=10*k
P[k]=fprimos(hk)
}
P
## [1] 5 9 11 13 16 18 20 23 25 26 30 31 32 35 36 38 40
## [18] 42 43 47 47 48 51 53 54 56 58 60 62 63 64 67 67 69
## [35] 71 73 74 76 78 79 81 82 83 86 88 89 92 93 94 96 98
## [52] 98 100 100 102 103 105 107 108 110 112 115 115 116 119 121 122 124
## [69] 125 126 128 129 130 132 133 135 137 138 139 140 141 142 146 147 147
## [86] 150 151 152 155 155 156 158 159 160 162 163 164 166 167 169