Bracketing de uma descontinuidade em uma função step

8

Eu tenho a função

,f(x)={0(x<a)1/2(x=a)1(x>a)

onde é desconhecido. Posso calcular a função para qualquer valor de x e procurar determinar a (com algum grau de precisão).axa

Dado um colchete inicial , subdivido o colchete definindox0<a<x1

x2:=x0+x12

e computando . Então eu tenho x 0 < a < x 2 ou x 2 < a < x 1 . Eu poderia continuar com essa abordagem até que os valores de bracketing concordem com alguma precisão e, assim, resolva para a .f(x2)x0<a<x2x2<a<x1a

Existe um algoritmo mais eficiente?

user1951162
fonte

Respostas:

7

Não. Embora a questão seja formulada em termos de aritmética de ponto flutuante, essa é, no fundo, uma questão sobre pesquisa binária. A pesquisa binária é um algoritmo ideal entre algoritmos que dependem de uma árvore de decisão (por exemplo, https://stackoverflow.com/q/4571478/491171 ). Qualquer manual de estruturas de dados e algoritmos deve discutir isso.

an=|highlow|/ϵmachnlog2nlog2na

a

Kirill
fonte
5

fPP+12

Patrick Sanan
fonte
2
(+1) É por isso que definir o modelo de computação com precisão é importante para falar sobre eficiência algorítmica.
Kirill