Составить программу вычисления значения функции с помощью разложения в ряд. В Паскале.
Приложения:
Ответы
Ответ дал:
0
Вот, написал. Но она выдает неверные результаты!!! Не пойму в чем причина, вроде бы все правильно составлено. Покажи преподу, может он подскажет
var
s,y,e,x,nf:real;
n:integer;
begin
write('Введите число x: ');
readln(x);
write('Введите точность вычислений: ');
readln(e);
nf:=1;
s:=1;
n:=1;
y:=1;
while abs(y)>=e do
begin
n:=n+1;
nf:=(2*n-1)*(2*n-2)*nf; //здесь вычисляем факториал
y:=power(-1,n+1)*power(x,2*n-1)/nf;
if abs(y)>=e then s:=s+y
end;
writeln('sin(',x,')=',s)
end.
var
s,y,e,x,nf:real;
n:integer;
begin
write('Введите число x: ');
readln(x);
write('Введите точность вычислений: ');
readln(e);
nf:=1;
s:=1;
n:=1;
y:=1;
while abs(y)>=e do
begin
n:=n+1;
nf:=(2*n-1)*(2*n-2)*nf; //здесь вычисляем факториал
y:=power(-1,n+1)*power(x,2*n-1)/nf;
if abs(y)>=e then s:=s+y
end;
writeln('sin(',x,')=',s)
end.
Ответ дал:
0
http://pastebin.com/Dhy9bFz1
Ответ дал:
0
Похоже, разложение в ряд можно использовать только для значений углов, лежащих в 1-й четверти. Для больших значений Х при вычисление факториала при n в районе 10 происходит переполнение, получается слишком уж большое число. В этом случае, через тригонометрические формулы надо выразить искомый синус через синус угла, лежащего в первой четверти. Т.е. при демонстрации программы не вводить числа больше пи/2 (1,5707)
Вас заинтересует
8 лет назад
8 лет назад
10 лет назад
10 лет назад