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

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

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

 
 Ответить  Открыть новую тему 
> Переполнение, Цикл...сумма элементов
сообщение
Сообщение #1


Пионер
**

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

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


Ниче не понимаю пачиму ошибку переполнения выдает(((
Пасмарите плиз:
Используя оператор цикла, найти сумму элементов!При определении суммы членов ряда использовать реккурентную формулу.
Найти сумму ряда с точностью Е=10^-3 , общий член которого равен An=n!/(3n^n).
Вот текст моей программки:
CONST
i=0.1E-2;
var
n: integer;
AN, summa:extended;
begin
summa:=0; n:= 1; AN:= 1/2;
while AN>i do
begin
summa:= summa + AN; n:=n+1;
AN:= An*(ln(n+1)*((n+1)/n));
end;
writeln ( 'summa=', summa:2:4);
Writeln ('4islo=', AN:2:4);
readln;
end.




Рекурентку я посчитал,она представленна в тексте программы.Очень нужна помощь.Заранее очень благодарен
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Знаток
****

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

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


Я не вникал, но переполнение возникает из-за того что AN изначально больше i и оно не убывает, а даже шустро возрастает во время исполнения программы.

Добавлено:
я не считал сумму этого ряда, но эта программа должна работать правильно:
Код

CONST
i=0.1E-2;
var
n: integer;
AN, summa:extended;
function factorial(n:integer):real;
var i: integer;
    f: real;
begin
     f:=1;
     for i:=1 to n do
         f:=f*i;
     factorial:=f;
end;
function power(a,b : real):real;
begin
     power:=exp(b*ln(a));
end;
begin
summa:=0; n:= 1; AN:= 1/2;
while AN>i do
begin
AN:=factorial(n)/3*power(n,n);
summa:= summa + AN; n:=n+1;
end;
writeln ( 'summa=', summa:2:4);
Writeln ('4islo=', AN:2:4);
readln;
end.


Сообщение отредактировано: arhimag -


--------------------
Чего хочет женщина – того хочет Бог
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






arhimag, а прочтение условий что, НЕ для тебя?
Цитата
При определении суммы членов ряда использовать реккурентную формулу.
А объясни-ка мне, что такое рекуррентная формула во-первых, и где она у тебя в программе - во вторых...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


просто человек
******

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

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


Ты правда считаешь, что 3n^n и (3n)^n - это одно и то же?
Цитата
Я не вникал,

Заметно.
Цитата
но переполнение возникает из-за того что AN изначально больше i и оно не убывает, а даже шустро возрастает во время исполнения программы.

Правда?
Приближенные значения:
0.333
0.167
0.074
0.031
0.013
...

Сообщение отредактировано: мисс_граффити -


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Знаток
****

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

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


Про рекуррентную формулу я забыл sad.gif
а по поводу возражения мисс граффити, то я думал что там (3n)^n, но этот глюк исправлен.


--------------------
Чего хочет женщина – того хочет Бог
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


просто человек
******

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

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


Рекуррентная формула:
A(n+1)=(n+1)!/(3(n+1)^(n+1))=n!*(n+1)/(3*(n+1)^n*(n+1))=n!/(3(n+1)^n)
A(n)=n!/(3n^n)
A(n+1)=A(n)*(n^n)/((n+1)^n)=A(n)*(n/(n+1))^n
У меня так получилось...
а откуда взялось
Цитата
AN:= An*(ln(n+1)*((n+1)/n));
?
Это ты так пытался в степень возвести? Или я ошиблась при выводе формулы?


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Знаток
****

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

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


Код
CONST
i=0.1E-2;
var
n: integer;
AN, summa:extended;
function power(a,b : real):real;
begin
     power:=exp(b*ln(a));
end;
begin
summa:=0; n:= 1; AN:= 1/3;
while AN>i do
begin
summa:= summa + AN;
AN:=AN*power(n/(n+1),n);
n:=n+1;
end;
writeln ( 'summa=', summa:2:4);
Writeln ('4islo=', AN:2:4);
readln;
end.

Вольво, найдешь ошибки, скажи, исправлю.

Добавлено:
Только заметил, с формулой мисс граффити опередила

Сообщение отредактировано: arhimag -


--------------------
Чего хочет женщина – того хочет Бог
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Пионер
**

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

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


мисс_граффити

у меня рекурентка получилась An*(n+1)^(n+1)/n
может я тоже чтот неправильно посчитал?

Добавлено:
тьфу...т.е An*((n+1)/n)^(n+1)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


просто человек
******

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

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


напиши, как выводил


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Пионер
**

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

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


Мисс Графити,извиняюсь..я у себя ошибку нашел,немного не так считал...ты правильно вывела...но вот только если писать A(n)*(n/(n+1))^n,то Паскаль всеравно перевыполнение выдает,но вот если An*((ln(n)*n)/(ln(n)*(n+1))),то все нормс считает!Спасибо всем за помощь...все дело в рекуррентке было.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


просто человек
******

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

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


считает-то нормально, только совсем другое smile.gif))


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Пионер
**

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

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


Почему???там ведь при выводе рекуррентки и в числителе в степени N,так и в знаменателе N!почему ошибка то?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


просто человек
******

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

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


Ты думаешь, что ln(n)*n=n^n?
А почему?
Возьмем для примера число е (чтобы проще было считать).
ln(e)*e=1*e=e
Это совсем не то, что e^e, правда?


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Пионер
**

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

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


хм...а вот так прральна буит?An*(exp(ln(n)*n))/(exp(ln(n)*(n+1))))
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


просто человек
******

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

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


да... но так ты приходишь к варианту arhimagа.
причем у него переполнение будет возникать с меньшей степенью вероятности: он сначала считает n/(n+1), а потом это число (заведомо меньше 1) возводит в степень. ты же по отдельности считаешь n^n и n^(n+1) и только после этого делишь. вот переполнение и вылезает.


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #16


Пионер
**

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

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


Я щя проверил,мой вариант...переполнения не возникает.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





- Текстовая версия 7.10.2024 8:57
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name