IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Корень N-й степени интеррационным методом, не получается выполнить вычисления
Szug
сообщение 20.11.2006 22:45
Сообщение #1





Группа: Пользователи
Сообщений: 7
Пол: Мужской
Реальное имя: Сергей

Репутация: -  0  +


!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.              {конец программы}


ОБЬЯСНИТЕ МНЕ!!! ПОЧЕМУ НЕ РАБОТАЕТ??? ЧТО НЕ ТАК??? С-П-А-С-И-Б-О!!!!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 20.11.2006 23:30
Сообщение #2


Гость






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

Цитата
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 0:34
Сообщение #3





Группа: Пользователи
Сообщений: 7
Пол: Мужской
Реальное имя: Сергей

Репутация: -  0  +


Спасибо! Все получилось.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 12.08.2025 2:50
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"