| 
| 
 | Вопрос # 1 387/ вопрос решён / | 
 |  Приветствую, уважаемые эксперты!Возможна ли реализация в программной среде Delphi расчета итегралов простых фунций??? Пример интеграла приведен в файле, прикрепленном к письму!
 К вопросу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки вопроса) 
|  |   Вопрос задал: phil (статус: Посетитель)Вопрос отправлен: 1 марта 2008, 19:37
 Состояние вопроса: решён, ответов: 2.
 |  Ответ #1. Отвечает эксперт: Вадим К Здравствуйте, phil!Если вы хотите, что бы делфи сама искала производные - то такая функция не встроена в делфи. Вполне может быть, что уже написаны библиотеки для анализа, но вам то они уж точно не нужны.
 Всё можно намного проще.
 Просто вспоминаем, как считается интеграл - это сумма "столбиков" или "трапеций". нужно только саму функцию записать. О этих методах можно почитать здесь
 http://alglib.sources.ru/integral/simpson.php ( с примером на делфи)
 http://ishodniki.ru/list/info.php?cat=7&id=8035&show=delphi_algoritms (только пример)
 http://fordelphi.com/menu_162.html (несколько примеров)
 
|  | Ответ отправил: Вадим К (статус: Академик)Время отправки: 2 марта 2008, 14:02
 Оценка за ответ: 5
 |  Ответ #2. Отвечает эксперт: Feniks Здравствуйте, phil!Я не силен в вышей математике, а в интегралах тем более, но один примерчик у себя в загажнике нашел. Смотрите в Приложении.
 Жедаю удачи.
 Приложение:Переключить в обычный режим { **** UBPFD *********** by kladovka.net.ru ****        Copyright:   Dimka Maslov ********************************************** } typeTDoubleFunc = function (X: Double): Double; function Integral(A, B, Eps: Double; F: TDoubleFunc): Double; function InternalCalc(A, B: Double; F: TDoubleFunc; N: Integer): Double;varx, dx: Double;i: Integer;begindx := (B - A) / N;Result := 0;x := A;for i := 1 to N do begin  Result := Result + dx * (F(x) + 4*F(x+dx/2) + F(x+dx)) / 6;  x := x + dx;end; end; varN: Integer;Prev: Double;beginResult := InternalCalc(A, B, F, 4);N := 4;repeatPrev := Result;N := N shl 1;Result:= InternalCalc(A, B, F, N);until (Result = 0) or (Abs((Result-Prev) / Result) < Eps);end;   function F(X: Double): Double;begin   Result := X * X * X;end; procedure TForm1.Button1Click(Sender: TObject);begin   Label1.Caption := FloatToStr(Integral(-10, 10, 0.00001, F));end;
|  | Ответ отправил: Feniks (статус: Бакалавр)Время отправки: 3 марта 2008, 12:39
 Оценка за ответ: 5
 |  
 Мини-форум вопросаВсего сообщений: 0. 31 января 2011, 19:30: Статус вопроса изменён на решённый (изменил модератор Ерёмин А.А.): Автоматическая обработка (2 и более ответов с оценкой 5) Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |