Pergunta

Eu estou tentando usar série de Taylor para desenvolver um algoritmo de som numericamente para resolver uma função. Eu fui para ele por um bom tempo, mas não tive nenhuma sorte ainda. Eu não tenho certeza do que estou fazendo de errado.

A função é

f(x)=1 + x - sin(x)/ln(1+x)   x~0

Além disso: por que perda de precisão mesmo ocorrer nesta função? quando X é próximo de zero, sen (x) / ln (1 + x) não é uniforme perto de ser o mesmo número que x. Não vejo onde significado ainda está sendo perdido.

Para resolver isso, eu acredito que vai precisar usar as expansões de Taylor para sin (x) e ln (1 + x), que são

x - x^3/3! + x^5/5! - x^7/7! + ...

e

x - x^2/2 + x^3/3 - x^4/4 + ...

respectivamente. Tentei usar como denominadores para combinar o x e sin (x) / ln (1 + x) componentes, e até mesmo para combinar os três, mas nada parece funcionar corretamente no final. Qualquer ajuda é apreciada.

Foi útil?

Solução 6

Método usado em questão está correta -. Apenas certifique-se a calculadora está no modo de radianos

Outras dicas

A perda de precisão pode entrar porque quando x ~ 0, ln(1+x) também é próximo de 0, assim que você acabar dividindo por um número muito pequeno. Os computadores não são muito bons em que; -)

Se você usar a série de Taylor para ln(1+x) diretamente, ele vai ser uma espécie de dor, porque você vai acabar dividindo-se por uma série infinita de termos. Para casos como esse, eu geralmente preferem apenas calcular a série de Taylor para toda a função como um todo a partir da definição:

f(x) = f(0) + f'(0) x + f''(0) x/2 + f'''(0) x/6 + ...

a partir do qual você terá

f(x) = 2 + 3x/2 - x^2/4 - x^3/24 - x^4/240 - 23x^5/1440 + 31x^6/2880 ...

(I enganado e liguei para o Mathematica ;-) Gosta Steve diz, esta série não converge tudo o que rapidamente, embora eu não consigo pensar em um método melhor no momento.

Editar :. Acho que descaracterizou a pergunta - se tudo que você está tentando fazer é encontrar os zeros da função, há definitivamente melhores maneiras do que usando uma série Taylor

Como esta é a lição de casa, eu só vou tentar dar alguns ponteiros na direção certa.

Solução 1

Ao invés de usar a série aproximação Talyor, tente simplesmente usar um constatação raiz algoritmo tais como o método de Newton-Raphson, interpolação linear, ou bisection intervalo (ou combiná-los ainda). Eles são muito simples de implementar, e com uma escolha apropriada do valor inicial (s), a raiz pode convergir para um valor preciso muito rapidamente.

Solução 2

Se você realmente precisa usar a aproximação série de Taylor por qualquer motivo, em seguida, basta expandir o sin (x), ln (x), e tudo o mais. (Multiplicador através de ln (x) para remover o denominador no seu caso vai funcionar). Então você vai precisar usar algum tipo de solver equação polinomial. Se você quer um grau razoável de precisão, você precisa ir além da 3ª ou 4ª poderes eu imagino, o que significa uma solução analítica simples não vai ser fácil. No entanto, você pode querer olhar para algo como o Durand-Kerner método para resolver geral polinômios de qualquer ordem. Ainda assim, se você precisa usar termos de alta ordem esta abordagem é apenas vai levar a complicações, então eu recomendaria definitivamente solução 1.

Espero que ajude ...

Eu acho que você precisa de olhar para o que acontece com ln (x + 1) como x -.> 0 e você verá porque esta função não se comportar bem perto de x = 0

Eu não olhei para isso que de perto, mas você deve estar ciente de que algumas séries de Taylor convergem muito, muito lentamente.

Apenas calcular a série de Taylor de f directamente.

Maxima me dá (primeiros 4 termos sobre x = 0):

(%i1) f(x):=1 + x - sin(x)/log(1+x);
                                           - sin(x)
(%o1)                     f(x) := 1 + x + ----------
                                          log(1 + x)


(%i2) taylor(f(x),x,0,4);
                                2    3    4
                           x   x    x    x
(%o2)/T/                   - + -- + -- + --- + . . .
                           2   4    24   240
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top