Muitos programas de ciência da computação requerem duas ou três classes de cálculo.
Gostaria de saber como e quando o cálculo é usado na ciência da computação. O conteúdo de uma graduação em ciência da computação tende a se concentrar em algoritmos, sistemas operacionais, estruturas de dados, inteligência artificial, engenharia de software, etc. Há momentos em que o Cálculo é útil nessas ou em outras áreas da ciência da computação?
education
mathematical-analysis
Vencedor
fonte
fonte
Respostas:
Eu posso pensar em alguns cursos que precisariam de Cálculo diretamente . Usei o rosto arrojado para as disciplinas geralmente obrigatórias para um diploma em Ciência da Computação e o itálico para as disciplinas geralmente opcionais.
Pode haver outros - isso está fora do topo da minha cabeça.
Além disso, alguém se beneficia indiretamente de um curso de Cálculo, aprendendo a raciocinar e explicar argumentos com rigor técnico. Isso é mais valioso do que os alunos normalmente pensam.
Finalmente - você precisará de Cálculo para interagir com pessoas de outras Ciências e Engenharia Exatas. E não é incomum que um cientista da computação precise não apenas falar, mas também trabalhar em conjunto com um físico ou um engenheiro.
fonte
f(0) = 0
,f(1) = 1
,f'(0) = f'(1) = 0
, e você pode adicionar quaisquer outras restrições que lhe interessam, por exemplof'(0.5) = 1
. Há pouco tempo, usei isso para derivar alguns polinômios de interpolação diferentes para suavizar imagens.Isso é um tanto obscuro, mas o cálculo aparece nos tipos de dados algébricos. Para qualquer tipo, o tipo de seus contextos de um furo é a derivada desse tipo. Veja esta excelente palestra para uma visão geral de todo o assunto. Esta é uma terminologia muito técnica, então vamos explicar.
Tipos de dados algébricos
Você pode ter encontrado tuplas sendo chamadas de tipos de produtos (se não, é porque são produtos cartesianos de dois tipos). Vamos entender isso literalmente e usar a notação:
Para representar uma tupla, onde e são os dois tipos. Em seguida, você pode se deparar com tipos de soma, tipos que podem ser de um tipo ou de outro (conhecido como uniões , variantes ou como o tipo Either (meio que) em Haskell). Também vamos levar este literalmente e usar a notação:a b
Eles são nomeados como são porque, se um tipo possui valores e um tipo possui valores , o tipo possui valores .a Na b Nb a+b Na+Nb
Esses tipos parecem expressões algébricas normais e podemos, de fato, manipulá-las como tal (até certo ponto).
Um exemplo
Nas linguagens funcionais, uma definição comum de uma lista (fornecida aqui em Haskell) é a seguinte:
Isso indica que uma lista está vazia ou uma tupla de um valor e outra lista. Transformando isso em notação algébrica, obtemos:
Onde representa um tipo com um valor (também conhecido como tipo de unidade). Ao inserir repetidamente, podemos avaliar isso para obter uma definição para :1 L(a)
(Onde se entende no sentido de multiplicação repetida.)xn
Esta definição diz então que uma lista é uma unidade, ou uma tupla de um item, ou uma tupla de dois itens, ou de três etc, que é a definição de uma lista!
Contextos de um buraco
Agora, para contextos de um orifício: um contexto de um orifício é o que você obtém quando 'extrai um valor' de um tipo de produto. Vamos dar um exemplo:
Para uma simples tupla de 2 que é homogênea, , se extrairmos um valor, obtemos apenas uma tupla de 1, . Mas existem dois contextos de um buraco diferentes desse tipo: o primeiro e o segundo valores da tupla. Então, como é um desses, poderíamos escrever que é , que é, é claro, . É aqui que a diferenciação entra em cena. Vamos confirmar isso com outro exemplo:a2 a a+a 2a
Tirar um valor de uma tupla de três fornece uma dupla de duas, mas existem três variantes diferentes:
Dependendo de onde colocamos o buraco. Isso nos dá que é de fato a derivada de . Há uma prova disso em geral aqui .3a2 a3
Para o nosso exemplo final, vamos usar uma lista:
Se levarmos nossa expressão original para uma lista:
Podemos reorganizar para obter:
(Na superfície, isso pode parecer absurdo, mas se você considerar a série taylor desse resultado, obterá a definição que derivamos anteriormente.)
Agora, se diferenciarmos, obtemos um resultado interessante:
Assim, uma lista se tornou um par de listas. Isso de fato faz sentido: as duas listas produzidas correspondem aos elementos acima e abaixo do furo na lista original!
fonte
Métodos numéricos. Existem problemas de cálculo complexos, exclusivos de aplicativos específicos, e eles precisam de soluções mais rapidamente do que um ser humano pode praticamente resolver sem um programa. Alguém tem que projetar um algoritmo que calcule a solução. Não é a única coisa que separa os programadores dos cientistas?
fonte
Automação - Semelhante à robótica, a automação pode exigir a quantificação de muito comportamento humano.
Cálculos - Encontrar soluções para provas geralmente requer cálculo.
Visualizações - A utilização de algoritmos avançados requer cálculos como cos, seno, pi e e. Especialmente quando você está calculando vetores, campos de colisão e malhas.
Logística e análise de risco - Determinando se uma tarefa é possível, o risco envolvido e a possível taxa de sucesso.
Segurança - a maior parte da segurança pode ser realizada sem cálculo; no entanto, muitas pessoas que desejam explicações o preferem em expressões matemáticas.
IA - O básico da IA pode ser utilizado sem cálculo; no entanto, calcular comportamento avançado, inteligência de enxame / mentes de colméia e tomada de decisões complexas baseadas em valores.
Cálculos médicos - A visualização da maioria dos dados de saúde requer cálculo, como uma leitura de ECG.
Ciência e Engenharia - Ao trabalhar com praticamente qualquer outra disciplina científica, é necessário cálculo: Aeroespacial, Astrologia, Biologia, Química ou Engenharia.
Muitas pessoas na programação podem seguir sua carreira inteira sem usar cálculo; no entanto, pode ser inestimável se você estiver disposto a fazer o trabalho. Para mim, tem sido mais eficaz em automação, logística e visualização. Ao identificar padrões específicos, você pode simplesmente ignorá-lo, imitá-lo ou desenvolver um método superior todos juntos.
fonte
O fato é que há muito pouca chance de você usar cálculo. No entanto, praticamente todas as outras disciplinas científicas usam cálculo e você está trabalhando em um diploma em ciências. Existem certas expectativas sobre o que um diploma universitário em ciências deve significar e uma dessas coisas é que você sabe cálculo. Mesmo se você nunca vai usá-lo.
Não há problema se você se sair mal em cálculo, mas certifique-se de colocar algum esforço em matemática discreta. Existem muitos problemas de programação no mundo real em que a matemática discreta entra em jogo e a ignorância de seus princípios pode constrangê-lo na frente de outros codificadores.
fonte
Muitas pessoas já forneceram aplicativos no CS. Mas, às vezes, você encontrará Cálculo quando menos espera:
Derivados de expressão regular reexaminados
Se você conhece os autômatos, vale a pena ler este pdf.
fonte
Alguns exemplos mais específicos:
fonte
A essas outras excelentes respostas, acrescento este ponto: rigor nos testes .
Ao criar casos de teste para alguns aplicativos, tive que usar o cálculo para prever tempos de execução esperados, tamanhos de memória e escolher parâmetros ideais ao ajustar estruturas de dados. Isso inclui a compreensão do erro de arredondamento esperado etc.
Embora a estatística seja mencionada em outras respostas, eu gostaria de mencionar especificamente os algoritmos de Monte Carlo , como algoritmos de otimização e alguns algoritmos frugal de streaming baseados em princípios matemáticos que incluem cálculo.
Indústrias específicas nas quais trabalhei onde o cálculo era necessário incluem:
Finanças (criando uma plataforma de negociação)
Seguro (integração numérica de apólices de seguro em cenários hipotéticos para calcular as perdas esperadas)
Logística (otimizando a consolidação de rotas de transporte)
Processamento de sinal
fonte
O cálculo - a parte integral - é usado diretamente no CS como base para pensar sobre a soma. Se você trabalhar com qualquer parte da seção de Matemática Concreta de Knuth sobre somatória, reconhecerá rapidamente convenções comuns ao cálculo: entender alguns casos contínuos fornece ferramentas para considerar o discreto.
Muitos dos usos do seu estudo de CS envolvem sistemas de programação que monitoram mudanças ou, em alguns casos, tentam prever o futuro. A matemática em torno desses sistemas está enraizada em equações diferenciais e álgebra linear, e equações diferenciais são ... cálculo. Há professores como Gibert Strang que defendem a mudança mais rápida para a parte das equações diferenciais, mas ainda é um subconjunto de cálculo. Quando a mudança depende da mudança em qualquer sistema, ela começa a ser instável (e estável) de maneiras não intuitivas e muito bem compreendidas. Para entender por que seu sistema linear sensível está se comportando de maneiras não lineares, você precisa das ferramentas de cálculo ou as reinventa para o espaço problemático.
E, finalmente, o CS geralmente exige a leitura e a compreensão do trabalho de outras pessoas, e o cálculo é a primeira exposição a muitos vocabulários, convenções e história compartilhados.
fonte