it-swarm-es.com

¿Cuáles son buenas fórmulas matemáticas para saber para programar?

¿Cuáles son algunas fórmulas matemáticas algo comunes que aprendiste que te ayudaron a escribir mejores algoritmos y convertirte en un mejor programador?

Ejemplo: Aprendí acerca de la fórmula de distancia ecludiana: sqrt((x1-x2)^2+(y1-y2)^2) que me ayudó a entender cómo encontrar objetos similares al comparar 2 factores.

19
GSto

Conocer los poderes de 2 es útil, especialmente cuando se trata de operaciones bit a nivel bajo.

16
AShelly

El álgebra booleana ya se mencionó, pero quería proporcionar algunos ejemplos prácticos.

El álgebra booleana es útil muy a menudo cuando trabajas con expresiones booleanas complejas (en las declaraciones if por ejemplo).

Par expresiones y leyes útiles:

Distributividad

A y (B | C) = (A y B) | (A y C)

A | (B y C) = (A | B) y (A | C)

Entonces, la próxima vez que te topes con esa expresión:

if((A || B) && (A || C) && (A || D) && (A || E)) { ... }

Puede reducirlo fácilmente a:

if(A || (B && C && D && E)) { ... }

Negación y Ley de De Morgan

! (! A) = A

! (A y B) =! A | !SI

! (A | B) =! A y! B

Digamos que tienes esa declaración:

if(!A && !B && !C) {..}

y necesitas construir lo contrario de eso. Escritura:

if(!(!A && !B && !C)) {...}

funcionaría, pero no se ve tan genial como este equivalente:

if(A | B | C) {...}
15
serg

En mi experiencia, las fórmulas matemáticas se utilizan para cálculos muy específicos, que pueden aplicarse o no a su proyecto.

Si necesita calcular algo, generalmente hay una función en una biblioteca o un código fuente de ejemplo que puede calcularlo por usted. Por ejemplo, la función PMT () de Excel, que calcula los pagos necesarios para pagar una deuda al X% durante los períodos Y. ¿Realmente quiere saber cómo lo calcula o es suficiente con llamar al integrado?

En los últimos 10 años, no creo que haya necesitado usar nada de la biblioteca de Matemáticas que no sea Ceil (), Min () y Max (), lo que muestra que, aunque las computadoras fueron diseñadas para resolver problemas matemáticos , el uso común hoy en día es la toma de decisiones en torno al flujo de datos.

Tomemos, por ejemplo, Facebook, que tiene una gran cantidad de código. Probablemente haya algo de Matemáticas en alguna parte, pero sospecho que principalmente en la API Crypto, que probablemente sea una biblioteca del sistema. Pero el acceso a la base de datos, las decisiones de autorización, la creación de páginas y el enrutamiento de información probablemente no usen mucho Math.

Sí, hay mercados que necesitan muchas matemáticas (finanzas, física, ingeniería), pero en estas industrias, es más probable que su disciplina principal sea matemáticas/economía, física, ingeniería, etc., por lo que sus preguntas serían '¿cómo puedo escribir? fórmula f(x) en el lenguaje Y? '

Un mejor uso de su tiempo, IMO, sería investigar Algoritmos (incluida la notación Big O) y Patrones de diseño.

9
JBRWilkinson

No existe una fórmula que pueda convertirte en un mejor programador.

Las habilidades relacionadas con las matemáticas pueden hacerte un mejor programador:

  • Método científico - forma de pensar matemática/ciencia y resolución de problemas
  • Abstracción - capacidad de reconocer abstracciones y patrones
  • Herencia - reutilización de trabajo/métodos existentes para resolver nuevos problemas
  • Experiencia - entender un conjunto de problemas y soluciones
7
Branimir

Me gustaría mencionar serie Taylor que son bastante útiles para obtener aproximaciones rápidas de funciones "más pesadas". Por ejemplo, sin(x) alrededor de 0 se puede aproximar con x-(x*x*x/6).

En general, la idea de que hay formas inteligentes de aproximar las cosas rápidamente, en lugar de calcularlas hasta el último dígito significativo (aunque para las funciones elementales, la mayoría de los procesadores modernos contienen implementaciones rápidas cableadas, por lo que usar Taylor para aproximar el pecado puede no ser tan significativo ganancia de velocidad).

6
Joonas Pulakka

Las fórmulas estadísticas básicas son buenas para saber. He usado regresión lineal al menos algunas veces.

Las leyes de De Morgan, sobre la transformación booleana "y" y "o" en relación con las negaciones, y algunos datos más elementales relacionados sobre la lógica booleana (como la doble negación).

3
Peter Eisentraut

Regla de tres (tipo de Multiplicación cruzada)

+1 para fórmulas estadísticas básicas.

Vi a muchos muchachos con dificultades para aplicar esta simple regla en el código básico.

2
Pagotti

La programación es un campo muy amplio. La fórmula matemática depende del área de programación en la que se encuentre. Si le gustan los gráficos, la programación de juegos necesita saber más trigonometría, geometría. La programación del juego puede clasificarse en áreas como física, renderizado, sombreador ... y la lista continúa. Entonces, si eres un experto en simulación de física, entonces debes saber cosas relacionadas con la física.
Si te interesa la seguridad, debes ser un experto en teoría de números.
En general, puede ir una combinación de estos, y cualquiera que sea su interés. Aprender nunca está de más.

2
user4626

T (n) = aT (n/b) + f (n), a> = 1, b> 1

Master Theorem es bueno saberlo para programar. Le permite resolver relaciones de recurrencia que pueden ayudarlo a encontrar la complejidad de los algoritmos recursivos. Esto es particularmente importante cuando se escribe un algoritmo de estilo "divide y vencerás". En términos generales, puede utilizar el teorema maestro para obtener la complejidad si conoce la complejidad de cada "paso" y el factor de ramificación.

2
Kurtis

Secuencia y serie matemáticas.

He visto demasiadas escuelas enseñando "escribir un ciclo para sumar todos los números entre x e y" en lugar de "los algoritmos son IMPRESIONANTES"

También ... https://docs.google.com/viewer?url=http://courses.csail.mit.edu/6.042/fall10/mcs-ftl.pdf

2
Incognito

Ley de los cosenos, muy importante para muchos problemas geométricos,

alt text

especialmente la determinación del ángulo.

2
user1842

Métodos de prueba

En particular, los que he usado con relativa frecuencia:

Hay más, y he usado muchos de ellos en un momento u otro, pero estos son los 3 que recuerdo haber usado de un vistazo. También son infinitamente útiles si puede tener en cuenta su ¡intención al escribir pruebas unitarias o de integración.

2
Steven Evers

Conocer el álgebra booleana ayuda mucho. Le evita escribir código como

if (x < 10)
    return true;
else
    return false;
1
fredoverflow
  • álgebra
  • trigonometría
  • vector (operaciones matriciales)
  • cálculo
  • [diversas interpolaciones y sus derivados]
  • [superficies, NURBS]

(los que están en brackers son más del tipo "aplicado")

Es difícil dar instrucciones generales, ya que depende en gran medida del campo en el que se encuentre. Pero lo anterior cubre los conceptos básicos de muchos grados de ingeniería. Eso sí, estas categorías a menudo se superponen (trigonometría + operaciones de matriz, cálculo + operaciones de matriz, y así sucesivamente).

Siempre tengo un manual matemático cerca. A menudo, uno no está seguro de algo y ayuda a que se presente de manera organizada.

1
Rook

Para problemas de optimización, es bueno comprender la probabilidad de registro. Por ejemplo, si está tratando de minimizar una suma de cuadrados, es lo mismo que maximizar el registro de la probabilidad, porque (en términos generales)

log( Product( exp( -(x[i]-mean)^2 )) )
  =
  - Sum( (x[i]-mean)^2 )

Otros favoritos en el ámbito del ajuste del rendimiento son las distribuciones Binomial y Beta. Son muy simples de calcular.

Si toma 10 muestras de tiempo aleatorio del estado de un programa, y ​​está en una determinada condición durante F = 40% del tiempo, entonces es como un experimento de lanzamiento de moneda con una moneda injusta. El número de veces que lo verá en esa condición es una distribución binomial con una media de 10 * 0.4 = 4 y una desviación estándar de sqrt (10 * 0.4 * 0.6) = sqrt (2.4) = 1.55.

Por otro lado, si toma 10 muestras y lo ve en esa condición en 4 muestras, ¿qué le dice eso sobre qué tan grande es F? Los posibles resultados son 0, 1, 2, 3, 4, ..., 9, 10. Esas son 11 posibilidades, y la posibilidad que viste (4) es la quinta. Por lo tanto, tome 11 números aleatorios uniformes (0,1) y ordénelos. La distribución del quinto es la distribución de F, una distribución Beta. Su modo es 4/10. Su media es el 5/11. Su varianza es 5 * 6/(11 ^ 2 * 12) = 0.021, y desviación estándar = 0.144.

Muchas personas piensan que se necesitan grandes cantidades de muestras para localizar problemas de rendimiento del software y evitar encontrar falsos. Estas distribuciones muestran que una pequeña cantidad de muestras puede revelar mucho sobre su costo.

1
Mike Dunlavey

Esto puede ser un poco simple, pero G=(V,E) es bueno tenerlo en cuenta. En otras palabras, un gráfico es un conjunto de vértices y aristas. Los gráficos son muy útiles para representar muchas cosas.

0
Jason Baker