Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.11.2012, 12:46   #1
stranger84
Пользователь
 
Регистрация: 09.07.2012
Сообщений: 11
По умолчанию Вычисления ряда с использованием реккурентной ф-лы на Dephi

день добрый
дано такое задание:


Написал такой текст программы, но выдаёт неверный ответ
подскажите пожалуста, в чём ошибка..очень нужно..
заранее спасибо
с ув. Андрей

Код:
procedure TfrmWhileRepeat.ButtonLnClick(Sender: TObject);
const
   max_iter = 100;
var
   x, eps, sum, dTemp, result, tmp : double;
   i : integer;
   str : string;
   u: real;  s: real;  k : integer;
begin
   Memo1.Clear;

   x := StrToFloat(Edit1.Text);
   eps := StrToFloat(Edit2.Text);

   if eps < 0.001
   then
      begin
        Memo1.Lines.Append('Внимание! Возможна потеря точности из-за ' +
                           'ограниченной разрядной сетки чисел с плавающ точкой');
        Memo1.Lines.Append('--------------------');
      end;

   s:=0; {обнуление суммы}
   k:=1; {начальное значение переменной k}
   u:=x; {первый член ряда}

   while ( (abs(u) > eps) and (k < max_iter) ) do
     begin
       s:=s+u; {суммируем ряд}
       k:=k+1; { формируем след число }
       U := -U * x * (k - 1) / k;

       if CheckSteps.Checked
       then
          begin
             str := '--- Итерация ' + IntToStr(k-1) + ';   Ряд=' + FloatToStr(s);
             Memo1.Lines.Append(str);
          end;
     end;



  if abs(U) > eps
  then
     begin
        Memo1.Lines.Append ( ' сумма ряда S=' + FloatToStr(S) );
        EditAnswer2.Text := FloatToStr(S);

        // контрольная проверка по исходной формуле
        tmp := ln(1 + x);
        Edit4.Text := FloatToStr(tmp);
     end
  else
     Memo1.Lines.Append('Ответ не найден! За ' + IntToStr(max_iter) +
                        ' шагов итерация не сошлась.');
end;
Вот здесь видно где и как я пообзывал разные объекты на форме:


Вот здесь архив с исходниками - http://ifolder.com.ua/kgxkcsz508fe.html
Вложения
Тип файла: rar Lab_5.rar (198.9 Кб, 5 просмотров)

Последний раз редактировалось stranger84; 26.11.2012 в 13:40.
stranger84 вне форума Ответить с цитированием
Старый 26.11.2012, 13:06   #2
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

неверный - это совсем неверный или просто расходится с правильным на каком-то знаке после запятой?

Думаю, лучше было бы, чтоб Вы архив проекта прикрепили
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 26.11.2012, 13:32   #3
stranger84
Пользователь
 
Регистрация: 09.07.2012
Сообщений: 11
По умолчанию

архив добавил

неверный - это совсем неверный.
При х = 2 в первое поле как ответ выводится число равное около 4м, а при контрольной проверке должно быть порядка 1,034....
stranger84 вне форума Ответить с цитированием
Старый 26.11.2012, 13:36   #4
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Перейдите в расширенный режим добавления сообщений и прикрепите (скрепка вверху) этот же архив к сообщению в форуме. Мало кому захочется ждать минуту (у меня вообще 10 минут выдает )
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 26.11.2012, 16:37   #5
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,899
По умолчанию

Код:
s:=s+u; {суммируем ряд}
k:=k+1; { формируем след число }
U := -U * x * (k - 1) / k;
Вроде порядок неправильный, надо сперва считаем, а потом уже инкремент шага. А так по логике, вы первый-то шаг как раз пропускаете и вычисляете сразу второй (к+1, где к=1). И вообще, привыкайте уже пользоваться трассировкой.
Ну и проверьте, когда сумму тоже делать, может тоже не в том месте.
phomm вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
С использованием цикла для вычисления суммы ряда решить уравнение ben74 Помощь студентам 0 15.03.2012 10:00
Решить уравнение с использованием цикла для вычисления суммы ряда ben74 Помощь студентам 1 05.02.2012 12:48
программа для вычисления суммы ряда Vitalina69 Общие вопросы Delphi 2 01.12.2010 19:47
Программа вычисления бесконечного числового ряда anna_ Помощь студентам 8 11.11.2010 13:48
вычисления суммы ряда kJlaCuk Паскаль, Turbo Pascal, PascalABC.NET 3 17.09.2008 23:24