Como / quando o cálculo é usado na Ciência da Computação?

Comentários

  • Não ' não temos uma política rígida para perguntas de lista, mas há uma antipatia geral . Observe também esta e esta discussão; você pode querer melhorar sua pergunta para evitar os problemas explicados lá. Se você não tem certeza de como melhorar sua pergunta, talvez possamos ajudá-lo no Bate-papo da ciência da computação ?
  • Você parece cometer o erro comum de assumir que o conteúdo de cada curso tem que ser relevante (para cada plano de carreira). Às vezes, é apenas para treinar você a pensar de certas maneiras.
  • Os comentários não são para discussões extensas; esta conversa foi movida para o bate-papo .

Resposta

Posso pensar em alguns cursos que precisariam de Cálculo, diretamente . Usei negrito para as disciplinas normalmente obrigatórias para um diploma de Ciência da Computação e itálico para as geralmente opcionais.

  • Computação Gráfica / Processamento de imagem, e aqui você também precisará de geometria analítica e álgebra linear, pesadamente ! Se você seguir este caminho, você também pode querer estudar alguma geometria diferencial (que tem cálculo multivariado como um pré-requisito mínimo). Mas você “precisará de Cálculo aqui mesmo para coisas muito básicas: tente pesquisar por” Transformada de Fourier “ou” Wavelets “, por exemplo – essas são duas ferramentas fundamentais para quem trabalha com imagens.
  • Otimização , não linear principalmente, onde o cálculo multivariado é a linguagem fundamental usada para desenvolver tudo. Mas mesmo a otimização linear se beneficia do cálculo (o derivada da função objetivo é absolutamente importante)
  • Probabilidade / estatística . Não podem ser estudados seriamente sem Cálculo multivariado.
  • Aprendizado de máquina , que faz uso intenso de estatística (e, conseqüentemente, cálculo multivariado)
  • Ciência de dados e assuntos relacionados, que também usam muita estatística;
  • Robótica , onde você precisará modelar os movimentos físicos de um robô, então você precisará saber derivadas parciais e gradientes.
  • Matemática discreta e combinatória ( sim! , você pode precisar de Cálculo para contagem discreta!) – se você levar a sério a geração de funções, precisará saber como integrar e derivar certas fórmulas. E isso é útil para Análise de Algoritmos (veja o livro de Sedgewick e Flajolet, “Análise de Algoritmos”). Da mesma forma, a série de Taylor e o cálculo podem ser úteis na resolução de certos tipos de relações de recorrência, que são usados na análise de algoritmos.
  • Análise de algoritmos , onde você usa a noção de limite desde o início (veja a notação Landau, “little $ o $ ” – it “s definido usando um limite)

Pode haver outros – isso está apenas no topo da minha cabeça.

E, além disso, um 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 costuma pensar.

Finalmente – você precisará do cálculo para, bem, interagir com pessoas de outras ciências exatas e engenharia. E não é incomum que um cientista da computação precise não apenas falar, mas também trabalhar junto com um físico ou engenheiro.

Comentários

  • Talvez você tenha tido uma experiência diferente, mas eu achei o cálculo bastante inútil para aprender como raciocinar e explicar argumentos com rigor. Era ensinado por correspondência mecânica e de padrões, quase como álgebra e geometria do ensino médio.Por outro lado, era o pré-requisito para várias classes superiores de matemática que ensinava essas habilidades, então suponho que não ' t totalmente inútil.
  • Posso me identificar totalmente com o último ponto (benefícios indiretos). Trabalhando com teoria das linguagens de programação, raramente usei cálculo diretamente. Talvez a aplicação mais direta tenha sido em modelos computacionais probabilísticos (por exemplo, Plotkin & domínios de poder probabilísticos de Jones). No entanto, meu curso de cálculo era principalmente sobre provar coisas, e isso era muito, muito valioso. Um ou dois cursos de cálculo são IMHO necessários em todo programa sério de CS, junto com um pouco mais de matemática (matemática discreta, lógica, álgebra linear, análise numérica, … e possivelmente categorias, topologia, álgebra, …).
  • Aqui ' é um exemplo de como eu precisava de cálculos em computação gráfica: funções de interpolação suaves basicamente terão a forma f(0) = 0 , f(1) = 1, f'(0) = f'(1) = 0, e você pode adicionar qualquer outra restrição de seu interesse, por exemplo f'(0.5) = 1. Um pouco atrás, usei isso para derivar alguns polinômios de interpolação diferentes para imagens de suavização.
  • A robótica provavelmente pode ser expandida para qualquer tipo de modelagem física (que eu acho que também cobre CG, em termos de iluminação, então vamos ' s chamam de modelagem física cinética). Isso inclui aceleração / velocidade, saltos / molas / deformação, controladores PID, acústica, gravitação …
  • Eu ' vou defender o ponto indireto desta forma: melhor do que qualquer aula anterior, Cálculo ensina aos alunos que eles podem ' simplesmente contar o número de problemas e estimar quanto trabalho será necessário.

Resposta

Isso é um tanto obscuro, mas o cálculo aparece em tipos de dados algébricos. Para qualquer tipo, o tipo de seus contextos de um buraco é 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 se deparado com tuplas sendo chamadas de tipos de produto (se não, é porque eles são o produto cartesiano de dois tipos). Vamos interpretar isso literalmente e usar a notação:

$$ a * b $$

Para representar uma tupla, onde $ a $ e $ b $ são os dois tipos. Em seguida, você pode ter encontrado tipos de soma são tipos que podem ser um tipo ou outro (conhecido como uniões , variantes ou como Qualquer digite (meio que) em Haskell). Também vamos interpretar este literalmente e usar a notação:

$$ a + b $$

Estes são nomeados como são porque se um tipo $ a $ tiver $ N_a $ valores e um tipo $ b $ tem $ N_b $ valores, então o tipo $ a + b $ tem $ N_a + N_b $ valores.

Esses tipos parecem expressões algébricas normais e podemos, de fato, manipulá-los como tal (até certo ponto).

Um exemplo

Em linguagens funcionais, uma definição comum de lista (dada em Haskell aqui) é esta:

data List a = Empty | Cons a List 

Isso diz que uma lista está vazia ou uma tupla de um valor e outra lista. Transformando isso em notação algébrica, obtemos:

$$ L (a) = 1 + a * L (a) $$

Onde $ 1 $ representa um tipo com um valor (também conhecido como o tipo de unidade). Inserindo repetidamente, podemos avaliar isso para obter uma definição para $ L (a) $ :

$$ L (a) = 1 + a * L (a) $$ $$ L (a) = 1 + a * (1 + a * L ( a)) $$ $$ L (a) = 1 + a + a ^ 2 * (1 + a * L (a)) $$ $$ L (a) = 1 + a + a ^ 2 + a ^ 3 * (1 + a * L (a)) $$ $$ L (a) = 1 + a + a ^ 2 + a ^ 3 + a ^ 4 + a ^ 5 … $$

(Onde $ x ^ n $ significa multiplicação repetida.)

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 em para contextos de um furo: um contexto de um furo é o que você obtém quando “tira um valor” de um tipo de produto. Vamos dar um exemplo:

Para uma 2-tupla simples que é homogênea, $ a ^ 2 $ , se retirarmos um valor , obtemos apenas 1 tupla, $ a $ .Mas há dois contextos diferentes de um orifício desse tipo: a saber, o primeiro e o segundo valores da tupla. Portanto, como é qualquer um desses, poderíamos escrever que é $ a + a $ , que é, obviamente, $ 2 a $ . É aqui que a diferenciação entra em jogo. Vamos confirmar isso com outro exemplo:

Tirar um valor de uma 3-tupla resulta em 2-tupla, mas há três variantes diferentes:

$$ (a, a, \ _) $$ $$ (a, \ _, a) $$ $$ (\ _, a, a) $$

Dependendo de onde colocarmos o buraco. Isso nos dá $ 3a ^ 2 $ que é de fato o derivado de $ a ^ 3 $ . Há uma prova disso em geral aqui .

Para nosso exemplo final, vamos usar uma lista:

Se tomarmos nossa expressão original para uma lista:

$$ L (a) = 1 + a * L (a) $$

Podemos reorganizar para obter:

$$ L (a) = \ frac {1} {1 – a} $$

(Na superfície, isso pode parecer um absurdo, mas se você pegar a série taylor desse resultado, obterá a definição que derivamos anteriormente.)

Agora, se diferenciarmos isso, e um resultado interessante:

$$ \ frac {\ partial L (a)} {\ partial a} = (L (a)) ^ 2 $$

Assim, uma lista se tornou um par de listas. Na verdade, isso faz sentido: as duas listas produzidas correspondem aos elementos acima e abaixo da lacuna na lista original!

Comentários

  • Isso foi maravilhosamente perspicaz. Obrigado.

Resposta

Métodos numéricos. Existem problemas de cálculo complicados que são exclusivos de aplicações específicas e eles precisam de soluções mais rápidas do que um ser humano pode resolver sem um programa. Alguém precisa projetar um algoritmo que calcule a solução. Não é essa a única coisa que separa os programadores dos cientistas?

Comentários

  • Dado o " list " natureza desta pergunta, cada resposta deve tentar fornecer uma imagem completa. Tem certeza de que deseja afirmar que os métodos numéricos são a única instância?
  • Os comentários não são para discussão prolongada; esta conversa foi movida para o bate-papo .

Resposta

Automação – Semelhante à robótica, automação pode exigir a quantificação de muito comportamento humano.

Cálculos – Encontrar soluções para as provas geralmente requer cálculos.

Visualizações – A utilização de algoritmos avançados requer cálculos como cos, seno, pi e e. Especialmente quando você está calculando ting vetores, campos de colisão e malhas.

Logística e análise de risco – Determinar 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 executada sem cálculo; no entanto, muitas pessoas que desejam explicações preferem em expressões matemáticas.

AI – Os fundamentos da AI pode ser utilizado sem cálculo; no entanto, calcular comportamento avançado, inteligência de enxame / mentes coletivas e tomada de decisão baseada em valores complexos.

Cálculos médicos – Visualizar a maioria dos dados de saúde requer cálculos, como uma leitura de EKG.

Ciência & Engenharia – Ao trabalhar com quase qualquer outra disciplina científica exige cálculo: Aeroespacial, Astrologia, Biologia, Química ou Engenharia.

Muitas pessoas na programação podem seguir toda a sua carreira sem usando 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. Identificando padrões específicos, você pode simplesmente ignorar o padrão, imitar o padrão ou desenvolver um método superior todos juntos.

Comentários

  • Como são cos, seno, $ \ pi $ e $ \ mathrm {e} $ calculus?
  • Bem, $ \ exp (x) $ pode ser definido para ser a solução única para $ f (x) = f ' (x) $ com $ f ( 0) = 1 $ e, da mesma forma, sin, cos pode ser definido como o par exclusivo de funções que satisfaz $ f ' (x) = g (x) $, $ g ' (x) = -f (x) $ com condições de contorno apropriadas (acho que $ f (0) = 0 $ e $ g (0) = 1 $ deve funcionar).
  • @DavidRicherby: Exemplo: como você implementa essas funções em, digamos, um microcontrolador sem FPU? Se você conhece cálculo, sabe imediatamente uma boa resposta: séries de potências.

Resposta

O fato é que há muito pouca chance de você usar cálculo. No entanto, praticamente todas as outras disciplinas científicas FAZEM uso de cálculo e você está se formando 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 que você nunca use isso.

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 do 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 programadores.

Comentários

  • Seu primeiro parágrafo está completamente errado e beirando a teoria da conspiração. Existem muitas áreas da ciência da computação onde o cálculo é útil (veja as outras respostas para listas intermináveis delas). Claro, é ' possível evitar todas essas áreas, mas ' é muito enganoso afirmar que a eliminação do cálculo terá impacto zero além notas.
  • Dependendo do seu programa de graduação, você pode concluir um diploma sem nunca usar cálculo, e eu definitivamente acho que os maiores CS não ' não precisam disso como nós começamos. Mas ir mal nisso o deixará fora de algumas das áreas mais interessantes da ciência da computação. Haverá ' muito tempo para ser um desenvolvedor da Web assim que você se formar; enquanto estiver na escola, por que não tentar se esforçar um pouco?
  • @tsleyson Se você quer ser um desenvolvedor web, economize o dinheiro e o tempo necessários para obter um diploma de CS.
  • @ScottB Você parece estar confundindo ciência da computação com programação.
  • @ScottB Quem ' está dizendo CS = matemática + programação? Eu mesmo venho defendendo essa visão limitada há anos. Mas você também entendeu ao contrário: a matemática é parte integrante do CS, assim como é para a física. Nós precisamos disso, mesmo que não ' queiramos praticar . (Dito isso, este não é o lugar para esta discussão. Junte-se a nós no Bate-papo da Ciência da Computação se quiser continuar.)

Resposta

Muitas pessoas já forneceram aplicativos em CS. Mas às vezes você encontrará Cálculo quando menos espera:

Derivadas de expressão regular reexaminadas

Se você souber autômatos este pdf pode valer a pena ler.

Comentários

  • Eu não ' não vejo nenhum cálculo diferencial lá; vejo a palavra " derivada ", mas não ' não vejo nada semelhante ao cálculo diferencial tradicional.
  • Ele ' é chamado de " derivada formal ", e está relacionado ao Cálculo, de certa forma. Você também verá isso feito com Funções Geradoras, algumas fórmulas relacionadas a estruturas discretas e outras áreas onde você não ' t na verdade, tem uma " função suave ".
  • @Jay: O importante én ' o nome. Como o entendo ng cálculo ajuda com isso?
  • É explicado nesta página da Wikipedia . A derivada formal é uma operação em elementos da estrutura analgébrica que contém polinômios e é formalmente " bem como " a regra usual para diferenciação polinômios, entretanto – diferentemente do que um estudante vê em Cálculo – os polinômios não são sobre reais; eles podem ser polinômios sobre um " anel " arbitrário (outra estrutura algébrica). E há aplicações práticas da derivada formal – eu vi pelo menos uma (criptoanálise algébrica – não pode ' lembrar os detalhes).

Resposta

Alguns exemplos mais específicos:

  • O cálculo é usado para derivar o regra delta , que permite que alguns tipos de redes neurais “aprendam”.
  • O cálculo pode ser usado para calcular a transformada de Fourier de uma função oscilante, muito importante em análise de sinais.
  • O cálculo é usado o tempo todo na computação gráfica, que é um campo muito ativo à medida que as pessoas continuamente descobrem novas técnicas. Para obter um exemplo fundamental, verifique a equação de renderização de Kajiya
  • O cálculo é importante no campo da geometria computacional, investigue a modelagem de curvas e superfícies.

Resposta

A essas outras respostas excelentes, adiciono este ponto: rigor no teste .

Ao criar casos de teste para alguns aplicativos, tive que fazer uso de cálculo para prever os 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 as estatísticas sejam mencionadas em outras respostas, gostaria de mencionar especificamente algoritmos de Monte-carlo , como algoritmos de otimização e alguns algoritmos de streaming frugais que são baseados em princípios matemáticos que incluem cálculo.

Indústrias específicas onde 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 de apólice)

  • Logística (otimizando a consolidação de rotas de transporte)

  • Processamento de sinal

Resposta

Cálculo – a parte integral – é usada diretamente no CS como uma base para pensar sobre a soma. Se você trabalhar em qualquer parte da seção de matemática concreta de Knuth sobre soma, você reconhecerá rapidamente as convenções comuns ao cálculo: entender alguns dos casos contínuos fornece ferramentas para considerar o discreto.

Muitos dos usos do seu estudo de ciência da computação envolvem sistemas de programação que monitoram as mudanças ou, em alguns casos, tentam prever o futuro. A matemática em torno desses sistemas é baseada em equações diferenciais e álgebra linear, e as equações diferenciais são … cálculo. Existem professores como Gibert Estranhos que defendem uma mudança mais rápida para a parte das equações diferenciais, mas ainda é um subconjunto do cálculo. Quando a mudança depende da mudança em qualquer sistema, ele começa a ser instável (e estável) de maneiras que são não intuitivas e muito bem entendido. Para entender por que seu sistema linear sensato está se comportando de maneiras não lineares, você precisa das ferramentas de cálculo ou reinventá-las para o seu espaço de problema.

E, finalmente, o CS frequentemente requer a leitura e a compreensão do trabalho de outros, e o cálculo é a primeira exposição a muito vocabulário, convenção e história compartilhados.

Comentários

  • " Muitos dos usos do seu estudo de CS envolvem sistemas de programação que monitoram mudanças, ou, em alguns casos, tente prever o futuro " – Não ' não acho que isso seja representativo dos principais cursos de ciências da computação.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *