Модераторы: volvo877, Snowy, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите пожалуйста с моей зазачей. Дано натуральное число n. Вычислить. 
V
    Опции темы
Umar
Дата 28.4.2009, 21:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 27.4.2009

Репутация: нет
Всего: нет



Помогите 

Это сообщение отредактировал(а) Umar - 30.4.2009, 23:17

Присоединённый файл ( Кол-во скачиваний: 29 )
Присоединённый файл  ______1.jpg 8,72 Kb
PM MAIL   Вверх
kemiisto
Дата 28.4.2009, 22:55 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: нет
Всего: 160



Уф...

Значит так. Дан бесконечный ряд, формуля для k-ого члена которого - всё, что стоит за значком суммы. Надо посчитать некую конечную сумму, ограниченную естественно. А что её ограничивает? Правильно, условие k=n.

То есть каждое очерёдное слагаемое твоей суммы будет вычислятся по формуле, что стоит за знаком суммы, где k будет пробегать последовательно целочисленные значения от 1 до n.

Код то нужен? 


--------------------
PM MAIL WWW GTalk Jabber   Вверх
Umar
Дата 28.4.2009, 23:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 27.4.2009

Репутация: нет
Всего: нет



Цитата(kemiisto @ 28.4.2009,  22:55)
Уф...

Значит так. Дан бесконечный ряд, формуля для k-ого члена которого - всё, что стоит за значком суммы. Надо посчитать некую конечную сумму, ограниченную естественно. А что её ограничивает? Правильно, условие k=n.

То есть каждое очерёдное слагаемое твоей суммы будет вычислятся по формуле, что стоит за знаком суммы, где k будет пробегать последовательно целочисленные значения от 1 до n.

Код то нужен?

Да
PM MAIL   Вверх
kemiisto
Дата 28.4.2009, 23:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: нет
Всего: 160



Как-то так...
Код

program test;
var
  n, k: integer;
  k_term, denominator, numerator, sum: real;
  
begin
  write('n = ');
  readln(n);
  numerator := 1;
  denominator := 0;
  sum := 0;
  for k := 1 to n do
  begin
    numerator := numerator * k;
    denominator := denominator + 1 / (k + 1);
    k_term := numerator / denominator;
    sum := sum + k_term;      
  end; 
  writeln(sum);
  readln; 
end.



--------------------
PM MAIL WWW GTalk Jabber   Вверх
Umar
Дата 28.4.2009, 23:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 27.4.2009

Репутация: нет
Всего: нет



Цитата(kemiisto @ 28.4.2009,  23:19)
Как-то так...
Код

program test;
var
  n, k: integer;
  k_term, denominator, numerator, sum: real;
  
begin
  write('n = ');
  readln(n);
  numerator := 1;
  denominator := 0;
  sum := 0;
  for k := 1 to n do
  begin
    numerator := numerator * k;
    denominator := denominator + 1 / (k + 1);
    k_term := numerator / denominator;
    sum := sum + k_term;      
  end; 
  writeln(sum);
  readln; 
end.

А сможите мне подробно обяснить  k_term, denominator, numerator, sum что это и т.д....
PM MAIL   Вверх
kemiisto
Дата 29.4.2009, 00:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: нет
Всего: 160



Цитата(Umar @  28.4.2009,  21:55 Найти цитируемый пост)
А сможите мне подробно обяснить  k_term, denominator, numerator, sum что это и т.д.... 

Подробности - завтра днём. smile 


--------------------
PM MAIL WWW GTalk Jabber   Вверх
Данкинг
Дата 29.4.2009, 01:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: нет
Всего: 130



Цитата(Umar @  29.4.2009,  00:55 Найти цитируемый пост)
А сможите мне подробно обяснить  k_term, denominator, numerator, sum что это и т.д.... 

Это переменные типа real. smile  smile 


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
kemiisto
Дата 29.4.2009, 11:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: нет
Всего: 160



Umar, такс значит. Как и обещал, поясняю.

Вообще, как принято решать такие задачи? Ответ не так прост. Каждый член ряда отличается от предшествующего в несколько раз или на некоторую величину. Давайте-ка рассмотрим примеры попроще. 

Вот, пусть вместо той жуткой дроби, что стоит в Вашем задании за знаком суммы будет просто стоять её числитель. Т.е. будут сумма просто k! (k факториал). Как постпить в таком случае? Нам нужны переменные:
k - счётчик цикла, который будет показывать нам какой именно по счёту член мы сейчас рассчитаем и добавим к сумме.
n - максимальное значение k. k будет пробегать значения от 1 до n. n будем получать от пользователя.
k_term - k-ый член нашего ряда, который мы сейчас рассчитаем и добавим к сумме.
sum - а это, собственно, наша суммочка, которую и надо посчитать.

Всё необходимое у нас есть, пишем код:
Код

program test;
var
  n, k: integer;
  k_term, sum: real;
  
begin
  // Получаем от пользователя число n.
  write('n = ');
  readln(n);

  // Обнуляем переменную, хранящую сумму, дабы быть уверенным, что ничего лишнего в нашу сумму не войдёт. 
  sum := 0;
  
  // k_term инициализируем 1
  // так как затем в цикле, будем умножать k_term на k 
  k_term := 1;

  // В цикле по k от 1 до n...
  for k := 1 to n do
  begin
    // ...вычисляем k-ый член...
    // k-ый член отличается от k-1 (предшествующего в k раз)
    k_term := k_term * k;
    // ...и добавляем его к сумме.
    sum := sum + k_term;      
  end; 
  // Выводим сумму.
  writeln(sum);
  readln; 
end.


Обратите особое внимание на обнуление переменной, хранещей суммы и присвоение значения 1 переменной k_term перед входом в цикл.

Теперь другой пример. Пусть вместо Вашей злополучной дроби будет только её знаменатель. Т.е. будет сумма 1/2 + 1/3 + 1 / (k + 1) + ...
Теперь наш код несколько изменится:
Код

program test;
var
  n, k: integer;
  k_term, sum: real;
  
begin
  // Получаем от пользователя число n.
  write('n = ');
  readln(n);

  // Обнуляем переменную, хранящую сумму, дабы быть уверенным, что ничего лишнего в нашу сумму не войдёт. 
  sum := 0;
  
  // k_term на сей раз инициализируем 0!
  // так как затем в цикле, будем не умножать k_term на k, а прибавлять к нему 1 / (k + 1)
  k_term := 0;

  // В цикле по k от 1 до n...
  for k := 1 to n do
  begin
    // ...вычисляем k-ый член...
    // k-ый член отличается от k-1 (предшествующего в k раз)
    k_term := k_term + 1/ (k + 1);
    // ...и добавляем его к сумме.
    sum := sum + k_term;      
  end; 
  // Выводим сумму.
  writeln(sum);
  readln; 
end.


Теперь "вернёмся к нашим баранам". smile Нетрудно заметить, что Ваша задача - композиция двух вышеизложенных. Появились две новые переменные:
numerator - числитель нашего k-ого члена.
denominator - его знаменатель.
При этом, опять же, нетрудно заметить, что numerator - это k_term из рассмотренной чуть выше первой задачки, а denominator - - это k_term из рассмотренной чуть выше второй задачки. Только в этом случае, записать выражение сразу для очередного k_term не получиться. Но получится сделать так:
  • сначала вычислим числитель нашего очередного члена. Он в k раз больше предшествующего.
  • теперь вычисли знаменатель. Он больше на 1 / (k + 1).
  • разделим числитель на знаменатель и получим наш k-ый член и добавляем его к сумме.
Всё, надеюсь понятно.

Это сообщение отредактировал(а) kemiisto - 29.4.2009, 11:57


--------------------
PM MAIL WWW GTalk Jabber   Вверх
Umar
Дата 29.4.2009, 17:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 27.4.2009

Репутация: нет
Всего: нет



Цитата(kemiisto @ 29.4.2009,  11:56)
Umar, такс значит. Как и обещал, поясняю.

Спасибо вам большое вы меня выручили!!! smile  smile 

Это сообщение отредактировал(а) volvo877 - 29.4.2009, 22:56
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle
Rrader
volvo877

Запрещается!

1. Обсуждать и делится взломанными компонентами или программным обеспечением

2. Публиковать ссылки на варез

3. Оффтопить

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема »


 




[ Время генерации скрипта: 0.0950 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.