문제

Taylor Series를 사용하여 함수를 해결하기위한 수치 적으로 사운드 알고리즘을 개발하려고합니다. 나는 꽤 오랫동안 그것을 가졌지 만 아직 운이 없었습니다. 내가 뭘 잘못하고 있는지 잘 모르겠습니다.

기능은입니다

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

또한 :이 기능에서 정밀도 손실이 발생하는 이유는 무엇입니까? x가 0에 가까울 때 sin (x)/ln (1+x)은 x와 같은 숫자에 가깝지 않습니다. 나는 그 중요성이 어디에서 잃어버린 지 알 수 없습니다.

이것을 해결하기 위해, 나는 sin (x)와 ln (1+x)의 Taylor 확장을 사용해야한다고 생각합니다.

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

그리고

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

각기. 나는 x and sin (x)/ln (1+x) 구성 요소를 결합하고 세 가지를 모두 결합하기 위해 분모처럼 사용하려고 시도했지만 결국 올바르게 작동하지 않는 것 같습니다. 모든 도움이 감사합니다.

도움이 되었습니까?

해결책 6

문제에 사용 된 방법이 정확합니다. 계산기가 라디안 모드에 있는지 확인하십시오.

다른 팁

정밀도의 상실은 언제부터 발생할 수 있습니다 x ~ 0, ln(1+x) 또한 0에 가깝기 때문에 아주 적은 숫자로 나누어냅니다. 컴퓨터는 그다지 좋지 않습니다 ;-)

Taylor 시리즈를 사용하는 경우 ln(1+x) 직접적으로, 그것은 당신이 무한한 일련의 용어로 나누기 때문에 일종의 고통이 될 것입니다. 이와 같은 경우, 나는 일반적으로 정의에서 전체 기능에 대한 Taylor 시리즈를 계산하는 것을 선호합니다.

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

당신이 얻을 수 있습니다

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

(나는 그것을 속이고 Mathematica에 꽂았다 ;-) Steve가 말한 것처럼,이 시리즈는 현재 더 나은 방법을 생각할 수는 없지만 모든 것을 빨리 수렴하지는 않는다.

편집하다: 나는 질문을 잘못 읽었다고 생각합니다. 만약 당신이하려고하는 모든 것이 기능의 0을 찾는다면, Taylor 시리즈를 사용하는 것보다 확실히 더 좋은 방법이 있습니다.

이것은 숙제이므로, 나는 올바른 방향으로 몇 가지 포인터를 주려고 노력할 것입니다.

해결책 1

Talyor 시리즈 근사치를 사용하는 대신 간단히 사용하십시오. 루트 찾기 알고리즘 Newton-Raphson 방법, 선형 보간 또는 간격 이등분과 같은 (또는 결합). 구현하기가 매우 간단하고 시작 값의 적절한 선택으로 루트는 정확한 값으로 매우 빠르게 수렴 될 수 있습니다.

해결책 2

어떤 이유로 든 테일러 시리즈 근사치를 실제로 사용해야한다면, 죄 (x), ln (x) 등을 확장하십시오. (귀하의 경우에 분모를 제거하기 위해 LN (X)을 곱하면 작동합니다). 그런 다음 일종의 다항식 방정식 솔버를 사용해야합니다. 합리적인 정확도를 원한다면 상상할 수있는 3 번째 또는 4 번째 힘을 넘어서야합니다. 즉, 간단한 분석 솔루션이 쉽지 않을 것입니다. 그러나 당신은 Durand-Kerner 방법 모든 질서의 일반 다항식을 해결하기 위해. 그럼에도 불구하고, 당신이 고차 용어를 사용해야한다면이 접근법은 합병증으로 이어질 것이므로 솔루션 1을 권장합니다.

도움이되기를 바랍니다 ...

LN (x+1)에 무슨 일이 일어나는지 x-> 0으로 살펴볼 필요가 있다고 생각 하며이 함수가 x = 0 근처에서 잘 작동하지 않는 이유를 알 수 있습니다.

나는 이것을 면밀히 조사하지 않았지만 일부 Taylor 시리즈가 매우 느리게 수렴한다는 것을 알고 있어야합니다.

Taylor 시리즈 F를 직접 계산하십시오.

막시마 나에게 제공합니다 (x = 0에 대한 첫 4 용어) :

(%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
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top