|
Вопрос # 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
-
- ********************************************** }
-
- type
- TDoubleFunc = function (X: Double): Double;
-
- function Integral(A, B, Eps: Double; F: TDoubleFunc): Double;
-
- function InternalCalc(A, B: Double; F: TDoubleFunc; N: Integer): Double;
- var
- x, dx: Double;
- i: Integer;
- begin
- dx := (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;
-
- var
- N: Integer;
- Prev: Double;
- begin
- Result := InternalCalc(A, B, F, 4);
- N := 4;
- repeat
- Prev := 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)
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|