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

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

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

2 страниц V  1 2 >  
 Ответить  Открыть новую тему 
> Вычисление последовательностей, помогите плиз
сообщение
Сообщение #1


Гость






Даны числовой ряд и некоторое число E. найти сумму тех членов ряда, модуль которых больше или равен заданному E. общий член ряда имеет вид
Прикрепленное изображение

М
Beauty, пожалуйста выбирай более экономные форматы. Я отредактировал (сравни: твой .bmp был 92К, этот .gif - всего лишь 1.4К).

 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Новичок
*

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

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


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


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

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

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


Цитата(kess @ 2.05.2007 4:17) *

как решить такую задачу, со степенью и факториалом в одной формуле?

Сделай функции для вычисления всего этого.
Например:
function Factorial(n:integer):LongInt;
begin
if n>1 then Factorial:=n*Factorial(n-1) else Factorial:=1
end;

function IntPower(a:real; n:integer):real;
begin
if n>0 then Power:=a*Power(a,n-1) else Power:=1
end;

Дальше понятно?


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


Новичок
*

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

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


Цитата(Lapp @ 2.05.2007 4:37) *

Дальше понятно?

не оч (((
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


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

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

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


Хорошо, продвигаемся вместе..
Вот примерно так это можно сделать (с учетом функций, приведенных выше)
S:=0;
n:=1;
repeat
a:=Power(2/n,n)*Factorial(n);
if a>=e then S:=S+a else break;
Inc(n)
until false;

Теперь стало понятнее? smile.gif


Добавил увеличение n - забыл в первый раз, извините

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


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


Новичок
*

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

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


Цитата(Lapp @ 2.05.2007 4:52) *

Хорошо, продвигаемся вместе..
Вот примерно так это можно сделать (с учетом функций, приведенных выше)
S:=0;
n:=1;
repeat
a:=Power(2/n,n)*Factorial(n);
if a>=e then S:=S+a else break
until false;

Теперь стало понятнее? smile.gif

ну так
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


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

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

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


Цитата(kess @ 2.05.2007 5:04) *

ну так

? blink.gif
что это значит?


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


Новичок
*

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

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


Цитата(Lapp @ 2.05.2007 5:08) *

? blink.gif
что это значит?

я уже мало что соображаю wacko.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


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

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

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


Цитата(kess @ 2.05.2007 5:10) *

я уже мало что соображаю wacko.gif

Скорее еще, а не уже.. smile.gif
Написать всю прогу?


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


Новичок
*

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

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


Цитата(Lapp @ 2.05.2007 5:12) *

Скорее еще, а не уже.. smile.gif
Написать всю прогу?

если не влом, то да))) буду очень благодарна)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


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

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

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


Вот так - вроде должно работать (не проверял)
function Factorial(n:integer):LongInt;
begin
if n>1 then Factorial:=n*Factorial(n-1) else Factorial:=1
end;

function IntPower(a:real; n:integer):real;
begin
if n>0 then IntPower:=a*IntPower(a,n-1) else IntPower:=1
end;

var
a,S,e:real;
n:integer;

begin
Write('Введите точность E: ');
ReadLn(e);
S:=0;
n:=1;
repeat
a:=IntPower(2/n,n)*Factorial(n);
if a>=e then S:=S+a else break;
Inc(n)
until false;
WriteLn('Сумма ',n,' членов ряда (меньших ',e,') равна ',S)
end.

Я в предыдущем фрагменте забыл увеличивать n sad.gif. Сейчас испрвлю там тоже..

Еще и с именем функции возведения в степень напутал.. Исправлено.

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


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


Новичок
*

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

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


Цитата(Lapp @ 2.05.2007 5:21) *

Вот так - вроде должно работать (не проверял)
function Factorial(n:integer):LongInt;
begin
if n>1 then Factorial:=n*Factorial(n-1) else Factorial:=1
end;

function IntPower(a:real; n:integer):real;
begin
if n>0 then Power:=a*Power(a,n-1) else Power:=1
end;

var
a,S,e:real;
n:integer;

begin
Write('Введите точность E: ');
ReadLn(e);
S:=0;
n:=1;
repeat
a:=Power(2/n,n)*Factorial(n);
if a>=e then S:=S+a else break;
Inc(n)
until false;
WriteLn('Сумма ',n,' членов ряда (меньших ',e,') равна ',S)
end.

Я в предыдущем фрагменте забыл увеличивать n sad.gif. Сейчас испрвлю там тоже..
спасибо

Сообщение отредактировано: kess -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


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

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

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


Но вообще-то это не лучший способ считать, поскольку числитель и знаменатель очень большие и переполняются, хотя их частное вполне нормальное.. Поэтому количество членов ряда сильно ограничено.
Вот так будет лучше:
var
a,S,e:real;
i,n:integer;

begin
Write('Введите точность E: ');
ReadLn(e);
S:=0;
n:=1;
repeat
a:=1;
for i:=1 to n do a:=a*2*i/n;
if a>=e then S:=S+a else break;
Inc(n)
until false;
WriteLn('Сумма ',n,' членов ряда (меньших ',e,') равна ',S)
end.


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


Гость






Цитата
Вот так будет лучше:
Возможно, только это совсем не то же самое, что требуется по условию... Условие требует найти:

(21 * 1!) / 11 + (22 * 2!) / 22 + (23 * 3!) / 33 + ...

А что ищется в последнем примере?

(21 * 1!) / 1 + (22 * 2!) / (1*2) + (23 * 3!) / (1*2*3) + ...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


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

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

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


Цитата(-Volvo- @ 2.05.2007 9:04) *

А что ищется в последнем примере?

(21 * 1!) / 1 + (22 * 2!) / (1*2) + (23 * 3!) / (1*2*3) + ...

volvo, не догоняю.. Почему?..
Внутренний цикл по i, а делю я на n всякий раз.. У тебя получается внизу тоже факториал. Значит, факториал сокращается, остается только 2n. Эта величина всегда больше единицы! Я гонял свою прогу, она выдает тот же самый ответ, что и первый вариант (конечно, при малых n).

Я что-то упускаю?..


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


Гость






ypriamii.gif Lapp, извини, немного не так прочитал цикл, потом уже в машине понял что ошибся, но времени ответить не было... Все верно в твоей программе.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #17


Новичок
*

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

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


а если так?? там возведение в степень +факториал.......


Program posledovatelnost;
Uses CRT;
var
a,S,E:real;
k,n:integer;

begin
ClrScr;
WriteLn('VVedite to4nost E: ');
ReadLn(E);
WriteLn('Vvedite n ');
ReadLn(n);

for k:=1 to n-1 do
a:=(exp(n*ln(2)))*(k*(k+1))/exp(n*Ln(n));
If abs(a)>=E Then S:=S+a else S:=0;
WriteLn('Symma ',n,'-x 4lenov rjada pavna= ', s:4:2);
Repeat until Keypressed;
end.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #18


Гость






А откуда ты знаешь, сколько элементов тебе надо будет просуммировать? Тебе по условию N не дано...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #19


Новичок
*

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

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


Цитата(volvo @ 2.05.2007 21:48) *

А откуда ты знаешь, сколько элементов тебе надо будет просуммировать? Тебе по условию N не дано...

обычно любой можно задать
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #20


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

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

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


Цитата(kess @ 2.05.2007 22:00) *

обычно любой можно задать
Это как это?? blink.gif
Обычно много чего можно... Но речь идет не о том, что обычно можно, а о том, что сейчас нужно!

Но это не единственная твоя ошибка..
Цитата(kess @ 2.05.2007 21:42) *

а если так?? там возведение в степень +факториал.......

Попытаюсь сделать первый проход по ошибкам (типа нулевое приближение smile.gif).

{ 1. Перед циклом весьма желательно обнулять переменную для суммы }
for k:=1 to n-1 do { 2. Тут нужен begin, видимо, иначе оператор If не в цикле. И почему цикл до n-1? }
a:=(exp(n*ln(2)))*(k*(k+1))/exp(n*Ln(n)); { 3. Расчет факториала неверный }
If abs(a)>=E Then S:=S+a else S:=0; { 4. Зачем обнуление суммы здесь?.. }
{ 5. А тут нужен end к begin'у (см. п.2 }


И вообще, нужен, конечно, не for, а repeat (или while).
Извини, просто любопытство: а чем тебе не понравился мой последний вариант? Что-то непонятно?


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





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