Mira una recomendación que te doy es que la programación no todo es arremangarse y escribir codigo. Una persona que lleve muy bien las matematicas puede hacer un programa mucho mas optimizado y sencilla que alguien que sepa programar mucho pero no lleve bien las matematicas.
No te desesperes ya que la programación es practica y no todo el mundo lo hace al mismo ritmo. Te pondré un ejemplo muy bueno:
Imagina que te piden hacer un programa que sume los primeros N numeros, por ejemplo:
N= 3 seria 1+2+3 = 6.
Una persona que sabe programar bien, pero no tiene ni puñetera idea de matematicas hará lo siguiente con el típico bucle FOR gastando en cualquier lenguaje varias líneas de codigo:
dim x as integer
.......
For x = 0 to N
x = x +1
next x
.....
El que sepa matematicas pero no sepa programar tanto, con una simple línea lo calcula sin hacer estructuras repetitivas, fijate en esta formula:
x = (n*(n+1) / 2
El resultado directo en una sola línea y sin saber demasiada programación
. Ánimos!
Curiosidad....
Quien domina bien las matemáticas le salen estas cosas así de la cabeza y punto o se llega a soluciones como esa usando ecuaciones, series... etc
Bueno, ahora que ya has puesto la función, me doy cuenta de que podría crear esa función, obtienendo valores para un número y hacer una relación entre y e x, gráficar la función, ver la forma que tiene y desarrollar la ecuación y obtener la función.
Por ejemplo:
El número 5: el resultado de sumar los números naturales anteriores a 5 será:
5, 5+4+3+2+1
5, 15
Para el 6 tenemos:
6, 6+5+4+3+2+1
6, 21
Para el 4 tenemos:
4, 4+3+2+1
4, 10
Entonces eso podrían ser puntos de una función, la función que me dará la suma de los números naturales anteriores a 5, a 6 y a 4.
Es como si le digo con el valor 5, la función me debe dar un 15, con el 6 un 21 y con el 4 un 10.
Entonces se puede hacer una relación y decir que el 5 va a ser X y el 15 Y; hacer lo mismo con las otros puntos.
Si graficamos esos puntos tenemos,
esta gráficaQue aunque tiene una pequeña curvatura, se parece más a una línea recta y la ecuación que define una línea recta es: y=ax+b, aquí hubiera cometido un error desarrollando mi algoritmo, pero como ya sé que el algoritmo es: y = x(x+1)/2, eso tiene un término cuadrático (al multiplicar x(x+1) que da x
2 + x), entonces sé que no es una línea recta y por lo tanto no se usa la ecuación anterior, sino la que define una parábola, porque si una función o ecuación tiene grado 2 (érmino cuadrático), su gráfica necesariamente dará una parábola, entonces debo usar la ecuación que define una parábola: y=ax
2+ bx+c
Y ahora sí puedo usar los puntos que tengo.
Nota: cuando se graficaban solamente esos tres puntos [(5,15)(6,21),(4,10)] se veía como si fuera una línea recta, pero para tener más seguridad y presición, es mejor graficar más puntos y de hecho, si los graficamos vemos que se va formando la parábola, o también es mejor graficar empezando desde 0 porque se ve mejor el curso que toma la gráfica y eso es lo que nos interesa para saber que ecuación usar.
Gráfiquemos desde 0 hasta 4:
(0,0),(1,1),(2,3),(3,6),(4,10)
y tenemos
esta gŕaficaComo se ve, es una parábola, no tiene parte negativa porque no incluimos los números, pero se puede confirmar totalmente añadiendo más puntos hacia la izquierda, negativos, o graficando la función que ya sabemos que nos dará:
y=x(x+1)/2Usamos la ecuación y=ax
2+bx+c con cualesquiera tres puntos de los que tenemos, podemos usar los primeros tres por facilidad y comodidad, pero yo voy a usar los del principio:
(5,15),(6,21),(4,10)
15 = a(5)
2+b(5)+c
21 = a(6)
2+b(6)+c
10 = a(4)
2+b(4)+c
Y con eso tenemos un sistema de ecuaciones, básicamente con eso lo que estamos diciendo es que nos cree una función o ecuación que cuando le pasemos 5 me de como resultado un 15 (por que ya sabemos: 5 = 4+3+2+1 = 15) y lo mismo con los otros números, pero que pasa? que si funciona con esos tres números como la ecuación pertenece a una parábola y es continua y constante, pues también va a funcionar con todos los números, así que ya solamente tenemos que
resolver ese sistemas de ecuaciones para que nos quede
y=1/2(x
2)+1/2(x)
que haciendo unas cuentas operaciones, nos queda:
y=1/2(x(x+1)
que es exactamente lo mismo que dijo skapunky.
Lamento haberme extendido tanto, y repetir tanto lo mismo, solo decía las cosas como me salían de la cabeza
, pero creo que esa es una forma de obtener algoritmos (ya a mi me ha funcionado un par de veces). Pero por lo general, soy muy malo haciendo algoritmos optimizados, lo que una persona resuelve con unas cuentas líneas de código a mi me toma el doble. Por ejemplo el algoritmo de números primos, yo nunca lo pude hacer, tuve que copiarmelo de internet xD
¿y ahora quién dice que las matemáticas no son de ayuda?