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

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

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

 
 Ответить  Открыть новую тему 
> Итерационный цикл, Нужна помощь
Zvada
сообщение 24.03.2011 23:53
Сообщение #1





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

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


Условия задачи таковы
основная формула Y=exp((-1/3)*ln(x))
формула вычисления "текущего" значения Y(t)=Y(p)*(4+3*(x^3)*(sqrt(Yp))
счётчик итераций k=0,1,2...
Y(0)=6 x=277234 E=0,000001
Условие завершение цикла |Yt-Yp|<E
по завершению цикла высчитать Y по первой формуле

Program Post;
uses crt;
procedure pagelist;
begin
if wherey > 23 then
begin
writeln('dlia prodolzenia nazmite ENTER');
readln;
clrscr;
end;
end;
var k:integer;
x:single;
E,yt,yp,y:single;
begin
E:=0.0000001;
k:=0;
x:=277234;
yt:=6;
repeat;
if k>55 then writeln('nevozmogno dostignut predela tochnosti')
else
begin
yp:=yt;
if(yt>0) then
begin
yt:=yp*(4+3*exp(3*ln(yp)));
writeln('k=',k,' Yt=',yt:10:5,' Yp=',yp:10:5);
end;
pagelist;
k:=k+1;
end;
until abs(yt-yp)<E;
y:=exp((-1/3)*ln(x));
writeln('kol-vo interacii',k,' y=',y:10:5);
end.



выдаёт floating point overflow хотя деления на 0 я не вижу!
что делать?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 25.03.2011 1:13
Сообщение #2


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(Zvada @ 24.03.2011 23:53) *
Условия задачи таковы
основная формула Y=exp((-1/3)*ln(x))
формула вычисления "текущего" значения Y(t)=Y(p)*(4+3*(x^3)*(sqrt(Yp))
счётчик итераций k=0,1,2...
Y(0)=6 x=277234 E=0,000001
Условие завершение цикла |Yt-Yp|<E
по завершению цикла высчитать Y по первой формуле

Program Post;
uses crt;
procedure pagelist;
begin
if wherey > 23 then
begin
writeln('dlia prodolzenia nazmite ENTER');
readln;
clrscr;
end;
end;
var k:integer;
x:single;
E,yt,yp,y:single;
begin
E:=0.0000001;
k:=0;
x:=277234;
yt:=6;
repeat;
if k>55 then writeln('nevozmogno dostignut predela tochnosti')
else
begin
yp:=yt;
if(yt>0) then
begin
yt:=yp*(4+3*exp(3*ln(yp)));
writeln('k=',k,' Yt=',yt:10:5,' Yp=',yp:10:5);
end;
pagelist;
k:=k+1;
end;
until abs(yt-yp)<E;
y:=exp((-1/3)*ln(x));
writeln('kol-vo interacii',k,' y=',y:10:5);
end.



выдаёт floating point overflow хотя деления на 0 я не вижу!
что делать?

С твоего позволения, я перепишу твою первую формулу попроще:

Y = x-1/3

Вторую перепиши, пожалуйста, сам. Заодно поставь в ней недостающую скобку (я не уверен, где она должна быть).

Деления на ноль у тебя действительно нет. Но есть банальное переполнение. В варианте с single оно происходит при k=2, если использовать double - то при k=4.

Я не совсем понимаю, что за формула у тебя в программе. Она очень мало похожа на то, что ты написал выше.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Zvada
сообщение 28.03.2011 22:28
Сообщение #3





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

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


цитирую задание:

Вычислить значение (У) по рекуррентной формуле. Вычисление прекратить по достижении точности (dd). Вывод организовать поэкранно с указанием номера итерации (n), текущего приближения (y) и точности.

Задание(вычислить значение функции) y = x1/3

Реккурентная формула Y(текущее - т)=Y(предыдущее - п)*(4+3*x3*sqrt(y(п))
k=0,1,2,3...

Вычисления прекратить при dd=|y(т)-y(п)|<E

Исходные данные для контрольного просчёта y(0)=6 E=0.000001 x=277234
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 29.03.2011 2:55
Сообщение #4


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(Zvada @ 28.03.2011 22:28) *
цитирую задание
Вычислить значение (У) по рекуррентной формуле. Вычисление прекратить по достижении точности (dd). Вывод организовать поэкранно с указанием номера итерации (n), текущего приближения (y) и точности.
Спасибо, конечно, но почему ты не ответил на мои слова?

Цитата
Задание(вычислить значение функции) y = x1/3
А почему в первом посте у тебя тут затесался знак минус?

Цитата
Реккурентная формула Y(текущее - т)=Y(предыдущее - п)*(4+3*x3*sqrt(y(п))
k=0,1,2,3...
И все равно у тебя баланс скобок не соблюден..
Напиши формулу правильно, тогда продолжим разговор.
Не подумай, что я придираюсь. Смотри:
1. Просто, если к этому виду формулы добавить скобочку в конец, это НЕ БУДЕТ верная формула для вычисления кубического корня. Приведи правильную.
2. То, что у тебя в проге написано неправильно ДАЖЕ ДЛЯ ЭТОЙ неправильной формулы. Посмотри внимательно. Я же писал об этом в предыдущем посте..


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Zvada
сообщение 30.03.2011 20:41
Сообщение #5





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

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


Вот ссылка на задание и полное описание к моей лабе!
мой вариант под номером 8.
Прикрепленный файл  ____.doc ( 301 килобайт ) Кол-во скачиваний: 300
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Krjuger
сообщение 30.03.2011 22:54
Сообщение #6


Профи
****

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

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


Цитата
yt:=yp*(4+3*exp(3*ln(yp)));
где в этой формуле участвует х?Его нету.
Твоя задача по рекурентной формуле найти приближенное значение у,получив это значение найти точное значение подставив в первую формулу.У тебя в документе есть пример,что в нем непонятного?Единственное,там последовательность представлена в виде ряда,а у тебя немного другое представление и все.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



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