Muchos programas de informática requieren dos o tres clases de cálculo.
Me pregunto, ¿cómo y cuándo se usa el cálculo en informática? El contenido de CS de un título en informática tiende a centrarse en algoritmos, sistemas operativos, estructuras de datos, inteligencia artificial, ingeniería de software, etc. ¿Hay momentos en que el cálculo es útil en estas u otras áreas de la informática?
education
mathematical-analysis
Víctor
fuente
fuente
Respuestas:
Puedo pensar en algunos cursos que necesitarían Cálculo, directamente . He usado negrita para las disciplinas usualmente obligatorias para un título en Ciencias de la Computación, y cursiva para las usualmente opcionales.
Puede haber otros, esto está justo fuera de mi cabeza.
Y, además de eso, uno se beneficia indirectamente de un curso de Cálculo al aprender a razonar y explicar argumentos con rigor técnico. Esto es más valioso de lo que los estudiantes suelen pensar.
Finalmente, necesitará Cálculo para, bueno, interactuar con personas de otras Ciencias Exactas e Ingeniería. Y no es raro que un informático necesite no solo hablar sino también trabajar junto con un físico o un ingeniero.
fuente
f(0) = 0
,f(1) = 1
,f'(0) = f'(1) = 0
, y usted puede añadir cualquier otra limitación que le interesan, por ejemplof'(0.5) = 1
. Hace poco usé esto para derivar algunos polinomios de interpolación diferentes para suavizar imágenes.Esto es algo oscuro, pero el cálculo aparece en tipos de datos algebraicos. Para cualquier tipo dado, el tipo de sus contextos de un agujero es la derivada de ese tipo. Vea esta excelente charla para una visión general de todo el tema. Esta es una terminología muy técnica, así que expliquemos.
Tipos de datos algebraicos
Es posible que haya encontrado tuplas que se conocen como tipos de productos (si no, es porque son el producto cartesiano de dos tipos). Vamos a tomar esto literalmente y usar la notación:
Para representar una tupla, donde y son ambos tipos. A continuación, es posible que haya encontrado tipos de suma, estos son tipos que pueden ser de un tipo u otro (conocidos como uniones , variantes o como el tipo Cualquiera (un poco) en Haskell). También vamos a tomar esto literalmente y usar la notación:a b
Estos se nombran tal como están porque si un tipo tiene valores y un tipo tiene valores , entonces el tipo tiene valores .a Na b Nb a+b Na+Nb
Estos tipos parecen expresiones algebraicas normales y, de hecho, podemos manipularlos como tales (hasta cierto punto).
Un ejemplo
En los lenguajes funcionales, una definición común de una lista (dada en Haskell aquí) es esta:
Esto dice que una lista está vacía o una tupla de un valor y otra lista. Transformando eso a notación algebraica, obtenemos:
Donde representa un tipo con un valor (también conocido como el tipo de unidad). Al insertar repetidamente, podemos evaluar esto para obtener una definición de :1 L(a)
(Donde se entiende en el sentido de multiplicación repetida).xn
¡Esta definición dice que una lista es una unidad, o una tupla de un elemento, o una tupla de dos elementos, o de tres, etc., que es la definición de una lista!
Contextos de un agujero
Ahora en contextos de un agujero: un contexto de un agujero es lo que obtienes cuando 'sacas un valor' de un tipo de producto. Pongamos un ejemplo:
Para una simple 2-tupla que es homogénea, , si sacamos un valor, solo obtenemos una 1-tupla, . Pero hay dos contextos de un agujero diferentes de este tipo: a saber, el primer y el segundo valor de la tupla. Entonces, como es cualquiera de estos, podríamos escribir que es , que es, por supuesto, . Aquí es donde entra en juego la diferenciación. Confirmemos esto con otro ejemplo:a2 a a+a 2a
Sacar un valor de una tupla de 3 da una tupla de 2, pero hay tres variantes diferentes:
( a , _ , a ) ( _ , a , a )
Dependiendo de dónde ponemos el agujero. Esto nos da que de hecho es la derivada de . Hay una prueba de esto en general aquí .a 33a2 a3
Para nuestro ejemplo final, usemos una lista:
Si tomamos nuestra expresión original para una lista:
Podemos reorganizar para obtener:
(En la superficie, esto puede parecer una tontería, pero si toma la serie taylor de este resultado, obtiene la definición que obtuvimos anteriormente).
Ahora, si diferenciamos esto, obtenemos un resultado interesante:
Así, una lista se ha convertido en un par de listas. De hecho, esto tiene sentido: ¡las dos listas producidas corresponden a los elementos arriba y debajo del agujero en la lista original!
fuente
Métodos numéricos. Existen problemas de cálculo engorrosos que son exclusivos de aplicaciones específicas, y necesitan soluciones más rápido de lo que un humano prácticamente puede resolver sin un programa. Alguien tiene que diseñar un algoritmo que calcule la solución. ¿No es eso lo único que separa a los programadores de los científicos?
fuente
Automatización : similar a la robótica, la automatización puede requerir cuantificar una gran cantidad de comportamiento humano.
Cálculos : encontrar soluciones a las pruebas a menudo requiere cálculo.
Visualizaciones : la utilización de algoritmos avanzados requiere cálculos como cos, sine, pi y e. Especialmente cuando estás calculando vectores, campos de colisión y mallas.
Logística y análisis de riesgos : determinar si una tarea es posible, el riesgo involucrado y la posible tasa de éxito.
Seguridad : la mayoría de la seguridad se puede realizar sin cálculo; sin embargo, muchas personas que quieren explicaciones lo prefieren en expresiones matemáticas.
AI : los conceptos básicos de la IA se pueden utilizar sin cálculo; sin embargo, el cálculo del comportamiento avanzado, la inteligencia de enjambre / mentes colmena y la toma de decisiones basadas en valores complejos.
Cálculos médicos : la visualización de la mayoría de los datos de salud requiere cálculo, como una lectura de EKG.
Ciencia e ingeniería : cuando se trabaja con casi cualquier otra disciplina científica se requiere cálculo: aeroespacial, astrología, biología, química o ingeniería.
Muchas personas en la programación pueden seguir toda su carrera sin usar cálculo; sin embargo, puede resultar invaluable si estás dispuesto a hacer el trabajo. Para mí ha sido más efectivo en automatización, logística y visualización. Al identificar patrones específicos, simplemente puede ignorar el patrón, imitarlo o desarrollar un método superior todos juntos.
fuente
El hecho es que hay muy pocas posibilidades de que alguna vez uses cálculo. Sin embargo, prácticamente todas las demás disciplinas científicas SÍ usan cálculos y usted está trabajando en un título en ciencias. Hay ciertas expectativas de lo que se supone que significa un título universitario en ciencias y una de esas cosas es que conoces el cálculo. Incluso si nunca lo usarás.
Está bien si te va mal en el cálculo, pero asegúrate de poner un poco de esfuerzo en las matemáticas discretas. Hay muchos problemas de programación en el mundo real en los que las matemáticas discretas entran en juego y la ignorancia de sus principios puede avergonzarte frente a otros programadores.
fuente
Muchas personas ya proporcionaron aplicaciones en CS. Pero a veces encontrarás Cálculo cuando menos lo esperas:
Derivados de expresión regular reexaminados
Si conoces los autómatas, vale la pena leer este pdf.
fuente
Algunos ejemplos más específicos:
fuente
A estas otras excelentes respuestas agrego este punto: rigor en las pruebas .
Al crear casos de prueba para algunas aplicaciones, he tenido que utilizar el cálculo para predecir los tiempos de ejecución esperados, los tamaños de memoria y elegir los parámetros óptimos al ajustar las estructuras de datos. Esto incluye comprender el error de redondeo esperado, etc.
Si bien las estadísticas se mencionan en otras respuestas, me gustaría mencionar específicamente los algoritmos de Montecarlo , como los algoritmos de optimización y algunos algoritmos de transmisión frugales que se basan en principios matemáticos que incluyen el cálculo.
Las industrias específicas donde he trabajado donde se requería el cálculo incluyen:
Finanzas (creación de una plataforma de negociación)
Seguros (integración numérica de pólizas de seguros en escenarios hipotéticos para calcular las pérdidas esperadas de pólizas)
Logística (optimizando la consolidación de rutas de transporte)
Procesamiento de la señal
fuente
El cálculo, la parte integral, se usa directamente en CS como base para pensar en la sumatoria. Si trabaja en cualquier parte de la sección de Matemáticas concretas de Knuth sobre sumatoria, reconocerá rápidamente las convenciones comunes al cálculo: comprender algunos de los casos continuos le brinda herramientas para considerar el discreto.
Muchos de los usos de su estudio de CS involucran sistemas de programación que monitorean el cambio, o en algunos casos, intentan predecir el futuro. La matemática en torno a esos sistemas se basa en ecuaciones diferenciales y álgebra lineal, y las ecuaciones diferenciales son ... cálculo. Hay maestros como Gibert Strang que abogan por avanzar más rápidamente en la parte de ecuaciones diferenciales, pero todavía es un subconjunto de cálculo. Cuando el cambio depende del cambio en cualquier sistema, comienza a ser inestable (y estable) en formas que son no intuitivas y muy bien entendidas. Para comprender por qué su sistema lineal sensible se comporta de manera no lineal, necesita las herramientas de cálculo o necesita reinventarlas para su espacio problemático.
Y finalmente, la CS a menudo requiere leer y comprender el trabajo de los demás, y el cálculo es la primera exposición a una gran cantidad de vocabulario, convención e historia compartidos.
fuente