Вычислить сумму и найти число слагаемых, которые вошли в сумму - Free Pascal (960)
Формулировка задачи:
Вычислить сумму и найти число слагаемых, которые вошли в сумму. Процесс вычислений требуется закончить, когда очередное слагаемое по модулю окажется меньше . (((-1)^n)(n^2))/n!, n=1,2,...
p.s. такой способ не подходит:
Надо сделать по следующему примеру:
(-1)^n*(((x^n)*cosn)/(n+1)!) Выводим =*(/(k+1)!). Тогда выводим =... после чего /=-x/(k+1). В итоге z=(-x/(k+1))z.
Листинг программы
- uses crt;
- function fact(b : integer) : longint;
- var i,st : longint;
- begin
- st:=1;
- for i:=2 to b do st:=st*i;
- fact:=st;
- end;
- var x,s,e : real;
- n,m,k : integer;
- begin
- clrscr;
- repeat
- write('Vvedite x: ');
- readln(x);
- until x<>0;
- repeat
- write('Vvedite EPSILON: ');
- readln(e);
- until e>0;
- n:=1;
- s:=0;
- while abs(n*n/fact(n))>=e do
- begin
- if ((n+1) mod 2=0) then
- s:=s-n*n/fact(n) else
- s:=s+n*n/fact(n);
- n:=n+1;
- end;
- writeln('Summa ravna: ',s:5:5);
- writeln('Kolichestvo chlenov: ',n-1);
- readkey;
- end.
Листинг программы
- k:=1; S:=0; A:=1, Z:=1;
- while abs(a)>eps do
- begin
- s:=s+a; k:=k+1; z:=-z*x/(k+1); a:=z*cos(k)
- end;
Решение задачи: «Вычислить сумму и найти число слагаемых, которые вошли в сумму»
textual
Листинг программы
- k:=1; S:=0; Z:=-1;
- while abs(z)>eps do
- begin
- s:=s+z; k:=k+1; z:=-z*k/((k-1)*(k-1));
- end;
Объяснение кода листинга программы
- Инициализируются три переменные: k=1, S=0, Z=-1.
- Запускается цикл while, который выполняется до тех пор, пока абсолютное значение Z больше заданной точности eps.
- Внутри цикла к сумме S прибавляется значение переменной Z, а затем переменная k увеличивается на единицу.
- Значение переменной Z обновляется в соответствии с формулой Z = -Z k / ((k-1) (k-1)).
- После окончания цикла выводится значение переменной S.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д