Помощь - Поиск - Пользователи - Календарь
Полная версия: Рекурсивная функция
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Yurka
Вот такая програмка: нужно описать рекурсивную функцию (f, a, b, eps), которая методом деления отрезка пополам находит с точностью eps корень уравнения f(x)=0 на [a, b].
Считать, что eps>0, a<b, f(B)<0 i f(x) - непрерывная.
volvo
Yurka,
вот тут приведен итеративный вариант метода дихотомии:
FAQ: Численные методы решения уравнений
Его очень просто преобразовать в рекурсию:

{$n+}
Uses Crt;

Type
  fType = Function(x: Double): Double;

Function f(x: Double): Double; Far;
Begin
  f := 1 / (Exp(x * Ln(2))) - 10 + 0.5*Sqr(x)
End;

function dichotomy(f: fType; a, b: Double;
         const eps: Double): Double;
var c: double;
Begin
  If (b - a) <= eps then begin
    dichotomy := ( a + B ) / 2;
    exit;
  end;

  c := ( a + B ) / 2;
  If (f( a ) * f( с )) < 0 Then
    dichotomy := dichotomy(f, a, c, eps)
  Else
    dichotomy := dichotomy(f, c, b, eps)
End;

Var
  x, Eps, a, b: Double;

begin
  ClrScr;
  Writeln('Введите значения a и b'); Read( a, B );
  WriteLn('Введите точность Eps'); Read(Eps);

  x := dichotomy(f, a, b, Eps);
  WriteLn('Корень равен  x=', x:10:7);
  ReadKey
end.
Yurka
Ну, Volvo, ты молодчинка!!! :p9:
Есть у меня ещё один вопрос, чтобы темы не начинать может здесь задам...
насчёт сортировки. Нужно "метод Бульбашки"(название на украинском) (этот я знаю) smile.gif сравнить с "сортування обміну на великих відстанях" ("сортировка обмена на больших растояниях" вроде так перевёл), так этот второй метод что то я не могу найти. Нужно сравнить их быстродействие, используя любой большой масив
volvo
:D Ты будешь смеяться, но вот тут:
FAQ: Алгоритмы сортировки я выкладывал таблицу, сравнивающую основные алгоритмы для разных входных последовательностей, а вот тут:
FAQ: Улучшение кода Oleg_Z даже приводил программу, производящую такое сравнение...
Yurka
Цитата(volvo @ 4.07.05 20:04)
:D Ты будешь смеяться, но вот тут:
FAQ: Алгоритмы сортировки я выкладывал таблицу, сравнивающую основные алгоритмы для разных входных последовательностей, а вот тут:
FAQ: Улучшение кода Oleg_Z даже приводил программу, производящую такое сравнение...

вообщем всё нормально,ты как всегда на высоте!!!, я это всё просматривал, только вот второй метод это что пирамидальный?
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.