matematicas - libreria math.h c++ pdf
¿Qué tipo de programación requiere matemáticas? (18)
Esto no es un "¿se requiere matemática para la programación?" pregunta.
Siempre pensé que para la programación, una cantidad aterradora de matemáticas complicadas estaría involucrada (solo llegué hasta el álgebra intermedia en la universidad porque soy malo con eso).
Sin embargo, acabo de obtener mi primer trabajo como desarrollador y descubrí que no hay un montón de matemáticas por encima de la aritmética básica (hasta el momento). También leí sobre una pregunta aquí, de modo que las matemáticas se usan más para garantizar que los desarrolladores potenciales puedan entender problemas complejos y resolverlos.
Entonces, ¿supongo que hay un tipo diferente de programación donde se necesita un nivel matemático por encima del álgebra? Mi conjetura sería como la geometría y otras disciplinas para la programación de videojuegos donde creas formas en 3D y juegas con el tiempo y el espacio en entornos. ¿Qué más requiere un alto nivel de matemáticas?
EDIT: Wow, muchas respuestas. Una de las cuales me hizo pensar en otra pregunta similar ... digamos en programas como Photoshop, ¿qué tipo de matemáticas (o el trabajo en general) está involucrado en hacer que algo se tuerza, recorte, edite y colore cosas como imágenes?
Aquí hay algunos lugares generales:
- Gráficos
- Criptografía
- Estadística
- Compresión
- Mejoramiento
También hay una gran cantidad de áreas de problemas específicos donde se requieren cálculos complejos, pero esto se debe más a la naturaleza del programa y menos a la programación en general. Cosas como aplicaciones financieras caen en esto.
Creo que hay al menos dos tipos de respuesta a esta pregunta. En primer lugar, hay tipos de programación que son problemas que provienen de un campo donde las matemáticas son importantes. Éstas incluyen:
- financiar
- investigación científica, por ejemplo, modelado físico
- Implementaciones de ingeniería, por ejemplo, análisis de estrés, ingeniería química.
- Ciencia experimental, por ejemplo, física, psicología.
- las matemáticas en sí
- criptografía
- procesamiento de imágenes
- procesamiento de la señal
Y luego están los tipos de programación donde el objetivo no es necesariamente matemático, pero el proceso para alcanzar ese objetivo necesita algunas matemáticas. Éstas incluyen:
- juegos
- procesos de optimización
- Sistemas de alta complejidad, por ejemplo, software de control de vuelo.
- Sistemas de alta disponibilidad, por ejemplo, control de procesos industriales y / o seguridad.
- Transformaciones complejas de datos, por ejemplo, diseño de compilador.
y así. Varios de estos requieren varios niveles y aspectos de las matemáticas.
Cualquier tipo de análisis numérico, como en geofísica o exploración petrolera.
Una vez construí una herramienta para investigadores de accidentes que requería mucha trigonometría.
En programación comercial, no tanto matemática como aritmética.
El juego y la simulación son respuestas obvias. La matemática no es difícil, pero está claramente allí.
Por ejemplo, digamos que quieres construir algún tipo de juego de asteroides. Tendrás que averiguar la posición de tu nave espacial. Eso es un vector. Ahora quieres que la nave viaje en cierta dirección en cierta dirección en cada cuadro. Tendrá que agregar algún tipo de delta-x a x, y delta-y a y, por lo que su movimiento es otro vector:. En un juego de asteroides, aceleras en la dirección hacia la que estás apuntando, por lo que cada vez que presionas la tecla de "empuje", deberás calcular el delta de dx y dy, o un vector de aceleración,
(sí, este es el mismo dx de la clase de cálculo, pero ahora estoy creando robots zombie oponums con él).
Pero eso no es todo. Si actúas ahora, te lanzaré algo de trigonometría. Normalmente, piensa en el movimiento y la aceleración como ángulo y distancia (r y theta), pero el lenguaje de programación normalmente necesita estos valores en formato dx, dy. Aquí es donde usarás algo de trig: dx = r * cos (theta) y dy = r * sin (theta)
Pero, digamos que quieres tener un planeta con un impulso gravitacional? Deberá aproximar la gravedad de una manera que le brinde un comportamiento orbital (las órbitas elípticas, los disparos cambian la altitud del otro lado de la órbita, etc.) Esto es más fácil de hacer si entiende la ley de Newton de la gravitación universal: f = ((sqrt (m1 * m2)) / d ^ 2) * G. Esto te indica cuánto fuerza ''planetward'' para agregar a tu nave cada cuadro. Multiplica este valor mediante un vector normalizado que apunta desde la nave espacial al planeta. , y agregar eso como un nuevo vector de movimiento.
Lo creas o no, animo a las personas que no les gustan las matemáticas a tomar cursos de programación de juegos. A menudo descubren que las matemáticas pueden ser (me atrevo a decirlo) un poco divertidas cuando las usan en problemas que involucran explotar vacas en el espacio.
Como otro ejemplo, piensa en optimizar una onda de sonido. La onda analógica tiene un número infinito de puntos. Es imposible almacenarlos todos en una señal digital, por lo que dividimos la señal de audio en una gran cantidad de pequeños segmentos y luego medimos cada segmento. Si queremos una representación perfecta, tome una cantidad infinitamente grande de segmentos de tiempo infinitamente pequeños.
Dibuje esto, y ha creado la suma de Riemann, la idea fundamental de la integración (y, de hecho, del cálculo).
Un ejemplo más: un amigo mío (un profesor de biología) estaba tratando de construir una simulación al estilo de ''ciudad simulada'' de un ecosistema lacustre. Era un programador decente, pero se quedó atascado en los diversos cálculos. Quería que el usuario variara el uso del lago (motores fuera de borda, restricciones de pesca y restricciones de descarga) y luego viera cómo eso afectaba los niveles de nitrógeno y otros elementos clave.
Intentó todo tipo de estructuras locas si-entonces con condiciones anidadas y lógica booleana fea, pero nunca tuvo una solución limpia.
Tomamos los datos reales, los pasamos por Excel y encontramos una línea de tendencia que reflejaba sus datos con precisión con una simple fórmula logarítmica.
Cientos de líneas de código desordenado fueron reemplazados por una fórmula simple.
La compresión de imagen y el reconocimiento de imagen usan series de Fourier (incluidas las series de onda sinusoidal clásica y otras series ortogonales, como las transformaciones wavelet), que tiene una teoría bastante pesada que generalmente no se cubre hasta un curso de posgrado en matemáticas o ingeniería.
La optimización no lineal, la optimización restringida y la estimación del sistema utilizando modelos ocultos también utilizan una cantidad significativa de análisis matemático avanzado.
La informática es la matemática. Programación es trabajo de programadores. Están relacionados, pero las dos áreas no se superponen exactamente, así que veo el punto de su pregunta.
La computación científica y el análisis numérico obviamente requieren una base sólida de álgebra lineal, geometría, cálculo avanzado y quizás más. Y todo el estudio del algoritmo, las estructuras de datos y su complejidad y propiedades hace uso de las matemáticas discretas, la teoría gráfica, así como el cálculo y la probabilidad. Detrás del simple estándar JPEG hay mucha teoría de la información, teoría de la codificación, análisis de Fourier ... Y estos son solo algunos ejemplos.
Aunque un científico en computación podría trabajar una vida entera sin escribir una sola línea de código, así como el mejor programador del mundo podría saber solo un poco de matemáticas, el hecho es que las computadoras realizan algoritmos. Y los algoritmos requieren matemáticas. Le sugiero que eche un vistazo a "El arte de la programación por computadora" de Donald Knuth para tener una idea de lo que está debajo de la programación "simple".
La programación de juegos (especialmente la 3D, como mencionaste) tiene muchas matemáticas "más avanzadas". En este sentido, cualquier proyecto en el que esté modelando un sistema (por ejemplo, simulación física).
Crypto también utiliza diferentes formas de matemáticas.
La programación es matemática. (Muchas veces son matemáticas muy fáciles, pero siempre son matemáticas).
La robótica requiere matrices incondicionales, y la IA requiere todo tipo de matemáticas.
Las estadísticas se utilizan mucho en las empresas que realizan Control de calidad y Análisis de calidad. Mi primer trabajo de desarrollo fue en un contrato en el USDA; estas eran aplicaciones estándar de "línea de negocio", excepto que su línea de negocio implicaba una gran cantidad de análisis estadístico.
Muchas industrias aparentemente no matemáticas como Farmacéuticos (por ejemplo, Bioinformática), Agricultura, Mercadeo y en general, cualquier "Inteligencia de Negocios" se basa principalmente en las estadísticas. Rendimiento del sistema, enrutamiento, programación, tolerancia a fallos: la lista continúa ...
Obtuve mi maestría en meteorología, y te puedo decir que para ese campo y para otros campos de física aplicada, el tipo de codificación que harás requiere una cantidad inmensa de matemáticas. Mucho de lo que estás codificando son cosas como el tiempo diferencial de ecuaciones.
Sin embargo, para cosas como escribir código para juegos, no siempre vas a hacer muchas matemáticas en tu código. El juego requiere mucha lógica. La parte de la codificación del juego en la que entran las matemáticas es cuando tienes que escribir motores de física y cosas así.
Procesamiento de señal digital y IA / simulación / agentes son otros.
La animación a través del código, especialmente cuando intentas modelar física real, también necesita matemáticas.
Soy un graduado de Matemáticas y tengo que decir que los únicos lugares donde realmente he visto usar Matemáticas (por encima de la aritmética muy básica) son las lógicas de comprensión / simplificación, por ejemplo, cosas como la equivalencia de estas dos afirmaciones:
(!something) && (!otherThing)
!(something || otherThing)
Aparte de eso, la única vez que necesitaría Matemáticas más complejas es cuando trabaja con gráficos de computadora o algún tema basado en Matemáticas (por ejemplo, finanzas o cómputos), en cuyo caso conocer las Matemáticas tiene más que ver con entender su materia que sobre la programación actual.
Toda la programación requiere matemáticas. Creo que la diferencia entre las personas con antecedentes matemáticos y las personas con antecedentes en programación es la forma en que abordan y responden a los problemas. Sin embargo, si está avanzando en sus habilidades de programación, es probable que, sin saberlo, también esté avanzando en sus habilidades matemáticas (y viceversa).
Si observas de manera abstracta tanto la programación como las matemáticas, verás que tienen enfoques idénticos: ambos se esfuerzan por responder a los problemas utilizando bloques de construcción muy fundamentales.
Hay un ensayo bastante famoso de Edsger W. Dijkstra que intenta responder tu pregunta exacta. Se llama: Sobre la interacción entre las matemáticas y la programación .
Trabajo en química computacional. Necesita mucho álgebra lineal y comprensión general de técnicas como la expansión de Taylor, integrales, gradientes, Hessians, transformación de Fourier (y, en general, expansión en un conjunto de bases), ecuaciones diferenciales. No es una matemática terriblemente compleja, pero hay que saberlo.
Trabajo en un software que es bastante similar al software de CAD, y es necesario un buen conocimiento de la geometría y al menos una idea de la geometría computacional.
Un montón de matemáticas complejas (ish) en el sector financiero. Aparte de eso y Trig for 3d, honestamente no puedo pensar en otra cosa.
Estoy seguro de que hay algunos sin embargo.