imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Компьютеры > Программирование
Опции темы
Старый 16.01.2005, 00:25     # 1
steelik
Member
 
Аватар для steelik
 
Регистрация: 30.09.2002
Сообщения: 320

steelik Путь к славе только начался
Находим производную в Паскале

Подскажите, как реализовать программку поиска точек экстремума функции.. (точки максимума, минимума).

Или хотя бы как найти производную функции? Существуют ли такие готовые функции?
steelik вне форума  
Старый 16.01.2005, 00:48     # 2
Repressor
::VIP::
 
Аватар для Repressor
 
Регистрация: 05.05.2003
Адрес: Hell
Сообщения: 1 377

Repressor Популярный человек на этом форумеRepressor Популярный человек на этом форумеRepressor Популярный человек на этом форумеRepressor Популярный человек на этом форумеRepressor Популярный человек на этом форумеRepressor Популярный человек на этом форумеRepressor Популярный человек на этом форуме
steelik
Когда-то сам искал нечто подобное, найти очень сложно. Пришлось писать самому, благо, моей задачей был анализ численного метода локализации корней и подходила любая функция. Так что, если нужна программа для поиска производной полинома, то всегда пожалуйста
Вообще написать программу, ищущую производную функции - несложная задача. Надо знать таблицу основных элементарщин, арифм. св-ва производной, производную композиции и обратной функции.

А экстремум можно искать исходя из необх. и дост. условий. Т.е. найти первую производную. IF она равна нулю, тогда можно проверить ее знаки при переходе через подозрительную на экстремум точку, либо найти 2-ую производную, если это возможно. Если она больше нуля, то функция выпуклая на интервале и экстремум существует.

Основная сложность написания такой программы - трудоемкость.
__________________
Доказать - значит громко повторить сказанное...
Repressor вне форума  
Старый 16.01.2005, 20:47     # 3
crawler
Full Member
 
Регистрация: 11.12.2002
Сообщения: 864

crawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собой
Встроенной мат. библиотеке нет.

Но! Производная в точке х любой дифференцируемой функции f по определению:
Код:
        f(x+dx) - f(x)
f'(x) = -------------
             dx
То есть ищешь значения функции с некоторым (небольшим , скажем 0.01 ) шагом, делишь разность на шаг, получаем дифференциал в точке. Ищем значения близкие к нулю, если получается несколько подряд берем только одно (то что с минимальным значением по модулю).

Можешь поискать готовые бибиотеки.

Удачи

Последний раз редактировалось crawler; 16.01.2005 в 20:51.
crawler вне форума  
Старый 17.01.2005, 12:39     # 4
Ghost
::VIP::
Звезда первого сезона
Молчун-2004
 
Аватар для Ghost
 
Регистрация: 24.08.2002
Сообщения: 1 575

Ghost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех Гуру
crawler
Все верно, но я бы еще порекомендовал выполнять циклическое нахождение значения производной, постепенно уменьшая dx, до тех пор пока они не станут отличаться друг от друга на какое-то достаточно маленькое число:
Код:
const
  e = 0.000001;
...
  dx := 0.01;
  f1 := -10000000;
  repeat
    f2 := f1;
    f1 := (f(x + dx) - f(x)) / dx;
    dx := dx / 2;
  until abs(f1 - f2) <= e;
__________________
Действовать надо тупо и это лучшее доказательство нашей чистоты и силы!

Последний раз редактировалось Ghost; 17.01.2005 в 12:45. Причина: склероZzz...
Ghost вне форума  
Старый 21.01.2005, 11:21     # 5
SwiMMeR
::VIP::
Отыпный Саводод
 
Аватар для SwiMMeR
 
Регистрация: 27.10.2002
Адрес: Краснодар, Россия
Пол: Male
Сообщения: 452

SwiMMeR Имеются все основания чтобы гордиться собойSwiMMeR Имеются все основания чтобы гордиться собойSwiMMeR Имеются все основания чтобы гордиться собойSwiMMeR Имеются все основания чтобы гордиться собойSwiMMeR Имеются все основания чтобы гордиться собойSwiMMeR Имеются все основания чтобы гордиться собойSwiMMeR Имеются все основания чтобы гордиться собойSwiMMeR Имеются все основания чтобы гордиться собойSwiMMeR Имеются все основания чтобы гордиться собой
steelik
Покопайся в скриптах для MatLab'а ... он имеет кучу встроенных функций .. например, таких как перемножение матриц и тому подобное, чего нет во многих других средах программирования ...
__________________
The Information will be FREE!
SwiMMeR вне форума  


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

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 22:01.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.