나는 매트랩 sin(x)
계산하는 정확한 방법을 잘 모릅니다 -하지만 당신은 즉
sin x = x - (x^3)/3! + (x^5)/5! - (x^7)/7! + (x^9)/9! ...
일부 MATLAB 코드로이 선반은 우리가 그것을 표현, 전원 시리즈를 사용하여 계산하여이 문제를 조사 할 수 있습니다 :
clc
x = pi; % or x = pi/2
res = x;
factor = -1;
for ii=3:2:19
res = res + factor*power(x,ii)/factorial(ii);
factor = factor*-1;
fprintf ('iteration %2i sin(x)=%1.16f\n', (ii-1)/2, res);
end
res
x=pi
및 x=pi/2
모두에 대해이 코드를 실행하면 x=pi/2
이 올바른 결과 (eps 오류 내역)에 매우 빠르게 수렴 함을 알 수 있습니다 (9 반복) - x=pi
대/소문자가 같은 시간대에 수렴하지 않습니다.
9 회 반복에서 계승 (19)에서 계산되는 마지막 계승을 주목하는 것이 유용합니다. 이 시퀀스에서 계산되는 다음 계승 값은 21입니다. 이것은 배정도로 인해 100 % 정확도로 나타낼 수있는 마지막 계승입니다 (help factorial
참조).
그래서 필자는 pi/2의 경우 수학적 솔루션이 pi 케이스보다 2 배의 정밀도로 1에 수렴한다는 것을 생각합니다. 사실 pi 케이스는 수식의 한계와 배정도 결과에 저장 될 수있는 정확성 때문에 완전히 수렴하지 않습니다.
sin(pi)
은 모두 eps
입니다. 그렇기 때문에이 사실을 사용해야합니다. sin(pi)=0.0
, 그래서 모든 작은 오류가 아무리 작은 것은 0
에 비해 엄청난입니다 따라서 볼 것을,
Results for PI/2
iteration 1 sin(x)=0.9248322292886504
iteration 2 sin(x)=1.0045248555348174
iteration 3 sin(x)=0.9998431013994987
iteration 4 sin(x)=1.0000035425842861
iteration 5 sin(x)=0.9999999437410510
iteration 6 sin(x)=1.0000000006627803
iteration 7 sin(x)=0.9999999999939768
iteration 8 sin(x)=1.0000000000000437
iteration 9 sin(x)=1.0000000000000000
Final Result: 1.0000000000000000
Results for PI
iteration 1 sin(x)=-2.0261201264601763
iteration 2 sin(x)=0.5240439134171688
iteration 3 sin(x)=-0.0752206159036231
iteration 4 sin(x)=0.0069252707075051
iteration 5 sin(x)=-0.0004451602382092
iteration 6 sin(x)=0.0000211425675584
iteration 7 sin(x)=-0.0000007727858894
iteration 8 sin(x)=0.0000000224195107
iteration 9 sin(x)=-0.0000000005289183
Final Result: -0.0000000005289183
정확히 1은 아니지만 오류는 실제로 표현하기에는 너무 작습니다. –
하지만 matlab은 정확히 1을 보여줍니다. –
'sin (sym ('pi'))'를 시도하고 http://www2.math.umd.edu/~jmr/241/introsession.html – Malick