Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 1 387

/ вопрос решён /

Приветствую, уважаемые эксперты!
Возможна ли реализация в программной среде Delphi расчета итегралов простых фунций??? Пример интеграла приведен в файле, прикрепленном к письму!

К вопросу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки вопроса)

Приложение:
  1. integral (0 -> FD) : (AF / 2) * sqrt(FB^2 - y^2) dy


phil Вопрос решён, но можно продолжить его обсуждение в мини-форуме

Вопрос задал: 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!
Я не силен в вышей математике, а в интегралах тем более, но один примерчик у себя в загажнике нашел. Смотрите в Приложении.
Жедаю удачи.

Приложение:
  1. { **** UBPFD *********** by kladovka.net.ru ****
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10. Copyright: Dimka Maslov
  11.  
  12. ********************************************** }
  13.  
  14. type
  15. TDoubleFunc = function (X: Double): Double;
  16.  
  17. function Integral(A, B, Eps: Double; F: TDoubleFunc): Double;
  18.  
  19. function InternalCalc(A, B: Double; F: TDoubleFunc; N: Integer): Double;
  20. var
  21. x, dx: Double;
  22. i: Integer;
  23. begin
  24. dx := (B - A) / N;
  25. Result := 0;
  26. x := A;
  27. for i := 1 to N do begin
  28. Result := Result + dx * (F(x) + 4*F(x+dx/2) + F(x+dx)) / 6;
  29. x := x + dx;
  30. end;
  31. end;
  32.  
  33. var
  34. N: Integer;
  35. Prev: Double;
  36. begin
  37. Result := InternalCalc(A, B, F, 4);
  38. N := 4;
  39. repeat
  40. Prev := Result;
  41. N := N shl 1;
  42. Result:= InternalCalc(A, B, F, N);
  43. until (Result = 0) or (Abs((Result-Prev) / Result) < Eps);
  44. end;
  45.  
  46.  
  47. function F(X: Double): Double;
  48. begin
  49. Result := X * X * X;
  50. end;
  51.  
  52. procedure TForm1.Button1Click(Sender: TObject);
  53. begin
  54. Label1.Caption := FloatToStr(Integral(-10, 10, 0.00001, F));
  55. end;


Ответ отправил: Feniks (статус: Бакалавр)
Время отправки: 3 марта 2008, 12:39
Оценка за ответ: 5


Мини-форум вопроса

Всего сообщений: 0.

31 января 2011, 19:30: Статус вопроса изменён на решённый (изменил модератор Ерёмин А.А.): Автоматическая обработка (2 и более ответов с оценкой 5)

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 16:27
Выполнено за 0.02 сек.