Fórmulas
As fórmulas calculam resultados a partir dos dados coletados nos campos de entrada. Cada fórmula possui uma expressão (o cálculo), uma chave de saída (variável que armazena o resultado) e opcionalmente um rótulo e unidade.
Anatomia de uma Fórmula
Seção intitulada “Anatomia de uma Fórmula”| Propriedade | Obrigatório | Descrição |
|---|---|---|
| Rótulo | Não | Nome descritivo exibido no resultado (ex: “Erro de Medição”) |
| Chave de saída | Sim | Variável que armazena o resultado (ex: erro) |
| Expressão | Sim | Cálculo matemático (ex: leitura - padrao) |
| Unidade | Não | Unidade exibida junto ao resultado (ex: mm) |
A chave de saída segue as mesmas regras de nomenclatura dos campos de entrada.
Sintaxe de Expressões
Seção intitulada “Sintaxe de Expressões”As expressões utilizam sintaxe matemática padrão, avaliada pelo motor de cálculo (mathjs com precisão BigNumber de 32 dígitos).
Operadores Aritméticos
Seção intitulada “Operadores Aritméticos”| Operador | Descrição | Exemplo |
|---|---|---|
+ | Adição | a + b |
- | Subtração | a - b |
* | Multiplicação | a * b |
/ | Divisão | a / b |
^ | Potenciação | a ^ 2 |
% | Módulo | a % 2 |
Funções Disponíveis
Seção intitulada “Funções Disponíveis”Gerais:
| Função | Descrição | Exemplo |
|---|---|---|
abs(x) | Valor absoluto | abs(erro) |
sqrt(x) | Raiz quadrada | sqrt(variancia) |
pow(x, n) | Potenciação | pow(desvio, 2) |
round(x) | Arredondamento | round(resultado) |
ceil(x) | Arredonda para cima | ceil(valor) |
floor(x) | Arredonda para baixo | floor(valor) |
sign(x) | Sinal (-1, 0 ou 1) | sign(erro) |
Exponenciais e Logarítmicas:
| Função | Descrição |
|---|---|
exp(x) | |
log(x) | Logaritmo natural () |
log10(x) | Logaritmo base 10 |
log2(x) | Logaritmo base 2 |
Trigonométricas:
| Função | Descrição |
|---|---|
sin(x), cos(x), tan(x) | Seno, cosseno, tangente |
asin(x), acos(x), atan(x) | Inversas |
atan2(y, x) | Arco tangente de y/x |
sinh(x), cosh(x), tanh(x) | Hiperbólicas |
Estatísticas (vetoriais):
| Função | Descrição | Exemplo |
|---|---|---|
mean(v) | Média aritmética | mean(leituras_valor) |
std(v) | Desvio padrão | std(leituras_valor) |
variance(v) | Variância | variance(leituras_valor) |
sum(v) | Soma | sum(leituras_valor) |
min(v) | Menor valor | min(leituras_valor) |
max(v) | Maior valor | max(leituras_valor) |
median(v) | Mediana | median(leituras_valor) |
Constantes:
| Constante | Valor |
|---|---|
pi | |
e |
Referenciando Variáveis
Seção intitulada “Referenciando Variáveis”Nas expressões, use diretamente a chave definida nos campos ou em fórmulas anteriores:
// Campos de entradatemp_instrumento - temp_padrao
// Coluna de tabela (formato: nomeTabela_nomeColuna)mean(leituras_valor)
// Resultado de fórmula anteriorabs(erro) / tolerancia
// Acesso indexado a tabelaleituras_valor_0 - leituras_valor_1Encadeamento de Fórmulas
Seção intitulada “Encadeamento de Fórmulas”As fórmulas são executadas na ordem em que foram adicionadas. Cada fórmula pode referenciar:
- Variáveis dos campos de entrada
- Resultados de fórmulas anteriores (pela chave de saída)
Exemplo de encadeamento:
| Ordem | Rótulo | Chave | Expressão |
|---|---|---|---|
| 1 | Média das Leituras | media | mean(leituras_valor) |
| 2 | Erro | erro | media - padrao |
| 3 | Erro Relativo | erro_relativo | abs(erro) / padrao * 100 |
A fórmula 2 usa media (resultado da fórmula 1). A fórmula 3 usa erro (resultado da fórmula 2) e padrao (campo de entrada).
Operações Vetoriais em Tabelas
Seção intitulada “Operações Vetoriais em Tabelas”Quando um campo do tipo tabela possui uma coluna numérica, o motor de cálculo disponibiliza automaticamente um vetor para aquela coluna, permitindo o uso de funções estatísticas.
Para uma tabela com chave medicoes e coluna valor, as seguintes variáveis ficam disponíveis:
| Variável | Tipo | Descrição |
|---|---|---|
medicoes_valor | Vetor | Todos os valores da coluna (para funções vetoriais) |
medicoes_valor_0 | Número | Primeiro valor (índice 0) |
medicoes_valor_1 | Número | Segundo valor |
medicoes_valor_count | Número | Quantidade de linhas |
Exemplo Completo: Micrômetro
Seção intitulada “Exemplo Completo: Micrômetro”Cenário: calibração de micrômetro com 5 leituras repetidas em um bloco padrão.
Campos de Entrada
Seção intitulada “Campos de Entrada”| Rótulo | Chave | Tipo |
|---|---|---|
| Valor Nominal do Padrão | padrao | Número (mm) |
| Tolerância | tolerancia | Número (mm) |
| Leituras | leituras | Tabela |
A tabela leituras possui uma coluna:
| Rótulo | Chave | Tipo | Unidade |
|---|---|---|---|
| Valor Medido | valor | Número | mm |
Fórmulas (em ordem)
Seção intitulada “Fórmulas (em ordem)”| # | Rótulo | Chave | Expressão |
|---|---|---|---|
| 1 | Média | media | mean(leituras_valor) |
| 2 | Desvio Padrão | desvio | std(leituras_valor) |
| 3 | Incerteza Tipo A | u_a | desvio / sqrt(leituras_valor_count) |
| 4 | Erro | erro | media - padrao |
Fluxo de Cálculo
Seção intitulada “Fluxo de Cálculo”Com dados de exemplo (padrão = 10,000 mm, leituras = [10,002, 10,001, 10,003, 10,001, 10,002]):
media=mean([10.002, 10.001, 10.003, 10.001, 10.002])= 10,0018desvio=std([10.002, 10.001, 10.003, 10.001, 10.002])= 0,000837u_a=0.000837 / sqrt(5)= 0,000374erro=10.0018 - 10.000= 0,0018 mm
Precisão dos Cálculos
Seção intitulada “Precisão dos Cálculos”O motor de cálculo utiliza BigNumber com 32 dígitos de precisão para todas as avaliações de fórmula. Isso garante que erros de arredondamento não se acumulem em cadeias longas de cálculos.
Segurança
Seção intitulada “Segurança”As fórmulas são executadas em um ambiente seguro (sandbox). As seguintes restrições se aplicam:
- Funções de sistema (
import,evaluate,parse,compile,chain) estão bloqueadas - Padrões perigosos como
__proto__,constructor,eval(),Function()são detectados e rejeitados - Não é possível acessar variáveis globais, sistema de arquivos ou rede