Помощь - Поиск - Пользователи - Календарь
Полная версия: задача
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
STAB
Задача: вычислить сумму ряда с заданной точностью.

Условие:
1. Записать расчетные формулы для вычисления слагаемого по рекуррентной формуле
2. Вычислить сумму с точностью до члена ряда, меньшего е, в указанном диапазоне изменения х с определенным шагом. Для получения шага диапазон разделить на п.
3. Сравнить вычисленное значение суммы функционального ряда с данной суммой ряда у {сравнить полученные суммы с у}.
Указания. Результат напечатать в виде таблицы: первый столбец - значение х, второй — вычисленное значение суммы 5, третий 1 значение у. Значение точности е > 0 ввести с клавиатуры.
Нажмите для просмотра прикрепленного файла

Вот мои наработки:
 
program summa;
Uses crt;
Var w,n,a,j:integer;
    eps,x,z,s,i,e:real;
    k:longint;
BEGIN
ClrScr;
  Writeln(' x          s             y           n');
  x:=pi/2; w:=0;
  Repeat
  s:=0;     j:=1;         k:=1;       eps:=0.00001;
  Write(x:3:1);
      Repeat
                            j:=j+1;
                            k:=k*j;
                           {Write(' n=',j:4);
                           Write(' in k=',k:14);}
   i:=exp((j/2)*ln(2))  * sin(j*pi/4) *  exp((j)*ln(x)) ;     z:=i/k;      s:=s+z;
  {Write(' x^n=',i:4:2);
  Writeln(' an=',z:10:8);   }
       Until abs(z)<eps;
                                     e:=exp(x)*sin(x);
                                     Write('    ',s:10:5);
                                     Write('    ',e:10:5);

   w:=w+1; Writeln('       ',w);
   x:=x+1/10;
   Until x>pi;
  Readln;
END.



Функцию y вроде считает правильно, сумму неправильно
volvo
STAB,
  Repeat
  s:=0;     j:=1;         k:=1;       eps:=0.00001;
Почему J с единицы? Ты же его в следующем же Repeat-е сначала увеличиваешь, и только потом считаешь... При J = 1 значение теряется...


STAB
Цитата(volvo @ 17.12.2008 1:53) *

Почему J с единицы? Ты же его в следующем же Repeat-е сначала увеличиваешь, и только потом считаешь... При J = 1 значение теряется...

Даже если j:=0 всё равно что-то не то
volvo
Цитата
Даже если j:=0 всё равно что-то не то
Не знаю, что там у тебя "не то", но во-первых, ты задаешь не те интервалы (по крайней мере - не те, что указаны в задании), а во-вторых, вот это выдает правильные результаты (не веришь - раскомментируй печать слагаемых, посчитай вручную, что должно быть, и сравни... Я вот сравнил для x = pi/2, расхождений не обнаружил)
program summa;
uses crt;
const eps = 0.00001;
var w,i:integer;
    x, curr, s, e, nominator, xn: real;
    fact : longint;
BEGIN
  clrscr;
  writeln(' x          s             y           n');
  x := - pi; w := 0;
  repeat
    s := 0; i := 1;
    write(x:3:1);

    i := 0; xn := 1; fact := 1;
    { writeln('Слагаемые'); }
    repeat
      i := i + 1;
      fact := fact * i;
      xn := xn * x;
      nominator := exp((i/2)*ln(2)) * sin(i*pi/4) * xn;
      curr := nominator / fact;
      { writeln(curr:12:7); }
      s := s + curr;
    until abs(curr) < eps;

    e := exp(x)*sin(x);
    Write('    ',s:10:5);
    Write('    ',e:10:5);
    w := w + 1; Writeln('       ', w);
    x := x + pi / 10; { <--- }
  until x > pi;
  Readln;
END.

Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.