Calculadora SIR
Com 990 pessoas suscetíveis e 10 infectadas, taxa de infecção de 0,3 e de recuperação de 0,1, o número básico de reprodução é 3 e há cerca de 24 infectados no dia 5. Receba a tabela diária de S, I e R. 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
- Taxa de infecção
- 0,3
- Taxa de recuperação
- 0,1
- Suscetíveis
- 990
- Infectados
- 10
- Recuperados
- 0
- Dias
- 5
- População
- 1.000
- Pico de infectados
- 24,35274342
- Dia do pico
- 5
- Suscetíveis finais
- 968,26496445
O modelo epidêmico SIR clássico divide uma população fechada em três compartimentos: quem ainda é suscetível à infecção, quem está infeccioso neste momento e quem se recuperou e é tratado como imune pelo resto da simulação. Esta calculadora SIR de infecção viral avança esse modelo um dia de cada vez a partir de uma taxa de infecção, uma taxa de recuperação, os três tamanhos iniciais de compartimento e um horizonte em dias. A cada jornada as novas infecções passam de suscetíveis para infectados na proporção dos dois grupos, e as recuperações passam de infectados para recuperados segundo a taxa de recuperação. A resposta é uma tabela dia a dia das contagens de suscetíveis, infectados e recuperados, junto com o número básico de reprodução implícito e o pico da curva de infectados. Taxas de infecção ou de recuperação negativas são rejeitadas como entrada inválida em vez de virarem valores absolutos.
Como o modelo epidêmico SIR é definido
O modelo de suscetíveis-infectados-recuperados é a epidemia de população fechada mais compacta que ainda mostra uma curva de infectados que sobe e desce. Todas as pessoas começam em um de três estoques: suscetíveis que podem contrair o patógeno, infectados que podem transmiti-lo e recuperados tratados como imunes no restante desta execução. Não há nascimentos, mortes nem migrações, de modo que o total N igual a S mais I mais R permanece constante e só serve de escala para o contato.
Um valor acima de um é a condição clássica de decolagem epidêmica, e o limiar educativo de imunidade de rebanho um menos um sobre R0 é informado só nesse caso. A implementação é o método de Euler diário de livro, não um solver adaptativo de equações diferenciais ordinárias, não um modelo estocástico de agentes e não uma previsão de um surto real nomeado. Taxas grandes são limitadas para que um único passo não deixe um compartimento negativo, porque uma contagem negativa não é um estoque válido.
Valores fracionários de compartimento são permitidos: a aproximação contínua não se restringe a pessoas inteiras. Trate cada série como uma trajetória educativa desta regra publicada, nunca como uma predição clínica, uma previsão de leitos nem um substituto de um modelo de saúde pública estruturado com camadas de idade, conduta ou vacinação que esta ferramenta não coleta.
Onde as calculadoras SIR aparecem no trabalho real
Cursos de epidemiologia, orientação de enfermagem e oficinas de saúde pública atribuem sem parar exercícios SIR a partir de taxas e estoques iniciais de livro, de modo que um oráculo confiável que devolve a tabela diária ao lado de R0 e do pico de infectados acelera a correção e a montagem de demonstrações.
Assistentes de pesquisa que preparam conjuntos sintéticos de surtos precisam de rótulos de compartimento estáveis a partir de taxas conhecidas sem chamadas de rede nem deriva de modelo, e de uma rejeição rígida quando chega uma taxa negativa para que extratos sujos não se passem por trajetórias. Se mais adiante você precisar de SEIR com uma classe exposta, dinâmica vital, estrutura etária, campanhas de vacinação ou um modelo estocástico de agentes, trate-os como intenções de busca e páginas distintas, sem sobrecarregar esta página de SIR de infecção viral.
Apresente sempre os resultados como estimativas educativas da regra de Euler diária publicada; decisões operacionais exigem profissionais qualificados, vigilância local e modelos que esta ferramenta não pretende substituir. Mantenha as solicitações dentro do teto de trezentos e sessenta e cinco dias, fixe a série nos testes e você obtém cifras SIR reproduzíveis para tarefas, plugins LMS e workers de borda sem montar uma pilha própria de modelagem de surtos.
Casos de uso
Exercícios de surto no laboratório de epidemiologia
Mostre a decolagem e o declínio SIR de população fechada em laboratórios didáticos sem misturar SEIR, estrutura etária nem agentes estocásticos na mesma página.
Perguntas frequentes
O que é o modelo epidêmico SIR?
SIR divide uma população fechada em compartimentos de suscetíveis, infectados e recuperados. Novas infecções passam de S para I na proporção dos dois grupos; recuperações passam de I para R. O total N = S + I + R permanece constante. Esta calculadora informa as contagens diárias desses três estoques.
Qual fórmula você usa a cada dia?
Um passo de Euler diário das equações de Kermack–McKendrick: new infections = β S I / N, new recoveries = γ I, then S' = S − new infections, I' = I + new infections − new recoveries, R' = R + new recoveries. O passo de tempo é um dia. Quando γ > 0, R0 = β / γ.
O que acontece se uma taxa de infecção ou de recuperação for negativa?
Uma taxa negativa por dia é rejeitada em vez de ser convertida em um valor absoluto ou em um NaN silencioso.
Quanto custa?
A ferramenta do navegador é gratuita e roda localmente.
O que significa um número básico de reprodução de 3 no modelo SIR?
É a taxa de infecção dividida pela de recuperação: 0,3 por 0,1 dá 3, ou seja, uma pessoa infecciosa contaminaria outras três numa população totalmente suscetível. Acima de um a epidemia decola, e só então o limiar de imunidade de rebanho é informado.
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/health/viral-infection-sir \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"infection_rate":0.3,"recovery_rate":0.1,"susceptible":990,"infected":10,"recovered":0,"days":5}'const res = await fetch("https://api.kit.forhosting.com/health/viral-infection-sir", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"infection_rate": 0.3,
"recovery_rate": 0.1,
"susceptible": 990,
"infected": 10,
"recovered": 0,
"days": 5
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/health/viral-infection-sir",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"infection_rate": 0.3,
"recovery_rate": 0.1,
"susceptible": 990,
"infected": 10,
"recovered": 0,
"days": 5
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/health/viral-infection-sir", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"infection_rate":0.3,"recovery_rate":0.1,"susceptible":990,"infected":10,"recovered":0,"days":5}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"infection_rate":0.3,"recovery_rate":0.1,"susceptible":990,"infected":10,"recovered":0,"days":5}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/health/viral-infection-sir", 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
{
"infection_rate": 0.3,
"recovery_rate": 0.1,
"susceptible": 990,
"infected": 10,
"recovered": 0,
"days": 5
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "health.viral_infection_sir",
"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_days | 365 |
max_population | 1000000000000 |
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
Chamadas API bem-sucedidas usam o US$ 0,002 publicado por item; entrada inválida não é cobrada.
Como o modelo epidêmico SIR é definido
A cada dia a calculadora aplica um passo de Euler das equações de Kermack–McKendrick com passo temporal unitário de um dia: as novas infecções equivalem à taxa de infecção beta vezes S vezes I dividido por N, e as novas recuperações equivalem à taxa de recuperação gamma vezes I. Esses fluxos saem de S, entram em I e depois saem de I rumo a R. Quando gamma é positivo, o número básico de reprodução R0 equivale a beta dividido por gamma, o número de casos secundários que uma pessoa infecciosa produziria em uma população plenamente suscetível.
O que você envia e o que recebe de volta
Envie seis campos obrigatórios. O campo days é o horizonte inteiro de um a trezentos e sessenta e cinco; a série inclui o dia zero até esse dia. Chaves opcionais são omitidas em vez de definidas como null. Fixe a série e o pico nos testes para que uma mudança posterior do passo de Euler não passe despercebida. O campo infection_rate é o parâmetro de infecção por dia beta e deve ser um número finito não negativo; um valor negativo falha com invalid_input nomeando esse campo. Aceitam-se os aliases beta, beta_rate, transmission_rate e infectivity. O campo recovery_rate é o parâmetro de recuperação por dia gamma e deve ser um número finito não negativo; aceitam-se os aliases gamma, gamma_rate e recover_rate. Os campos susceptible, infected e recovered são as contagens de compartimento no dia zero e devem ser finitos e não negativos; a soma N deve ser maior que zero para que o termo de contato esteja definido. Aceitam-se os aliases s, s0, i, i0, rec, initial_susceptible, initial_infected e initial_recovered. Campos obrigatórios ausentes, cadeias vazias, texto não numérico, NaN, Infinity, um horizonte não inteiro e uma população total zero falham com invalid_input e não são cobrados. Em caso de sucesso, a resposta ecoa as taxas limpas, os compartimentos iniciais, days e population, devolve series como um array de registros day, susceptible, infected e recovered, informa peak_infected e peak_day, informa final_susceptible, final_infected e final_recovered, e inclui strings formula e method para exibição e para fixar em testes. Quando recovery_rate é positivo a resposta também inclui r0 igual a beta sobre gamma, e quando r0 é maior que um inclui herd_immunity_threshold. O preço das chamadas API bem-sucedidas é o US$ 0,002 publicado por item; falhas de validação não consomem saldo pré-pago.
Onde as calculadoras SIR aparecem no trabalho real
Centros de simulação e produtos de planilha eletrônica querem um caminho documentado de beta, gamma, S, I, R e days que os clientes possam auditar à mão, não uma previsão neural opaca que mistura mobilidade, clima e conduta sem revelar. Como esta capacidade é um motor parse puro, o preço API é a base publicada de US$ 0,002 por item bem-sucedido e a validação falha não consome saldo.
Casos de integração
Gabaritos SIR para a sala de aula
Gere a tabela diária de suscetíveis, infectados e recuperados mais R0 a partir de beta, gamma e estoques iniciais de livro, para que docentes e autocorretores compartilhem uma verdade de referência transparente.
Fixtures deterministas de surto
Produza em massa séries SIR estáveis para conjuntos sintéticos de epidemias e testes de regressão, com invalid_input rígido diante de uma taxa de infecção ou de recuperação negativa.
Perguntas técnicas
Como eu formato a entrada?
Envie infection_rate e recovery_rate como números finitos não negativos (por exemplo 0.3 e 0.1), susceptible, infected e recovered como contagens finitas não negativas (por exemplo 990, 10 e 0), e days como um inteiro de 1 a 365. Também se aceitam os aliases beta, gamma, s, i e rec.