Помощь - Поиск - Пользователи - Календарь
Полная версия: числовые ряды
Форум «Всё о Паскале» > Разработка ПО, алгоритмы, общие вопросы > Алгоритмы
jenka
Какие существуют основные приемы решения задач на числовые ряды. Примеры
Lapp
Цитата(jenka @ 14.11.2006 16:03) *

Какие существуют основные приемы решения задач на числовые ряды. Примеры

Хм.. А ты приведи примеры самих задач.

PS
Altair, давай уже создавай скорее свой новый раздел! Заваливают.. smile.gif
jenka
Могу сказать только, что такое числовой ряд и о нем немного:
Числовой ряд - это последовательность чисел, зависящих от своих номеров.
Определение этой зависимости является одной из целей данного класса задач.
Если закономерность найдена, то можно задав номер ряда, определитьего значение.
Например дан ряд 2, 4, 8, 16, 32,... Можно определить, что значение элемента ряда с номером n равняется 2 в степени n.
Кроме значений элемента ряда в задачах подобного типа часто требуется определить:
- значение текущего элемента ряда
- значение предыдущего элемента ряда
- сумму элементов ряда
- колличество элементов ряда.
Для решения подобного рода задач обычно используются инструкции циклов.
Lapp
jenka, боюсь, ты неверно определяешь. Твое определение явно противоречит общепринятому понятию ряда. Ибо "ряд" - это бесконечная сумма чисел (иногда бывает произведение, но специально оговаривается). А когда ты говоришь:
Цитата
Числовой ряд - это последовательность чисел, зависящих от своих номеров.
- то ты все равно получаешь последовательность, ибо ты не превнесла никакого нового свойства. Поэтому либо докажи, что твое определение имеет какой-то (неясный мне пока) смысл, либо давай говорить о последовательностях (хотя, согласен, это слово длиннее smile.gif).

Далее, я не знаю никаких общих методов работы с последовательностями - кроме, может, того, что в них естественно использовать циклы, как ты сама упомянула. И добавить тут практически нечего.. sad.gif

Поверь, я очень хочу помочь, но не могу, так как не въезжаю в суть вопроса. И мне кажется (судя по молчанию остальных), что я не один такой. Попробуй поставить задачу более четко.
Ок?
jenka
Дело такого рода, что я сама не могу понять, что это за такие числовые ряды, а уж об основных приемах решения задач на них, просто и говорить незнаю что. Поэтому мне хотелось хотя бы узнать, что это такое или может это действительно последовательности, просто их так назвали, вот только незнаю зачем. Я перерыла кучу книг по паскалю (очень много) и ничего не нашла, где бы говорилось о числовых рядах, как они задаются и т.п. Поэтому и обратилась к Вам за помощью, думала, что может Вы знаете.
Вот что еще у меня написано про числовые ряды:
В конкретной задаче на числовой ряд обычно задается условие прекращения суммирования элементов ряда, например:
- значение текущего элемента ряда меньше (больше) заданного числа
- сумма элементов ряда больше заданного числа
- разность между текущим и предыдущим элементами ряда больше (меньше) заданного числа
- номер элемента ряда больше заданного числа.
При решении задач на числовые ряды рекомендуется соблюдать следующую последовательность:
1. Назначение нумерации элементов ряда. Для этого на основании анализа зависимости изменения знака и значения элемента ряда от его номера n следует определить, с какого элемента начинать нумерацию. Например, в случае ряда 2+4+8+16+32+... нумерацию следует начинать с первого элемента. если выбрана нумерация ряда не с первого элемента, то это необходимо учитывать при выводе информации.
2. Ряды могут быть также знакопеременными, т.е элемент ряда может быть как положительным, так и отрицательным числом, например: -1, 2, -3, 4,...
Очень часто элемент ряда удобно задавать через функцию mod.
3. В результате анализа элементов ряда определяется формула для нахождения текущего элемента ряда.
4. В зависимости от условия задачи выбирается структура алгоритма.
5. Составляется алгоритм решения задачи.
6. Полученный алгоритм проверяется на начальных значениях данного ряда.
7. Составляется программа.

Вот это и все, что у меня есть про числовые ряды. Может это и есть просто последовательноти, или что-то другое, я не знаю. может кто-нибудь сможет что- либо сказать об этом?
Lapp
Цитата(jenka @ 15.11.2006 16:21) *

Дело такого рода, что я сама не могу понять,
...
В конкретной задаче на числовой ряд обычно задается условие прекращения суммирования элементов ряда,
Ты права в первом процитированном мной предложении smile.gif. Но это не беда, "мы все учились понемногу"..

Как видно из приведенной тобой цитаты, ряд все-таки понимается в своем обычном качестве, то есть как бесконечная сумма - и отсюда все (или почти все) следует. Тема "Ряды" является одной из наиболее хорошо разработанных в обычном институтском курсе математического анализа. Они хорошо классифицированы, для них есть несколько теорем, позволяющих, исходя из различных признаков утверждать сходимость или расходимость ряда. Ряд обычно обозначается большой греческой буквой "сигма", снизу от которой пишется нижний предел суммирования, сверху - верхний.
Нажмите для просмотра прикрепленного файла
Говорят, что ряд сходится, если предел конечных сумм его существует. Если ряд сходится, то его сумму можно оценить из конечных сумм (бесконечное суммирование невозможно в принципе). Именно о такой оценке и говорится в твоей цитате (условие прекращение суммирования).
Любую последовательность можно превратить в ряд, просуммировав ее. Вопрос - будет ли этот ряд сходиться.

Стало немного яснее? smile.gif
jenka
Про числовые ряды в математике, я понимаю, и прочла о них, но самое интересное, что мне они нужны со стороны Turbo Pascal, нужно знать основные приемы решения задач на числовые ряды, еще и привести примеры этих задач, где это брать? Я просто в тупике. Такой информации я не нашла, ни в одной книге про Turbo Pascal.
Lapp
Цитата(jenka @ 16.11.2006 13:53) *

Такой информации я не нашла, ни в одной книге про Turbo Pascal.

Ее там и не могло быть. Все равно что искать в инструкции к автомобилю, как проехать в Мытищи smile.gif.
Давай постановку задачи - будем решать вместе smile.gif
jenka
Даа, все очень странно, зачем тогда начинающим изучать Turbo Pascal (это я про себя) задавать такие задания(мысли вслух).

Цитата(lapp @ 16.11.2006 12:59) *

Ее там и не могло быть. Все равно что искать в инструкции к автомобилю, как проехать в Мытищи smile.gif.
Давай постановку задачи - будем решать вместе smile.gif


Давай, вот только помощник с меня слабый, но я буду прилогать все силы.
Lapp
Цитата(jenka @ 16.11.2006 14:19) *

Даа, все очень странно, зачем тогда начинающим изучать Turbo Pascal (это я про себя) задавать такие задания(мысли вслух).
Давай, вот только помощник с меня слабый, но я буду прилогать все силы.

Может, это просто набросок условия задачи в надежде на то, что ты сама конкретизируешь?..
Возьми любой ряд (да хотя бы и вычисление числа Пи - поищи по Форуму, недавно проскакивало несколько тем), да и составь прогу для его подсчета. Продемонстрируй умение пользоваться циклами, прекращение расчетов по всяким признакам.. Как думаешь?

А помощь ученика - во внимании smile.gif.
jenka
Вот можно привести такой пример:
Вычислить S=1+2+3+...+n.

var n,s,i,: integer;
BEGIN write(' Введите значение n ->');
readln (n);
s:=0;
for i:=1 to n do s:=s+i;
writeln('Сумма =',s);
END.


или вычислять S=1+2+3+...+n , пока n не будет равняться 50

......
BEGIN s:=0;
n:=1
while n<=50 do
s:=s+n;
n:=n+1;
END.


или так

BEGIN s:=0;
n:=1:
repeat s:=s+n;
n:=n+1;
until n<=50;
END.



Lapp
Цитата(jenka @ 17.11.2006 10:34) *

или вычислять S=1+2+3+...+n , пока n не будет равняться 50
BEGIN s:=0;
n:=1
while n<=50 do
s:=s+n;
n:=n+1;
END.

или так
BEGIN s:=0;
n:=1:
repeat s:=s+n;
n:=n+1;
until n<=50;
END.


В первом куске (процитированном) нужно взять тело цикла в операторные скобки "begin end" - иначе компилятор будет исполнять в цикле только один оператор, сразу следующий за оператором цикла while. Кроме того, пропущена одна ";" (найди, где). То есть нужно так:
BEGIN
s:=0;
n:=1;
while n<=50 do begin
s:=s+n;
n:=n+1
end;
END.

Советую обратить внимание на формат прогрпммного текста (отступы), это важно в программировании.

Во втором фрагменте неверно поставлено условие выхода из цикла. Для until оно как бы противоположное тому, что нужно ставить в while. То есть в while это "пока ..", а в until "пока не ..". Еще тут вместо ";" стояло ":" в одном месте..
Надо так:
BEGIN 
s:=0;
n:=1;
repeat
s:=s+n;
n:=n+1
until n>50
END.

Этот пример довольно простой. Кроме того, ряд этот расходится, что нехарактерно. Найди формулу для сходящегося ряда, желательно знакопеременного, и оцени ее по последнему члену в сумме.
Успехов! smile.gif
jenka
Вот нашла формулу про число Pi:

pi = 4 - 4/3 + 4/5 - 4/7 + 4/9 +-.....

Формула, по которой увеличивается знаменатель такая: 4/(2xi)-1 , где i - индекс числа ряда

Вот где- то так выглядит алгоритм вычисления:

BEGIN
s:=0;
x:=1;
for i:=4 to n do begin
s:=s+((x*4)/((2*i)-1));
x:=-x;
end;
END.
Lapp
Цитата(jenka @ 17.11.2006 18:36) *

Вот где- то так выглядит алгоритм вычисления:
BEGIN
s:=0;
x:=1;
for i:=4 to n do begin
s:=s+((x*4)/((2*i)-1));
x:=-x;
end;
END.


Поправка:
это не алгоритм, а реализация алгоритма.

Ошибка:
цикл надо начинать не с 4, а с 1.

Вопрос:
как ты могла не заметить этого, если хоть раз прогоняла программу? Ведь явное отличие от Пи бросилось бы в глаза..

Вывод:
программа ни разу не прогонялась.

Совет:
всегда прогоняй программы. Большие - потому что иначе невозможно проверить ошибки. Маленькие - потому что это всегда просто сделать.

Наблюдение:
ты не любишь отвечать на заданные тебе вопросы (или просто советы, типа: хорошо, понятно, постараюсь). Боюсь, так дело не пойдет..

Задание:
попробуй понять, почему я рекомендовал число Пи (ты правильно выбрала ряд, знакопеременный). И как нужно изменить твой алгоритм, чтобы повысить его функциональность.

Подсказка:
3.14...
jenka
Ошибка:
цикл надо начинать не с 4, а с 1.
Вопрос:
как ты могла не заметить этого, если хоть раз прогоняла программу? Ведь явное отличие от Пи бросилось бы в глаза..

я об этом догодалась ,но было уже поздно, меня небыло в нете

Вывод:
программа ни разу не прогонялась.

вот это ты точно подметил, я как - то об этом не подумала

Совет:
всегда прогоняй программы. Большие - потому что иначе невозможно проверить ошибки. Маленькие - потому что это всегда просто сделать.

Окей, приму к сведению.

Наблюдение:
ты не любишь отвечать на заданные тебе вопросы (или просто советы, типа: хорошо, понятно, постараюсь). Боюсь, так дело не пойдет..

люблю, когда я их до конца понимаю, а переспрашивать как то не удобно. И я вроде еще ниче плохого не сделала, делала все что могла. А как пойдет дело?

Кстати, пробовала прогонять у меня не выходит 3,14 даже ,если начинать цикл с 1
Lapp
Если хочешь отвечать вразбивку, то делай так, как я - вручную разбивай на строки и вставляй "> ", либо пользуйся тегом "цитата" (кнопка сверху).

> люблю, когда я их до конца понимаю, а переспрашивать
> как то не удобно. И я вроде еще ниче плохого не сделала,
А нужно именно, когда не понимаешь. Переспрашивай, не стесняйся.

> делала все что могла. А как пойдет дело?
Все зависит от тебя. smile.gif

> Кстати,
С каких пор основной вопрос стал "кстати"?..

> пробовала прогонять у меня не выходит 3,14 даже ,если начинать цикл с 1
Если пишешь об ошибке - пиши предметно. Что именно получается? На будущее: если выскакивает ошибка - приводи номер или сообщение наиболее близко к тексту.

Кроме того, этот ряд сходится очень медленно.. Нужно сто членов, чтоб получить третий знак примерно. Может, в этом дело?

Еще раз делаю вывод, что ты не стала читать тему, на которую я ссылался в Подсказке в предыдущем мессадже..
Успехов! smile.gif
Гость
хм, самого щас интересует проблема рядов в паскале)))

ИМХО, нужно использовать частичную сумму и по ней можно рассчитывать сходимость или расходимость, но пока я еще не углубился в эту тему.

junky
блин, если че, это я "Гость".
если кто уже занимался рядами в паскале - пишите))
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.