Existe um algoritmo numérico para encontrar uma inclinação assintótica?


23

Eu tenho uma série de pontos de dados que espero (aproximadamente) seguir uma função que assintota uma linha em geral . Essencialmente, aproxima de zero como , e provavelmente o mesmo pode ser dito de todas as derivadas , , etc. Mas não sei qual é a forma funcional de f (x) , se ela possui uma que possa ser descrita em termos de funções elementares.(xi,yi)y(x)xf(x)y(x)-(umax+b)xf(x)f ( x )f(x)f(x)

Meu objetivo é obter a melhor estimativa possível da inclinação assintótica uma . O método óbvio é escolher os últimos pontos de dados e fazer uma regressão linear, mas é claro que isso será impreciso se f(x) não se tornar "plano o suficiente" dentro do intervalo de x para o qual tenho dados. O método menos grosseiro óbvio é assumir que f(x)exp(-x) (ou alguma outra forma funcional específica) e se ajuste a isso usando todos os dados, mas as funções simples que tentei como exp(-x) ou 1x não correspondem exatamente aos dados no x mais baixo, xonde f(x)é grande. Existe um algoritmo conhecido para determinar a inclinação assintótica que faria melhor, ou que poderia fornecer um valor para a inclinação junto com um intervalo de confiança, dada a minha falta de conhecimento de como exatamente os dados se aproximam da assíntota?


Esse tipo de tarefa tende a aparecer com frequência em meu trabalho com vários conjuntos de dados, por isso estou interessado principalmente em soluções gerais, mas, mediante solicitação, estou vinculando ao conjunto de dados específico que levou a essa pergunta. Conforme descrito nos comentários, o algoritmo Wynn ϵ fornece um valor que, até onde eu sei, está um pouco errado. Aqui está um enredo:

Dados assintoticamente lineares

(Parece que há uma ligeira curva descendente com altos valores de x, mas o modelo teórico para esses dados prevê que deve ser assintoticamente linear.)


Isso pode ser muito elementar - ou muito vago - para este site, mas achei que a versão beta privada é a hora de experimentar essas coisas.
David Z

Não, acho que essa é uma ótima pergunta. Nem tudo deve ser avançado e sofisticado. Boas soluções para problemas simples são importantes.
Colin K

@ Dan: foi substituindo realmente justificado? exp
18711 JM

Ter exps tende a dificultar as coisas para eu ler, mas admito que era pequeno o suficiente para não ter feito.
Dan

Realmente não me importo, de qualquer maneira, imaginei que seria melhor aprovar as edições porque, bem, por que não. Você tem uma reputação de casal, o que vale a pena.
David Z

Respostas:


13

É um algoritmo bastante grosseiro, mas eu usaria o seguinte procedimento para uma estimativa grosseira: se, como você diz, o suposto que representa seu já é quase linear à medida que aumenta, o que eu quero ' d fazer é pegar diferenças e, em seguida, use um algoritmo de extrapolação como a transformação Shanks para estimar o limite das diferenças. Esperamos que o resultado seja uma boa estimativa dessa inclinação assintótica.( x i , y i ) x y i + 1 - y if(x)(xEu,yEu)xyEu+1-yEuxEu+1-xEu


O que segue é uma demonstração do Mathematica . O algoritmo Wynn é uma implementação conveniente da transformação Shanks e é incorporado como a função (oculta) . Tentamos o procedimento na funçãoϵSequenceLimit[]

4x2+3+2x+e-4x+3
xdata = RandomReal[{20, 40}, 25];
ydata = Table[(3 + 13*E^(4*x) + 6*E^(4*x)*x + x^2 + 3*E^(4*x)*x^2 + 
      2*E^(4*x)*x^3)/(E^(4*x)*(3 + x^2)), {x, xdata}];

SequenceLimit[Differences[ydata]/Differences[xdata],
              Method -> {"WynnEpsilon", Degree -> 2}]
1.999998

Eu também poderia mostrar como o algoritmo é simples:

wynnEpsilon[seq_?VectorQ] := 
 Module[{n = Length[seq], ep, res, v, w}, res = {};
  Do[ep[k] = seq[[k]];
   w = 0;
   Do[v = w; w = ep[j];
    ep[j] = 
     v + (If[Abs[ep[j + 1] - w] > 10^-(Precision[w]), ep[j + 1] - w, 
         10^-(Precision[w])])^-1;, {j, k - 1, 1, -1}];
   res = {res, ep[If[OddQ[k], 1, 2]]};, {k, n}];
  Flatten[res]]

Last[wynnEpsilon[Differences[ydata]/Differences[xdata]]]
1.99966

Esta implementação é adaptada do artigo de Weniger .


Apenas curioso, mas por que você criou a forma original da função, em vez de combinar todos os termos?
rcollyer

Foi apenas para fins de demonstração. :) Incluí a expressão -ed para que vocês saibam qual deveria ser a resposta esperada. O que eu queria demonstrar era que você pode fazer este tipo de análise sobre alguma função complicada aparência ...euUMATEX
JM

Quão próximos os planos devem ser os pontos para que o algoritmo seja eficaz?
rcollyer

2
Ok, última pergunta (eu juro), você pode gerar um erro vinculado à estimativa?
rcollyer

1
Isso é um pouco mais complicado. Eu já vi alguns métodos sugeridos em alguns artigos, mas confesso que não fiz experiências com eles. (Talvez eu deva, um dia desses.) O livro de Brezinski e Redivo-Zaglia tem algumas dicas que você pode querer examinar.
18711 JM /
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.