Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 04.12.2007, 15:18
Vitek220 Vitek220 вне форума
Заблокирован
 
Регистрация: 03.12.2007
Сообщения: 22
Репутация: 5
Лампочка Вычисление последовательностей

Программисту посвящается...
Дан числовой ряд и некоторые числа E и N. Найти сумму тех членов ряда, модуль которых больше или равен заданному E . Общий член ряда имеет вид ( см.рисунок ), где n=1,2,3...∞ .
Консольное приложение.
Спасибо всем кто поможет !!!
Изображения
Тип файла: gif f1.GIF (1.5 Кбайт, 6 просмотров)
Ответить с цитированием
  #2  
Старый 05.12.2007, 03:11
Rosenkrantz Rosenkrantz вне форума
Активный
 
Регистрация: 04.12.2007
Адрес: Москва
Сообщения: 234
Версия Delphi: Delphi 7
Репутация: 40
По умолчанию

А "x" чему равен для каждого члена ряда?
Ответить с цитированием
  #3  
Старый 05.12.2007, 03:32
Rosenkrantz Rosenkrantz вне форума
Активный
 
Регистрация: 04.12.2007
Адрес: Москва
Сообщения: 234
Версия Delphi: Delphi 7
Репутация: 40
По умолчанию

В общем, для фиксированного значения "X" вот примерно так:

Код:
program SqSum_01;

{$APPTYPE CONSOLE}

uses
  SysUtils, Math;

const
  X_ARG = 1.3;  // Это "x" в формуле

//------------------------------------------------------------------------------
// Функция вычисляет значение факториала N
//------------------------------------------------------------------------------
function Factorial(N: Integer): Cardinal;
begin
  if N = 1 then Result := 1
           else Result := Factorial(N - 1) * N;
end;

//------------------------------------------------------------------------------
// Функция вычисляет значение очередного члена ряда с номером N
//------------------------------------------------------------------------------
function SqTerm(N: Integer; X: Double): Double;
begin
  Result := Power(-1, N) * Power(X, 2 * N) / Factorial(2 * N);
end;

//------------------------------------------------------------------------------
// Функция вычисляет сумму членов последовательности,
// удовлетворяющих условию задачи
//------------------------------------------------------------------------------
function SumTerms(N: Integer; E: Double): Double;
var
  Term: Double;
begin
  Result := 0.0;                // Сюда будем суммировать

  while N > 0 do begin
    Term := SqTerm(N, X_ARG);   // Вычисляем очередной член ряда
    if Abs(Term) >= E then      // Проверяем условие
      Result := Result + Term;  // Если модуль больше либо равен E - суммируем
    Dec(N);                     // Переходим к следующему члену ряда
  end;
end;

begin
  Writeln('X = ', X_ARG:6:2);

  Writeln('E = 2, N = 10: ', SumTerms(10, 2):10:2);
  Writeln('E = 1, N = 10: ', SumTerms(10, 1):10:2);
  Writeln('E = 0, N = 10: ', SumTerms(10, 0):10:2);

  { Чтобы пользователь смог насладиться результатом, ожидаем нажатия Enter}
  Writeln;
  Writeln('Press [Enter].');
  Readln;
end.
Ответить с цитированием
  #4  
Старый 07.12.2007, 22:36
Vitek220 Vitek220 вне форума
Заблокирован
 
Регистрация: 03.12.2007
Сообщения: 22
Репутация: 5
По умолчанию

А если X вводится пользователем ?
Ответить с цитированием
  #5  
Старый 07.12.2007, 22:39
Vitek220 Vitek220 вне форума
Заблокирован
 
Регистрация: 03.12.2007
Сообщения: 22
Репутация: 5
По умолчанию

например X:byte;
Ответить с цитированием
  #6  
Старый 08.12.2007, 11:39
Rosenkrantz Rosenkrantz вне форума
Активный
 
Регистрация: 04.12.2007
Адрес: Москва
Сообщения: 234
Версия Delphi: Delphi 7
Репутация: 40
По умолчанию

Код:
program SqSum_01;

{$APPTYPE CONSOLE}

uses
  SysUtils, Math;

var
  X_ARG: Double;

//------------------------------------------------------------------------------
// Функция вычисляет значение факториала N
//------------------------------------------------------------------------------
function Factorial(N: Integer): Cardinal;
begin
  if N = 1 then Result := 1
           else Result := Factorial(N - 1) * N;
end;

//------------------------------------------------------------------------------
// Функция вычисляет значение очередного члена ряда с номером N
//------------------------------------------------------------------------------
function SqTerm(N: Integer; X: Double): Double;
begin
  Result := Power(-1, N) * Power(X, 2 * N) / Factorial(2 * N);
end;

//------------------------------------------------------------------------------
// Функция вычисляет сумму членов последовательности,
// удовлетворяющих условию задачи
//------------------------------------------------------------------------------
function SumTerms(N: Integer; E: Double): Double;
var
  Term: Double;
begin
  Result := 0.0;                // Сюда будем суммировать

  while N > 0 do begin
    Term := SqTerm(N, X_ARG);   // Вычисляем очередной член ряда
    if Abs(Term) >= E then      // Проверяем условие
      Result := Result + Term;  // Если модуль больше либо равен E - суммируем
    Dec(N);                     // Переходим к следующему члену ряда
  end;
end;

begin
  Write('X: ');
  Readln(X_ARG);

  Writeln;
  Writeln('X = ', X_ARG:6:2);

  Writeln('E = 2, N = 10: ', SumTerms(10, 2):10:2);
  Writeln('E = 1, N = 10: ', SumTerms(10, 1):10:2);
  Writeln('E = 0, N = 10: ', SumTerms(10, 0):10:2);

  { Чтобы пользователь смог насладиться результатом, ожидаем нажатия Enter}
  Writeln;
  Writeln('Press [Enter].');
  Readln;
end.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 15:27.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter