Maclauren Series Iteration. Answer provided just having trouble getting code to run properly

1 次查看(过去 30 天)
clear
new_cos=1;
x=pi/3;
stop=cos(x);
es=0.5;
ea=100;
et=100;
n=1;
nmax=1000;
while es<ea && stop~=new_cos%(stop<=new_cos) && (es<ea)%(n<nmax)
%while (es<ea) && (n<nmax)
old_cos=new_cos;
new_cos=(old_cos-(x^n))/(factorial(n));
et=abs(((stop-new_cos)/stop)*100);
ea=abs(((new_cos-old_cos)/new_cos)*100);
n=n+1;
%if new_cos~=0
%ea=abs(((new_cos-old_cos)/new_cos)*100);
%end
disp(new_cos)
disp(et)
disp(ea)
end

采纳的回答

James Tursa
James Tursa 2020-2-3
编辑:James Tursa 2020-2-3
Some issues:
1) This line:
new_cos=(old_cos-(x^n))/(factorial(n));
You are dividing the old_cos by the factorial(n). This doesn't match the series formula. It is only the new term that gets divided by the factorial(n), not everything up to that term. So something like this:
new_cos = old_cos + something / factorial(n);
That "something" is going to be close to your -x^n, but not exactly. In your code, you always subtract. But in the series the terms have alternating signs. So you will need to adjust your code to provide alternating signs for that term.
2) The powers of the terms in your seriies go up by 2 each time, but you only have it going up by 1 each time:
n=n+1;
3) You are starting with the first term new_cos = 1, and then the next power you consider in your loop is for 1:
n=1;
But look at the series. The first power after that 1 term would be for n=2, not n=1.
You need to fix all of these issues.

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Mathematics 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by