Выполнить суммирование членов бесконечного ряда

bohdan26

1. Выполнить суммирование членов бесконечного ряда до тех пор, пока последний член ряда по абсолютной величине не будет меньше абсолютной точности ∆=10(у -4) .... 10( у -10) или пока не будет просумировано заранее заданное число членов бесконечного ряда. 2. Сравнить вычесленную суму членов бесконечного ряда с образцовым значением, полученным в виде константы или вычисленным по форуме.
7 ответов

bohdan26

uses crt;
var t,s,e:real;
    n:integer;
begin
clrscr;
write('Введите точность от 10^-4 до 10^-10 e=');
readln(e);
s:=1;
t:=1;
n:=1;
while abs(t/(n*n))>e do
 begin
  n:=n+1;
  t:=-t;
  s:=s+t/(n*n);
 end;
writeln('S=',s:0:10);
write('Аналитически=',pi*pi/12:0:10);
readln
end.


bohdan26

туда еще надо походу дописать... "или пока не будет просумировано заранее заданное число членов бесконечного ряда." поможешь?


bohdan26

uses crt;
var t,s,e:real;
    n,i,w:integer;
begin
clrscr;
writeln('Выберите способ вычисления');
writeln('1-с заданной точностью');
writeln('2-с заданным числом повторений');
repeat
readln(w);
until w in [1,2];
case w of
1:begin
   write('Введите точность от 10^-4 до 10^-10 e=');
   readln(e);
   s:=1;
   t:=1;
   n:=1;
   while abs(t/(n*n))>e do
    begin
     n:=n+1;
     t:=-t;
     s:=s+t/(n*n);
    end;
   writeln('S=',s:0:10);
   write('Аналитически=',pi*pi/12:0:10);
  end;
2:begin
   write('n=');
   readln(n);
   s:=0;
   t:=-1;
   for i:=1 to n do
    begin
     t:=-t;
     s:=s+t/(i*i);
    end;
   writeln('S=',s:0:10);
   write('Аналитически=',pi*pi/12:0:10);
  end;
end;
readln
end.


bohdan26

Что то неработает. По точности меньше единицы несчитает. Поможешь?


bohdan26

Что то неработает. По точности меньше единицы несчитает. Поможешь?
Это дело ене в программе, она все верно считает, дело в твоих умнственных неспособностях.


bohdan26

Попробуй вбить по точности например 0.002. она выбевает ошыбку.


bohdan26

Во-первых у тебя по условию точность от 0.0001 до 0.0000000001, но я не поставил ограничение и поэтому разрешает вводить типа 0.002, но программа работает при любой точности, хотя правильно нужно было написать
1:begin
   repeat
   write('Введите точность от 10^-4 до 10^-10 e=');
   readln(e);
   until(e>=1e-10)and(e<=1e-4);
чтобы ты мог ввести точность только в указанном диапазоне. Может ты от большого ума вместо того чтобы выбрать пункт меню 1, сразу вводишь точность?