IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Рекурсивная функция, метод деления пополам
Yurka
сообщение 4.07.2005 19:10
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 143
Пол: Мужской

Репутация: -  0  +


Вот такая програмка: нужно описать рекурсивную функцию (f, a, b, eps), которая методом деления отрезка пополам находит с точностью eps корень уравнения f(x)=0 на [a, b].
Считать, что eps>0, a<b, f(B)<0 i f(x) - непрерывная.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 4)
volvo
сообщение 4.07.2005 19:27
Сообщение #2


Гость






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
сообщение 4.07.2005 19:55
Сообщение #3


Пионер
**

Группа: Пользователи
Сообщений: 143
Пол: Мужской

Репутация: -  0  +


Ну, Volvo, ты молодчинка!!! :p9:
Есть у меня ещё один вопрос, чтобы темы не начинать может здесь задам...
насчёт сортировки. Нужно "метод Бульбашки"(название на украинском) (этот я знаю) smile.gif сравнить с "сортування обміну на великих відстанях" ("сортировка обмена на больших растояниях" вроде так перевёл), так этот второй метод что то я не могу найти. Нужно сравнить их быстродействие, используя любой большой масив
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 4.07.2005 20:04
Сообщение #4


Гость






:D Ты будешь смеяться, но вот тут:
FAQ: Алгоритмы сортировки я выкладывал таблицу, сравнивающую основные алгоритмы для разных входных последовательностей, а вот тут:
FAQ: Улучшение кода Oleg_Z даже приводил программу, производящую такое сравнение...
 К началу страницы 
+ Ответить 
Yurka
сообщение 4.07.2005 20:53
Сообщение #5


Пионер
**

Группа: Пользователи
Сообщений: 143
Пол: Мужской

Репутация: -  0  +


Цитата(volvo @ 4.07.05 20:04)
:D Ты будешь смеяться, но вот тут:
FAQ: Алгоритмы сортировки я выкладывал таблицу, сравнивающую основные алгоритмы для разных входных последовательностей, а вот тут:
FAQ: Улучшение кода Oleg_Z даже приводил программу, производящую такое сравнение...

вообщем всё нормально,ты как всегда на высоте!!!, я это всё просматривал, только вот второй метод это что пирамидальный?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 22.06.2025 6:54
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"