Помощь - Поиск - Пользователи - Календарь
Полная версия: задача
Форум «Всё о Паскале» > 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.

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