vida uso tecnologia relacion que programacion matematicas matematica las informatica entre donde cotidiana aplican aplicadas aplicacion math

math - uso - relacion entre matematicas y programacion



¿En qué áreas de programación es útil el conocimiento de las matemáticas? (30)

Por ejemplo, lógica matemática, teoría de grafos.

Todos a mi alrededor me dicen que las matemáticas son necesarias para el programador. Vi muchos hilos donde las personas dicen que usaron álgebra lineal y algunas otras matemáticas, pero nadie describió casos concretos cuando lo usaron.

Sé que hay hilos similares, pero no pude ver ninguna descripción de tal caso.


General Mindforming

Solución de problemas : un método fundamental de matemática, independiente del área, es transformar un problema desconocido en uno conocido. Incluso si no tienes los mismos problemas, necesitas la misma habilidad. En matemáticas, como en programación, prácticamente todo tiene representaciones diferentes. Comprender la equivalencia entre algoritmos, problemas o soluciones que son completamente diferentes en la superficie te ayuda a evitar las partes duras.

(Algo similar sucede en la física: para resolver un problema cinemático, la elección del sistema de coordenadas suele ser la diferencia entre una y diez páginas llenas de fórmulas, aunque el problema y la solución sean idénticos).

Precisión de lenguaje / razonamiento lógico : matemáticas tiene un lenguaje muy preciso pero preciso. Aprender a lidiar con eso lo preparará para que las computadoras hagan lo que usted dice, no lo que usted quiso decir. Además, se requiere la misma precisión para analizar si una especificación es suficiente, para verificar una pieza de código si cubre todos los casos posibles, etc.

Belleza y elegancia : este puede ser el argumento más difícil de entender. Encontré que la noción de "belleza" en el código es muy similar a la que se encuentra en matemáticas. Una prueba hermosa es aquella cuya idea es inmediatamente convincente, y la prueba en sí misma es meramente ejecutar una secuencia de ejecución del siguiente paso obvio.

Lo mismo ocurre con una implementación elegante.

(La mayoría de los matemáticos con los que me he encontrado tienen una fabilidad para poner el efecto "Aha!" Al final, en lugar de al principio, como lo hacen la mayoría de los geeks de élite).

Puede aprender estas habilidades sin una lección de matemáticas, por supuesto. Pero las matemáticas lo han perfeccionado por siglos.

Habilidades Aplicadas

Ejemplos: - No tener que ejecutar calc.exe para una estimación rápida de los requisitos de memoria - Algunas estadísticas básicas para contar una medición de rendimiento válida desde una toma en la oscuridad - deducir una fórmula para una secuencia de valores, en lugar de codificarlos en duro - Obteniendo un sintiendo por qué c * O (N log N) significa. - La recursión es lo mismo que la prueba por inductancia

(Esa lista probablemente continuaría si me vigilara activamente por artículos por un día. Esta parte es, sin duda, más difícil de lo que pensaba. Otras sugerencias son bienvenidas;))

Donde lo uso

La empresa para la que trabajo hace una gran cantidad de adquisición de datos, y nuestro reclamo de fama (en comparación con nuestra competencia) es el músculo cerebral que se utiliza para extraer algo útil de los datos. Si bien no me preocupa en lo absoluto, recibo suficientes matemáticas en mi camino. Antes de eso, he implementado y validado generadores de números aleatorios para aplicaciones estadísticas, implementé un solucionador de ecuaciones diferenciales, escribí simulaciones para leyes de física seleccionadas. Y probablemente más.


-Gráficos (matrices, traducciones, sombreadores, aproximaciones integrales, curvas, etc., etc., ... puntos infinitos)
-Cálculos de Complejidad de algoritmo (especialmente en la línea de aplicaciones de negocios)
-Poder Arithmetics
- Aritmética de campo bajo criptografía, etc.
-GIS (triángulos, algoritmos de cuadrados como delone, cuadros delimitadores, y muchos muchos, etc.)
- Contadores de monitor de rendimiento y las funciones que describen
-Programación funcional (simplemente eso, sin decir más :))
-...


Al responder a esta pregunta sobre el image-comparison-algorithm , utilicé muchos conocimientos de matemáticas, algunos de ellos a partir de otras respuestas y búsquedas web (donde tuve que aplicar mi propio conocimiento para filtrar la información) y algunos de mi propia formación en ingeniería. y un extenso fondo de programación.


Como desarrollador de comercio electrónico, debo usar las matemáticas todos los días para programar. Por lo menos, álgebra básica.

Hay otras aplicaciones que he tenido que escribir para la generación de imágenes basadas en vectores que requieren un gran conocimiento de Geometría, Cálculo y Trigonometría.

Luego hay un enmascaramiento de bits ...

Convertir hexadecimal a base diez en tu cabeza ...

Estimar el potencial de carga de una aplicación ...

Sí, si alguien no es bueno con las matemáticas, probablemente no sea un programador muy bueno.


Como ingeniero, me cuesta mucho pensar en una instancia en la que no necesite matemática. La misma historia cuando era un estudiante de posgrado. De acuerdo, no soy un programador, pero uso mucho las computadoras.


Creo que muchos programadores usan más matemáticas de lo que creen que hacen. Es solo que les llega tan intuitivamente que ni siquiera lo piensan. Por ejemplo, cada vez que escribe una declaración if, ¿no está usando su conocimiento de Matemáticas Discretas?


Cualquier sitio / aplicación basada en geo necesitará matemática. Un ejemplo simple es la funcionalidad "Muéstrame todas las pizzas de Bob dentro de 10 millas de mí" en un sitio web. Necesitará matemática para devolver lat / lons que ocurren dentro de un radio de 10 millas.


Dada una lista de ubicaciones con latitudes y longitudes, ordene la lista en orden desde el más cercano al más alejado de una posición específica.

Todas las aplicaciones que tratan con dinero necesitan matemática.

No puedo pensar en una sola aplicación que he escrito que no requiera matemática en algún momento.


Dibujar, mover y guiar misiles, pistolas, rayos láser, bombas de gravedad y otras cosas en este pequeño videojuego 2D que hice: wordwarvi

Muchos usos sine / cosine, y sus inversas, (a través de tablas de búsqueda ... soy viejo, ¿de acuerdo?)


Ejemplos que he codificado personalmente:

  • Escribió un videojuego simple donde una nave espacial dispara un láser a otra nave. Para saber si el barco estaba en el camino del láser, utilicé el álgebra básica y = mx + b para calcular si los caminos se cruzan. (Yo era un niño cuando hice esto y me sorprendió que algo que se enseñaba en una pizarra (álgebra) se pudiera aplicar a la programación de computadoras).
  • cálculo de saldos de hipoteca y calendarios de amortización con logaritmos
  • analizar las elecciones de compra del consumidor calculando combinatoria
  • trigonometría para simular el comportamiento de la lente de la cámara
  • Transformada de Fourier para analizar archivos de música digital (archivos WAV)
  • análisis bursátil con estadísticas (regresiones lineales)
  • utilizando logaritmos para comprender los recorridos de búsqueda binarios y también el ahorro de espacio en disco al usar la información de empaquetado en los campos de bits. (No calculo los logaritmos en el código real, pero los averiguo durante el "diseño" para ver si es posible incluso molestarlos en la codificación).

Ninguno de mis proyectos (hasta ahora) han requerido temas tales como cálculo, ecuaciones diferenciales o matrices. No estudié matemáticas en la escuela, pero si un proyecto requiere matemáticas, solo hago referencia a mis libros de matemáticas y, si estoy atascado, busco en google.

Editado para agregar: creo que es más realista para algunas personas tener un desafío de programación motivar el aprendizaje de asignaturas particulares de matemáticas. Para otros, disfrutan las matemáticas por sí mismas y pueden aprender de antemano para aplicar a futuros problemas de programación. Soy del primer tipo. Por ejemplo, estudié logaritmos en la escuela secundaria pero no entendí su poder hasta que comencé a programar y, de repente, parecen aparecer por todos lados.


El tema recurrente que veo en estas respuestas es que esto depende claramente del contexto .

Si está escribiendo un motor de gráficos en 3D , le recomendamos que repase sus vectores y matrices . Si está escribiendo un simple sitio web de comercio electrónico , se saldrá con álgebra básica .

Entonces, dependiendo de lo que quiera hacer, puede que no necesite más matemáticas que las que tuvo para publicar su pregunta (!), O posiblemente necesite un doctorado (es decir, le gustaría escribir un núcleo de geometría personalizado para el diseño de la pala del ventilador de la turbina) )


En el aprendizaje automático : usamos modelos Bayesian (y otros probabilísticos) todo el tiempo, y usamos programación cuadrática en forma de máquinas de vectores de soporte , sin mencionar todo tipo de transformaciones matemáticas para las diversas funciones del kernel . Cálculo (derivados) factores en el aprendizaje del perceptron. Sin mencionar toda una teoría para determinar la precisión de un clasificador de aprendizaje automático.

En la inteligencia artificial : la satisfacción de la restricción y la lógica pesan mucho.


En años de desarrollo de aplicaciones web, no tenía mucha necesidad con Math API. Hasta donde puedo recordar, solo he usado el Math#min() y el Math#max() de la Math API.

Por ejemplo

if (i < 0) { i = 0; } if (i > 10) { i = 10; }

se puede hacer como

i = Math.max(0, Math.min(i, 10));


En el mundo gráfico necesitas muchas transformaciones.
En la criptografía necesitas geometría y teoría de números.
En AI, necesitas álgebra.
Y estadísticas en entornos financieros.
La teoría de las computadoras necesita teoría matemática: en realidad, casi todos los fundadores son de Matemáticas.


Escribí algunas funciones hash para mapear códigos de líneas aéreas y números de vuelo con buena eficiencia en un número bastante limitado de ranuras de datos.

Revisé una gran cantidad de números primos antes de encontrar números que funcionaran bien con mis datos. Las pruebas requerían algunas estadísticas y estimaciones de probabilidades.


Esta es principalmente una pregunta cuya respuesta dependerá del dominio del problema. Algunos problemas requieren montones de matemáticas y algunos requieren solo sumas y restas. En este momento, tengo un proyecto favorito que podría requerir teoría de grafos, no tanto para las matemáticas como para obtener el vocabulario y los conceptos básicos en mi cabeza.

Si está haciendo simulaciones de vuelo y algo 3D, ¡diga hola a los cuaterniones! Si está haciendo ingeniería eléctrica, usará números trigonométricos y complejos. Si está haciendo una calculadora de hipoteca, estará haciendo cálculos discretos. Si está haciendo un problema de optimización, donde intenta obtener los mayores beneficios de su fábrica de widgets, estará haciendo lo que se llama programación lineal. Si está realizando algunas operaciones que involucran, por ejemplo, direcciones de red, bienvenido al tipo de matemática enfocada en bits que viene con eso. Y eso es solo para los lenguajes de alto nivel.

Si está profundizando en estructuras de datos altamente optimizadas y las está implementando usted mismo, probablemente haga más matemáticas que si solo estuviera tomando una biblioteca.


Estaba usando la geometría de coordenadas para resolver el problema de encontrar la parte visible de una pila de ventanas, no superponiéndose exactamente entre sí.

Hay muchas otras situaciones, pero esta es la que obtuve de la cabeza. Intrínsecamente, todas las operaciones que hacemos son matemáticas o al menos dependen de / relacionadas con las matemáticas.

Por eso es importante conocer las matemáticas para tener una comprensión más clara de las cosas :)

De hecho, en algunos casos se han incorporado muchas matemáticas a nuestro sentido común de que no notamos que estamos usando matemáticas para resolver un problema en particular, ¡ya que lo hemos estado usando durante tanto tiempo!

Gracias


Hace unos años, tuve un proyecto DSP que tenía que calcular una FFT real de radix-2 de tamaño N, en un momento dado. La FFT de radix-2 real suministrada por el proveedor no se ejecutaría en el tiempo asignado, pero sí su compleja FFT de tamaño N / 2. Es fácil alimentar los datos reales en la FFT compleja. Obtener las respuestas después no es tan fácil: se llama post-weaving, o post-unweaving, o sin tejer. Derivar las ecuaciones de desvinculación de la FFT y la teoría de números complejos no fue divertido. Pasar de allí a un código DSP estrictamente optimizado tampoco fue divertido.

Naturalmente, la señal que estaba midiendo no coincide con el tamaño de muestra de FFT, que causa artefactos. La solución estándar es aplicar una ventana de Hanning. Esto causa otros artefactos. Como parte de la comprensión (y prueba) de ese código, tuve que entender los artefactos causados ​​por la ventana de Hanning, por lo que pude interpretar los resultados y decidir si el código estaba funcionando o no.


Hace unos meses, escribí un compilador analizador y está lleno de teoría de grafos. Esto solo fue diseñado para ser un poco más poderoso que las expresiones regulares (en que se permitieron múltiples coincidencias, y se agregaron algunas otras características), pero incluso un compilador tan simple requiere detección de bucles, autómatas de estados finitos y muchas más matemáticas.


He usado mucho álgebra al escribir aplicaciones comerciales.

Ejemplos simples

BMI = weight / (height * height); compensation = 10 * hours * ((pratio * 2.3) + tratio);


He usado toneladas de matemáticas en varios proyectos, que incluyen:

  • Teoría de gráficos para tratar con dependencias en sistemas grandes (por ejemplo, un Makefile es un tipo de gráfico dirigido)
  • Estadísticas y regresión lineal en el perfil de los cuellos de botella de rendimiento
  • Transformaciones de coordenadas en aplicaciones geoespaciales
  • En la informática científica, los requisitos del proyecto a menudo se establecen en forma algebraica, especialmente para el código computacionalmente intensivo.

Y eso está fuera de mi cabeza.

Y, por supuesto, cualquier cosa que implique ciencia de la computación "pura" (algoritmos, complejidad computacional, cálculo lambda) tiende a parecerse cada vez más a las matemáticas a medida que avanzas.


Implementar el algoritmo de Estándar de Encriptación Avanzado (AES) requiere una comprensión básica de la matemática de campo finito. Ver el acto 4 de mi blog en él para más detalles (muestra del código incluida).


Las comunicaciones modernas colapsarían por completo sin matemáticas. Si desea hacer estallar su cabeza en algún momento, busque los campos de Galois, los códigos de corrección de errores y la compresión de datos. Luego constelaciones de símbolos, funciones de interpolación de banda limitada (estoy hablando de funciones de sinc y coseno elevado, no del material simple lineal y bicúbico), transformadas de Fourier, recuperación de reloj, secuencias de entrenamiento de símbolos mínimamente ambiguas, desvanecimiento de Rayleigh y / o Ricean y el filtrado de Kalman. Todos ellos involucran matemáticas que hacen que me duela la cabeza, y obtuve una Maestría en Ingeniería Eléctrica. Y eso está fuera de mi cabeza, de mi clase de comunicaciones inalámbricas.

La cantidad de matemática necesaria para que funcione su teléfono celular es enorme. Hacer que un teléfono celular 3G con acceso a Internet sea asombroso. Probar con suficiente confianza que un algoritmo funcionará en la mayoría de los casos a veces toma las carreras de las personas.

Pero ... si alguna vez vas a trabajar con estas cosas como cajas negras importadas de una biblioteca (a su merced, realmente), bueno, podrías salir con suficiente conocimiento de álgebra para depurar paréntesis que no coinciden. Y hay muchos más trabajos que los más difíciles ... pero al mismo tiempo, es más difícil encontrar un reemplazo para los trabajos difíciles.


Los juegos y las simulaciones necesitan muchas matemáticas: dinámica de fluidos, en particular, para cosas como llamas, niebla y humo.


Más o menos todo lo que tiene que ver con encontrar el mejor diseño, optimización o relación de objeto es la teoría de grafos. Puede que no pienses inmediatamente en eso, pero a pesar de todo, ¡estás usando matemáticas!

Un ejemplo explícito: escribí un editor y optimizador de sombreador basado en nodo, que tomó un conjunto de nodos vinculados y los convirtió en código de sombreado. Encontrar el orden correcto para dar salida al código de manera tal que todas las entradas para un determinado nodo estuvieran disponibles antes de que ese nodo las necesitara involucraba la teoría de grafos.

Y como han dicho otros, todo lo que tenga que ver con gráficos requiere implícitamente el conocimiento del álgebra lineal, las transformaciones de espacios de coordenadas y muchos otros subtemas de las matemáticas. Eche un vistazo a cualquier documento gráfico reciente, especialmente aquellos relacionados con la iluminación. Integrales? ¡¿Series infinitas?! ¿Teoría de grafos? Optimización transversal del nodo? Sí, todos estos se usan comúnmente en gráficos.

También tenga en cuenta que el hecho de que no se dé cuenta de que está utilizando algún tipo de matemática cuando está escribiendo o diseñando software, no significa que no lo sea, y realmente entiende las matemáticas detrás de cómo y por qué los algoritmos y los datos las estructuras funcionan de la manera en que lo hacen, a menudo pueden ayudarlo a encontrar soluciones elegantes para problemas no triviales.


Parte de ser un buen programador es familiarizarse con el dominio en el que está programando. Si está trabajando en software para Fidelity Mutual, probablemente necesite conocer economía de la ingeniería. Si está desarrollando software para Gallup, probablemente necesite conocer las estadísticas. LucasArts ... probablemente Linear Algebra. NASA ... Ecuaciones diferenciales.

La cuestión de la ingeniería de software es que casi siempre se espera que use muchos sombreros.


Una vez escribí algo para mi Commodore 64 (se me olvida qué, debía tener 6 años) y quería centrar algunos textos horizontalmente en la pantalla.

Resolví la fórmula usando una combinación de matemáticas y prueba y error; años más tarde abordaría tales problemas usando el álgebra real.


Usé Combinatorials para meter 20 bits de datos en 14 bits de espacio.


Gráficos por computadora

Es toda la multiplicación de matrices, espacios vectoriales, espacios afines, proyección, etc. Montones y montones de álgebra.

Para obtener más información, aquí está el artículo de Wikipedia sobre proyección , junto con el caso más específico de proyección 3D , con todas sus diversas matrices . OpenGL , una biblioteca común de gráficos por computadora, es un ejemplo de aplicación de operaciones de matrices afines para transform y proyectar objetos en la pantalla de una computadora.


La visión artificial o la visión artificial requieren un conocimiento profundo de la probabilidad y las estadísticas. La detección / reconocimiento de objetos y muchas técnicas de segmentación supervisadas se basan en la inferencia bayesiana. Pesado en álgebra lineal también.