Вычислить сумму и найти число слагаемых, которые вошли в сумму - 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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д