Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Корень N-й степени интеррационным методом

Автор: Szug 21.11.2006 2:45

!help.gif Помогите разобраться! Задача состоит в том, чтобы составить прогу вычисления корня степени Q числа Х по реккурентной формуле: Y(k+1)=1/Q * ((Q-1)*Y(k)+X/Y(k)^(Q-1)) с заданной точностью. Х=16234, У=7, Е=0,000001. Программу вроде бы написал, но где-то ошибся -НЕ СЧИТАЕТ!!?? Вот что у меня получилось:

Код

Program Lab8;
var{блок задания переменных}
Yt,Yp,q,x,y,e:real;
g,k:integer;
begin
writeln('Введите Х');{ввод данных}
readln(x);
writeln('Введите Q');
readln(q);
writeln('Введите E');
readln(e);
g:=0; {переменная счета колличества строк}
k:=0; {переменная счета колличества интерраций}
Yt:=7;
repeat  {начало цикла вычисления значений Y}
Yp:=Yt; {задание начального значения Y}
inc(k);
Yt:=(((q-1)*Yp+x)/(exp(q*ln(Yp))/Yp))/q;{вычисление Y(k+1)}
writeln('E=',abs(Yt-Yp),'  Yp=',Yp,'  Yt=',Yt,'  №=',k);{печать значений}
inc(g);
if g=24 then begin        {проверка заполнения экрана}
write('Нажмите <ENTER>');
readln;
g:=1;
end;
until abs(Yt-Yp)<=e;    { проверка Е- выход из цикла}
writeln('Y = ',Yt,'     Количество интераций N=',k);{вывод на экран}
writeln;
write('Расчет окончен. Нажмите <ENTER>'); {вывод на экран}
readln;
end.              {конец программы}


ОБЬЯСНИТЕ МНЕ!!! ПОЧЕМУ НЕ РАБОТАЕТ??? ЧТО НЕ ТАК??? С-П-А-С-И-Б-О!!!!

Автор: volvo 21.11.2006 3:30

Ты неверно записал формулу... У тебя получилось

Цитата
Y(k+1)=1/Q * (((Q-1)*Y(k)+X)/Y(k)^(Q-1))


Надо вот так:
  Yt := (1 / Q) * ( (Q-1)*Yp+X/exp((q-1)*ln(Yp)) );
, и все работает...

Автор: Szug 21.11.2006 4:34

Спасибо! Все получилось.