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

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

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

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


Гость






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

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

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


Новичок
*

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

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


как решить такую задачу, со степенью и факториалом в одной формуле?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 2.05.2007 3:37
Сообщение #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 
 К началу страницы 
+ Ответить 
kess
сообщение 2.05.2007 3:42
Сообщение #4


Новичок
*

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

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


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

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

не оч (((
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 2.05.2007 3:52
Сообщение #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 - 2.05.2007 4:23


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
kess
сообщение 2.05.2007 4:04
Сообщение #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 
 К началу страницы 
+ Ответить 
Lapp
сообщение 2.05.2007 4:08
Сообщение #7


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

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

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


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

ну так

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


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


Новичок
*

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

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


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

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

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


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

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

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


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

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

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


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


Новичок
*

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

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


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

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

если не влом, то да))) буду очень благодарна)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 2.05.2007 4:21
Сообщение #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 - 2.05.2007 4:34


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
kess
сообщение 2.05.2007 4:39
Сообщение #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 - 2.05.2007 4:43
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 2.05.2007 4:45
Сообщение #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 
 К началу страницы 
+ Ответить 
-Volvo-
сообщение 2.05.2007 8:04
Сообщение #14


Гость






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

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

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

(21 * 1!) / 1 + (22 * 2!) / (1*2) + (23 * 3!) / (1*2*3) + ...
 К началу страницы 
+ Ответить 
Lapp
сообщение 2.05.2007 8:13
Сообщение #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 
 К началу страницы 
+ Ответить 
volvo
сообщение 2.05.2007 11:29
Сообщение #16


Гость






ypriamii.gif Lapp, извини, немного не так прочитал цикл, потом уже в машине понял что ошибся, но времени ответить не было... Все верно в твоей программе.
 К началу страницы 
+ Ответить 
kess
сообщение 2.05.2007 20:42
Сообщение #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 
 К началу страницы 
+ Ответить 
volvo
сообщение 2.05.2007 20:48
Сообщение #18


Гость






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


Новичок
*

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

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


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

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

обычно любой можно задать
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 2.05.2007 22:18
Сообщение #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

 



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