Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 23.09.2010
Сообщений: 49

Описать рекурсивную функцию

06.03.2011, 11:47. Показов 1734. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Описать рекурсивную функцию root (f,a,b,eps), которая методом деления отрезка пополам находит с точностью eps корень уравнения f(x)=0 на отрезке [a,b].
(Считать, что eps>0, a<b, f(a)*f(b)<0 и f(x) - непрерывная и монотонная функция на отрезке [a,b] ).
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.03.2011, 11:47
Ответы с готовыми решениями:

Описать рекурсивную функцию
Описать рекурсивную функцию Sqrk(x,k,n) вещественного типа, находящую приближенное значение корня k-й степени из числа x по формуле:...

Описать рекурсивную функцию
Очень прошу помочь с задачей : Описать рекурсивную функцию function nmemb(r: link; b:integer):integer; подсчитывающую количество...

Описать рекурсивную функцию
Описать рекурсивную функцию,подробнее на скрине

6
Эксперт функциональных языков программированияЭксперт по математике/физике
4310 / 2102 / 431
Регистрация: 19.07.2009
Сообщений: 3,184
Записей в блоге: 24
06.03.2011, 19:34
Монтонность f гарантирует единственность корня, сам метод работает для всякой непрерывной ф-ции, находя один корень (некоторый из возможных)
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function root(f,a,b,eps): real;
var fa,fb,fc,c: real;
begin
  fa:=f(a);
  fb:=f(b);
  c:=a/2+b/2;
  fc:=f(c);
  if abs(fc)<eps then root:=c else
  if fa<fb 
    then
      if fc>0 then root:=root(f,a,c,eps) else root:=root(f,c,b,eps)
    else
      if fc>0 then root:=root(f,c,b,eps) else root:=root(f,a,c,eps)
  { вроде бы последние 5 строчек эквивалентны 
    if fc*(fb-fa)>0 then root:=root(f,a,c,eps) else root:=root(f,c,b,eps) }
end;
1
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
07.03.2011, 13:09
Delphi
1
2
3
 if fc>0 then root:=root(f,a,c,eps) else root:=root(f,c,b,eps)
    else
      if fc>0 then
что-то поправить нужно....
0
Эксперт функциональных языков программированияЭксперт по математике/физике
4310 / 2102 / 431
Регистрация: 19.07.2009
Сообщений: 3,184
Записей в блоге: 24
07.03.2011, 17:47
Единственное, что следует изменить, так это заголовок функции, точнее, следует проставить типы аргументов.
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
07.03.2011, 17:57
А это
Delphi
1
2
3
if fc>0 
else
      if fc>0 then
нормально?
0
Эксперт функциональных языков программированияЭксперт по математике/физике
4310 / 2102 / 431
Регистрация: 19.07.2009
Сообщений: 3,184
Записей в блоге: 24
07.03.2011, 18:04
Это нормально, в контексте того кода:
Delphi
1
2
3
4
5
6
7
8
9
if fa>fb
  then
    if fc>0
      then //fa>fb & fc>0
      else //fa>fb & fc<0
  else
    if fc>0
      then //fa<fb & fc>0
      else //fa<fb & fc<0
P.S. вроде из баша, а может, какой-то баянистый анекдот: к программисту подбегает сын и спрашивает: «Папа, папа, почему солнце встает на востоке каждый день, а вечером садится за горизонт», на что отец отвечает: «Работает — не трогай!»
0
0 / 0 / 0
Регистрация: 23.09.2010
Сообщений: 49
08.03.2011, 20:41  [ТС]
Прошу проверить, правильно ли написана задача? Если нет, то откорректируйте как нужно...


Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
 
type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Button1: TButton;
    Edit4: TEdit;
    Label4: TLabel;
    Button2: TButton;
    Edit5: TEdit;
    Label5: TLabel;
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
Type lol=function(x:real):real;
 
function root( f:lol; a,b,eps:real):real;
var fa,fb,fc,c: real;
begin
  fa:=f(a);
  fb:=f(b);
  c:=a/2+b/2;
  fc:=f(c);
  if abs(fc)<eps then root:=c else
  if fa<fb
    then
      if fc>0 then root:=root(f,a,c,eps) else root:=root(f,c,b,eps)
    else
      if fc>0 then root:=root(f,c,b,eps) else root:=root(f,a,c,eps)
  { вроде бы последние 5 строчек эквивалентны
    if fc*(fb-fa)>0 then root:=root(f,a,c,eps) else root:=root(f,c,b,eps) }
end;
 
function f(x:real):real;
begin
f:=x+1
end;
 
procedure TForm1.Button1Click(Sender: TObject);
var
    v,eps,a,b:real;
begin
{f:=StrToInt(Edit1.Text);}
a:=StrToInt(Edit2.Text);
b:=StrToInt(Edit3.Text);
eps:=StrToFloat(Edit5.Text);
v:=root(f,eps,a,b);
edit4.Text:= FloatToStr(v);
 
end;
 
 
procedure TForm1.Button2Click(Sender: TObject);
begin
close
end;
 
end.
Добавлено через 18 минут
Задачу понял очень "поверхностно" и по-этому просьба объяснить...Что подразумевается под "корень ур-ния f(x)"?

Добавлено через 2 часа 31 минуту
Задача нужна в ближайшие дни недели...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.03.2011, 20:41
Помогаю со студенческими работами здесь

Описать рекурсивную функцию MinRec(A, N)
Описать рекурсивную функцию MinRec(A, N) веществе не ого типа, которая находится минимальный элемент веществе его голос массива A размера...

Описать рекурсивную функцию root
Описать рекурсивную функцию root(a,b,e) которая методом деления отрезка пополам находит с точностью e корень уравнения f(x)=0 на отрезке ....

Описать рекурсивную функцию deg(N)
Описать рекурсивную функцию deg(N), которая вычисляет, какой степенью числа 5 является натуральное число N. Если N не степень пяти, ...

Описать рекурсивную функцию перебора листьев дерева
Опишите рекурсивную функцию, выводящую на печать информационные поля и ключи всех листьев дерева. Нужно написать программку на Делфи ...

Необходимо описать рекурсивную функцию для подсчёта количества запятых в текстовом файле
Необходимо описать рекурсивную функцию для подсчёта количества запятых в текстовом файле. Код есть,но он неправильный, так как выдает...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru