我是新来的。
方案说明:
我编写了MATLAB代码,使用部分和S_n(x)=从j = 0到n的和(-1)^ j * x ^(2j + 1)/(2j + 1)!接近罪x。我编写了一个计算机程序来通过方法
来评估这个部分和LS:计算和总结最后一个词到最后一个词最后一个词
和
SL:按相反顺序进行计算。
我使用我的程序通过方法LS和SL计算x = 0.1,1和10的S_n(x),并将结果与sin x进行比较。我使用过n = 10,100和1000。
问题:我在代码的最后两行遇到了问题。它显示“NaN”(不是数字),但也显示前一列中的异常数字。我究竟做错了什么?任何人都可以帮助我吗?
这是我的代码:
第一个功能:
function ret = hw1_6_1(x,n)
ret=((-1)^n)*((x^((2*n)+1))/(factorial((2*n)+1)));
end
第二个功能:
function ret = partialsum(x,n,log)
%% Begin code
% j=n
% 1 to n+1
% LS 0 to n
% SL n to 0
%((-1)^n)*((x^((2*n)+1))/(factorial((2*n)+1)))
clear sum
ret = 0;
if log == 1
for i=0:1:n
ret= ret + hw1_6_1(x,i) ;
i=i+1;
end
elseif log == 0
for i=n:-1:0
ret= ret + hw1_6_1(x,i) ;
i=i+1;
end
end
end
最后,我的主要代码:
%% Hw 1 Problem 6
% Running approximation of sin x
% LS and SL
% LS == log=1, SL == log=0
% x = 0.1, 1, 10
% n = 10,100,1000
clear all
clc
format long %displays more decimal points
%% For x = 0.1
sin1 = sin(0.1);
% LS
% n = 10, 100, 1000 Generated in array format
LS1 = [partialsum(0.1,10,1);partialsum(0.1,100,1);partialsum(0.1,1000,1)];
% Now SL
SL1 = [partialsum(0.1,10,0);partialsum(0.1,100,0);partialsum(0.1,1000,0)];
%% For x = 1
sin2 = sin(1);
% LS
% n = 10, 100, 1000 Generated in array format
LS2 = [partialsum(1,10,1);partialsum(1,100,1);partialsum(1,1000,1)];
% Now SL
SL2 = [partialsum(1,10,0);partialsum(1,100,0);partialsum(1,1000,0)];
%% For x = 10
sin3 = sin(10);
% LS
% n = 10, 100, 1000 Generated in array format
LS3 = [partialsum(10,10,1);partialsum(10,100,1);partialsum(10,1000,1)];
% Now SL
SL3 = [partialsum(10,10,0);partialsum(10,100,0);partialsum(10,1000,0)];
%% Comparison stage
Sines = [sin1;sin2;sin3]
Approxs = [LS1 SL1 LS2 SL2 LS3 SL3]'
我的输出:
Sines =
0.099833416646828
0.841470984807897
-0.544021110889370
Approxs =
0.099833416646828 0.099833416646828 0.099833416646828
0.099833416646828 0.099833416646828 0.099833416646828
0.841470984807897 0.841470984807897 0.841470984807897
0.841470984807897 0.841470984807897 0.841470984807897
2.761090925979680 -0.544021110889270 NaN
2.761090925979687 -0.544021110889190 NaN
提前致谢。
答案 0 :(得分:2)
1)sin_taylor(10)== 2.76是因为20度多项式近似与 x 的小得多的正弦偏离。
2)序列x ^ n / n!对于| x |&gt; 1,不是单调的,但在n = 6时具有最大值;因此,与情况相比,将存在一些舍入差异,其中| x | <= 1且一个正在总结快速消失的序列。
3)当 n 很大时,分母和分母(10 ^ n,n!)都将表示为无穷大。 Inf / Inf 定义为 NaN , NaN +任何东西== NaN 。 这与partial_sum(10,100)不同,其中一个总结了术语(x / inf == 0)。