Fórmulas, expressões matemáticas e ajustes de funções

From GRIPER Wiki

Revision as of 18:56, 5 March 2015 by Suaide (Talk | contribs)
Jump to: navigation, search

Contents

Expressões matemáticas

Conjunto de dados a serem ajustados por uma função matemática

Em muitas situações de análise de dados, ou cálculos em geral, queremos aplicar expressões matemáticas a variáveis previamente definidas. Um exemplo bastante comum é o de ajuste de funções. Imagine um conjunto de dados como o mostrado na figura ao lado onde deseja-se ajustar uma expressão do tipo

y = ax + b

onde a e b são parâmetros que serão ajustados aos dados ao lado.

Acontece que nem sempre é possível escrever uma fórmula matemática desta maneira em um programa de computador. Cada programa possui uma sintaxe própria que deve ser respeitada. Isto não seria diferente no nosso caso. O WebROOT faz interface com o ROOT e, a menos de situações bem específicas que discutiremos adiante, a sintaxe utilizada no WebROOT para expressões matemáticas é a mesma utilizada pelo ROOT.

Assim, fórmulas e expressões matemáticas são escritas utilizando o padrão de linguágem do c++ e ROOT. A seguir apresentamos um breve tutorial.

Variável independente

No WebROOT, a variável independente em uma expressão é sempre x, se a expressão tiver apenas uma variável independente. Se tiver duas variáveis independentes, elas são x e y. Se houver três, x, y e z. Estas variáveis são escritas sempre com letra minúscula. Fique atento a isto.

Operadores matemáticos

Em c++, os operadores matemáticos básicos são o (+) para adição, (-) para a subtração, (*) para multiplicação, (/) para divisão e (%) para o resto de uma divisão. Não existe operador para potência em c++. Normalmente utiliza-se a função pow(a,b) = ab. Contudo, o ROOT também aceita o operador (^) para este fim. Assim, a^b = ab. No WebROOT, ambos formatos para potência são aceitos.

Funções matemáticas básicas

Escrevendo uma expressão matemática com parâmetros e os valores dos parâmetros

Há várias funções matemáticas pré-definidas no c++ (e ROOT), tais como sin(x), cos(x), tan(x), asin(x) (arco-seno), acos(x), atan(x) (x em radianos), exp(x), ln(x) (log na base e), log10(x) (log na base 10), pow(a,b), sqrt(x) (raiz quadrada), etc. Consulte a web para uma boa referência de funções pré-definidas em c++. Apesar disto, acredito que estas cobrem 99.9% do dia-a-dia do WebROOT.

Parâmetros em expressões matemáticas

Na expressão y = ax + b, a e b são parâmetros. No WebROOT, parâmetros são escritos como um número entre colchetes, por exemplo [0], [1], [2],... Assim, para escrever a equação de uma reta y = ax + b, no WebROOT, devemos escrever y = [0] * x + [1]. Note o * para representar a operação de multiplicação. Por comparação a = [0] e b = [1]. Na figura ao lado temos uma outra expressão matemática, y = ax + blog(cx + 1), que deve ser escrita como [0] * x + [1] * log([2] * x + 1). Note, nesta figura, que atribuímos valores aos parâmetros, separados por vírgulas. Assim a = [0] = 5, b = [1] = 0.2 e c = [2] = 10000.

Funções matemáticas extras do ROOT

Exemplos de expressões matemáticas
Expressão WebROOT
ax + b [0] * x + [1]
 \left(\frac{sin(ax)}{ax}\right)^2  (sin([0]*x)/([0]*x))\wedge 2
 \left( a - b\left( \exp(cx)-1\right) \right)x ([0] − [1] * (exp([2] * x) − 1)) * x
 \frac{a}{\sqrt{2\pi}\sigma}\exp\left(\frac{1}{2}\left(\frac{x-\bar{x}}{\sigma} \right)^2 \right) gaus(0)

Há várias funções matemáticas extras no ROOT que podemos utilizar. Veja o manual do ROOT para detalhes. Para citar as mais comuns:

  • gaus(0) - Função gaussiana. [0] = amplitude, [1] = valor médio, [2] = desvio padrão
  • gaus(3) - Função gaussiana. [3] = amplitude, [4] = valor médio, [5] = desvio padrão.
  • polN(0) - Polinômio de grau N. Por exemplo, pol1(0), pol2(0), etc. Neste caso, polN(0) = [0] + [1]*x + [2]*x^2 + ... Temos pré-definido desde pol0 até pol9.

OBS: O valor (0) entre parêntesis, indica a numeraço inicial dos parâmetros. Por exemplo, gaus(3) indica que [3] = amplitude, [4] = valor médio e [5] = desvio padrão. Isto é útil quando escrevemos fórmulas complexas que envolvem várias funções pré-definidas.

Ajustes de funções

Muitas aplicações no WebROOT têm a possibilidade de realizar ajustes de uma função a um conjunto de dados. O ambiente de ajuste de funções segue o mesmo princípio em todas estas aplicações. A seguir discutiremos como isto é feito.

Caixa de ajuste de funções

O WebROOT utiliza como padrão o Minuit para ajuste de funções. O método padrão utilizado é o MMQ (Método dos Mínimos Quadrados) onde o conjunto de parâmetros que ajustam uma função aos dados é obtido através da minimização do Chi2 entre os dados e a função. No caso de ajuste de funções aos dados em um gráfico, temos a opção de obter os resíduos do ajuste. Esta opção não está presente para ajustes de histogramas.

A figura ao lado mostra a interface de ajuste de funções, com todas as suas caixas internas expandidas.

Para ajustar uma função deve-se, primeiramente, escrever a fórmula no campo Fórmula: y = . Fórmulas a serem ajustadas possuem parâmetros. Logo abaixo deve-se colocar 'chutes' iniciais para estes parâmetros. Isto é importante pois muitas expressões matemáticas não são lineares nos seus parâmetros e, nestes casos, o método de ajuste utiliza de busca numérica pelo mínimo do Chi2 a partir de cálculos de gradientes nos parâmetros. Se o chute inicial for muito ruim, ou ter sido deixado em branco, o ajuste pode não convergir.

Ao lado das caixas de texto para a fórmula e parâmetros há duas caixas de marcação. Acima, a caixa Ajuste. Se esta caixa estiver marcada, será feito o ajuste da função. Caso contrário, os valores dos parâmetros são substituídos na fórmula e a expressão é desenhada com estes valores, sem nenhuma tentativa de ajustar aos dados. Há também uma caixa de marcação Resíduos (apenas para gráficos), que desenha os resíduos dos dados em relação à fórmula (ajustada ou não). Para mais detalhes sobre como resíduos são desenhados, veja abaixo.

Há também opções para estabelecer o tipo de linha, espessura e cor que serão utilizadas para desenhar a função.

Opções de Ajuste

Logo abaixo há uma caixa chamada Opções de ajuste. Nesta caixa podemos estabelecer condições específicas para realização do ajuste. Estas opções são:

  • Fixa parâmetros - Em algumas situações temos formulas com vários parâmetros mas gostaríamos de ajustar apenas alguns deles. Neste caso, deve-se entrar a lista (separados por vírgulas) dos números dos parâmetros que ficarão fixos (iguais ao chute inicial) e não serão ajustados. Por exemplo, em uma expressão com 5 parâmetros, dos quais queremos que os parâmetros 1 e 4 sejam fixos, colocamos nesta caixa 1,4.
  • Limites de ajuste - Por padrão, os limites inferior e superior nos dados, no eixo-x, que serão utilizados para o ajuste são aqueles mostrados na escala visível do gráfico. Caso queiramos que estes limites sejam diferentes, basta entrar os valores mínimo e máximo de x para ser utilizado no ajuste.
  • Modos de ajuste - Seleciona o tipo de tratamento das incertezas. W = 1 significa que todos os pontos têm o mesmo peso estatístico, ou seja, não serão consideradas as incertezas. EX = 0 significa que incertezas no eixo-x não serão consideradas no ajuste. Integral significa que a função será integrada em x no intervalo correspondente à largura do bin do histograma. Esta opção só tem impacto em ajuste de histogramas.
  • Modos de desenho - Seleciona como a função será desenhada. São duas caixas de seleção.
    • a primeira caixa seleciona o tipo de desenho: todo gráfico desenha o ajuste em toda a janela gráfica. Nos limites mostra a função apenas nos limites de ajuste. Pontilhado é uma opção intermediária, onde a função é desenhada de forma "contínua" nos limites do ajuste e "pontilhada" fora destes limites.
    • a segunda caixa estabelece se serão desenhadas linhas que mostrem os limites de 1 sigma de incerteza na função ajustada. O padrão é não mostrar. Pode-se selecionar se estes limites são desenhados considerando-se ou não a covariância entre os parâmetros ajustados.

Opções de resíduos

Caso a opção "resíduos" esteja disponível e marcada, aqui você estabelece como mostrar os resíduos. Há três formas de mostrar os resíduos:

  • Somente resíduos - não mostra os dados. Mostra somente os resíduos
  • painel abaixo - desenha os resíduos em um painel abaixo do gráficos com os dados. Utilize a caixa Eixo resíduos para configurar o eixo vertical deste painel.
  • painel acima - o mesmo que o anterior, somente acima do gráfico com os dados.

Pode-se selecionar o tipo de resíduos a ser mostrado, com duas opções:

  • resíduos reduzidos - diferença entre os dados e a função, normalizada pela incerteza nos dados experimentais.
  • resíduos absolutos - diferença entre os dados e a função.

Resultados de um ajuste de função

Resultado de um ajuste de dados

Após ter realizado um ajuste de função com sucesso, na coluna do lado direito da sua aplicação, além do gráfico, de acordo com o tipo de aplicação, serão mostradas várias informações sobre os parâmetros ajustados.

Personal tools