Помощь - Поиск - Пользователи - Календарь
Полная версия: итерационные циклы
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Hunt666
помогите разобраться
вот задачка:
вычислить приближенное значение бесконечной суммы.Нужное приближение считается полученным если сумма первых нескольких слагаемых , и очередное слагаемое оказалось по модулю меньше данного положительного e .


X+1*X^3/(2*3) + 1*3X^5/(2*4*5) + 1*3*5*X^7/(2*4*6*7)+ 1*3*5*7*X^9/(2*4*6*8*9)+...... и тд

const MaxIter = 500;
var x, eps : double;
c, y : double;
n : integer;
done : boolean;
begin
writeln('vvedite x u tochnost:');
readln(x, eps);
if sqr(x)>=1 then writeln('x ne podhodit')
else
done := true;
c := x; y := c;
n := 0;
while abs© > eps do begin c := c*sqr(x)*x/(2*n + 1)/(2*n + 3);
y := y + c;
inc(n);
if n > MaxIter then begin
writeln('piad pacxoditcia!');
done := false; break
end
end;
if done then
writeln('Dlia argumenta ', x , 'znachenie funkcii: ' , y , ' vicheslino s tochnostiu', eps, ' za ', n, ' iteraciy');
readln;
end.

количество итераций у меня вседа =0, и я очень не уверен в правильности c := c*sqr(x)*x/(2*n + 1)/(2*n + 3);
klem4
Вот как-то так это должно выглядеть :

uses crt;

const
eps = 1E-3;

var
s, next: Single;
x, x2, p, ch, zn, t: Integer;

begin
clrscr;

write('x = '); readln(x);

s := x;

x2 := x * x;

ch := x;

p := 1;

t := 1;

zn := 1;

repeat


ch := ch * x2 * p; // chislitel

zn := zn * (t + 1) * (t + 2) div t; // znamenatel

next := ch / zn; // ocherednoi chlen summi

s := s + next;

p := p + 2;
t := t + 2;

until abs(next) < eps;

writeln('s = ', s:2:3);

readln;
end.

Hunt666
я еще забыл указать X^2<1

у меня постоянно выдает ошибку на строчке
 zn := zn * (t + 1) * (t + 2) div t;

operand type do not match operator
klem4
Поменял integer на real ? Теперь вместо div поставь просто "/". Для вещественных чисел операция div не определена ...

Точнее лучше просто zn и t объяви как Integer;
Hunt666
type mismatch теперь вот такую выдает ошибку на той же строчке
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.