Calculadora de convolução
Deslize uma sequência sobre a outra e some os produtos em cada posição: [1; 2; 3] com [0,5; 0,5] dá [0,5; 1,5; 2,5; 1,5]. Todas as sobreposições parciais são mantidas, então o resultado tem n + m − 1 valores. Grátis no seu navegador.
- Grátis
- Funciona no seu navegador
- Sem cadastro
- Seus dados não saem do seu aparelho
Executar grátis
Exemplo resolvido
- Primeiro texto
- 1, 2, 3
- Segundo texto
- 0,5, 0,5
- Comprimento de a
- 3
- Comprimento de b
- 2
- Comprimento
- 4
- Sequência
- 0,5, 1,5, 2,5, 1,5
A convolução discreta é a operação fundamental do processamento de sinais e da matemática aplicada: ela desliza uma sequência finita sobre a outra e, a cada sobreposição, multiplica os valores alinhados e soma os produtos. Dadas duas sequências a de comprimento n e b de comprimento m, esta calculadora retorna a convolução linear completa, uma nova sequência de comprimento n mais m menos um cujo k-ésimo valor é a soma de a[i] vezes b[j] sobre cada par de índices com i mais j igual a k. É o mesmo cálculo por trás da filtragem FIR, das médias móveis, da multiplicação de polinômios e das distribuições de probabilidade de somas de dados independentes. As duas sequências devem conter pelo menos um valor e cada valor deve ser um número finito; sequências vazias e entradas não finitas como NaN ou Infinity são rejeitadas com um erro de validação claro.
O que significa a convolução discreta e como ela é calculada
A convolução responde a uma pergunta simples: se você inverte uma sequência, desliza sobre a outra e, a cada alinhamento, multiplica os pares sobrepostos e soma os produtos, que número aparece em cada posição? Formalmente, para sequências a de comprimento n e b de comprimento m, a convolução c igual a a asterisco b é a sequência de comprimento n mais m menos um definida por c[k] igual à soma de a[i] vezes b[k menos i] sobre cada i válido.
Um exemplo concreto torna isso tangível: convoluir [1, 2, 3] com [0.5, 0.5] produz [0.5, 1.5, 2.5, 1.5], porque cada amostra de saída é a média de uma amostra de entrada com a vizinha, com pesos pela metade nas bordas. Este modo «completo», que é o que esta ferramenta retorna, mantém todas as sobreposições parciais, incluindo as posições de contato único nas duas extremidades.
O algoritmo direto usado aqui executa n vezes m passos de multiplicação e acumulação, o que é instantâneo para as sequências usadas no ensino, no projeto de filtros e na análise de dados. Vale saber que a convolução é comutativa, portanto a asterisco b é igual a b asterisco a, e associativa, de modo que suavizações encadeadas podem ser reordenadas sem mudar o resultado. A operação também se distribui sobre a adição, razão pela qual a teoria de sistemas lineares se apoia tanto nela.
Entradas, limites e regras de validação
A calculadora aceita dois campos, a e b, cada um um array não vazio de números. Os valores podem ser inteiros, decimais ou negativos, e strings numéricas em notação científica como 1.5e-3 são convertidas com segurança. Duas regras rígidas protegem o contrato.
Primeira: nenhuma sequência pode estar vazia, pois uma entrada de comprimento zero não tem convolução e é rejeitada em vez de ser tratada silenciosamente como um impulso zero. Segunda: cada elemento deve ser um número finito; NaN, Infinity e valores que transbordariam para resultados não finitos durante a acumulação são recusados com uma mensagem que nomeia o campo e o índice infratores.
Cada sequência é limitada a 4096 elementos, o que mantém o laço direto O(n·m) confortavelmente dentro do orçamento de computação e cobre todos os usos educacionais e de engenharia realistas.
Onde a convolução é usada na prática
A convolução aparece em muito mais lugares do que o nome sugere. No processamento digital de sinais, é a forma de aplicar um filtro de resposta finita ao impulso: o núcleo b contém os pesos dos taps e a saída é o sinal filtrado, de modo que uma média móvel de largura três é simplesmente a convolução com [1/3, 1/3, 1/3].
Em probabilidade, a distribuição da soma de duas variáveis aleatórias discretas independentes é a convolução de suas funções de massa de probabilidade; convoluir a distribuição uniforme de um dado consigo mesma produz a conhecida distribuição triangular de dois dados. Em álgebra, multiplicar dois polinômios é exatamente convoluir suas listas de coeficientes, o que torna esta ferramenta um verificador rápido para lições simbólicas. No processamento de imagens, núcleos bidimensionais separáveis são aplicados como duas convoluções unidimensionais em sequência.
Até o eco e a reverberação em áudio são convoluções com uma resposta ao impulso gravada em uma sala real. Onde quer que a saída de um sistema seja uma superposição deslocada e escalada de sua entrada, a convolução é a operação que a descreve.
Casos de uso
Aplicar um filtro FIR a um sinal amostrado
Informe suas amostras como sequência a e os pesos dos taps do filtro como sequência b para obter a saída filtrada. Um núcleo de suavização como [0.25, 0.5, 0.25] remove ruído de alta frequência sem nenhuma biblioteca de processamento de sinais.
Distribuição da soma de dados
Convolua a função de massa de probabilidade de um dado justo consigo mesma para obter as probabilidades exatas da soma de dois dados, e convolua novamente para três dados. Cada passo é uma chamada com números finitos e verificáveis.
Multiplicar polinômios com verificação manual
Como a multiplicação de polinômios é a convolução das listas de coeficientes, informe os coeficientes dos dois fatores e compare a sequência de saída com sua expansão simbólica para detectar na hora erros de sinal e de alinhamento.
Perguntas frequentes
Qual é o comprimento da sequência convoluída?
Se a sequência a tem n valores e a sequência b tem m valores, a convolução completa tem n + m - 1 valores.
A ordem das duas sequências importa?
Por convenção, o sinal mais longo vai em a e o núcleo mais curto em b.
Por que minha entrada foi rejeitada?
As duas regras rígidas são: nenhuma sequência pode estar vazia e cada elemento deve ser um número finito. NaN, Infinity ou resultados que transbordam durante a acumulação são rejeitados com um erro que nomeia o campo e o índice do valor infrator.
É convolução circular ou linear?
Esta ferramenta calcula a convolução linear completa com preenchimento de zeros nas duas extremidades, o mesmo resultado que você obteria com a soma direta. Ela não enrola as sequências como faz a convolução circular (cíclica).
Existe um limite de tamanho?
Cada sequência pode conter até 4096 números finitos.
Ferramentas relacionadas
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
curl -X POST https://api.kit.forhosting.com/math/convolution \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"a":[1,2,3],"b":[0.5,0.5]}'const res = await fetch("https://api.kit.forhosting.com/math/convolution", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"a": [
1,
2,
3
],
"b": [
0.5,
0.5
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/math/convolution",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"a": [
1,
2,
3
],
"b": [
0.5,
0.5
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/math/convolution", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"a":[1,2,3],"b":[0.5,0.5]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"a":[1,2,3],"b":[0.5,0.5]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/math/convolution", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemplo de requisição
{
"a": [
1,
2,
3
],
"b": [
0.5,
0.5
]
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "math.convolution",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Limites
max_items | 4096 |
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |
Notas técnicas
A ferramenta gratuita do navegador e a API paga executam a mesma função pura, de modo que os resultados nunca divergem entre os canais.
Entradas, limites e regras de validação
O objeto de saída informa length_a, length_b, o comprimento de saída e a própria sequência convoluída sob a chave sequence, de modo que scripts podem verificar os tamanhos sem recalculá-los.
Onde a convolução é usada na prática
O caminho da API custa US$ 0,002 por requisição, enquanto a ferramenta do navegador executa a mesma matemática gratuitamente.
Perguntas técnicas
Quanto custa a API?
A calculadora do navegador é gratuita e ilimitada. Chamar a mesma capacidade pela API custa US$ 0,002 por requisição; os dois canais executam a mesma função determinística.