Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.04.17;
Скачать: CL | DM;

Вниз

Как вычислить в Дельфи интеграл?   Найти похожие ветки 

 
Dimodim ©   (2003-03-29 08:51) [0]

Как вычислить в Дельфи интеграл


 
hooch ©   (2003-03-29 08:59) [1]

Что бы в Делфи вычислить интеграл, нужно на Делфи написать программу которая его и вычислит :-)


 
Strumpf ©   (2003-03-29 09:15) [2]

Метод трапеций, Симпсона, адаптивные методы, Корн и Корн "Справочник по математике для..."


 
nikus ©   (2003-03-29 09:17) [3]

Есть две формулы для вычисления интеграла (работает и не только на Дельфи :). Итак,

1) формула трапеций:
I1=h*[f(a)/2+f(a+h)+f(a+2h)+... +f(a+(n-1)h)+f(b)/2]

2) фоpмула Симпсона:
I2=h/3*(f(a)+f(b)+
4*(f(a+h)+f(a+3h)+...+f(a+(n-1)h))+
2*(f(a+2h)+f(a+4h)+...+f(a+(n-2)h)));

Где
a и b - от чего до чего посчитать (точное название не помню, помнится в школе мы вычисляли площадь фигуры от a до b по оси OX)
h=(b-a)/n, - одна "ступенька"
n=100 - число ступенек (чем больше, тем точне, но дольше считаться будет).
Графически это выглядит так: чтобы посчитать площадь фигуры, ограниченной графиком f(x) и вертикальными ассимптотами в точках a и b (а эта площадь и есть интеграл :), нужно "разбить" фигуру на много маленьких прямоугольников, и сложить площади каждого из них. Площадь каждого из них будет f(a + x) * dx, то есть ширина прямоугольника (dx) на его длину (f(a + x)).


 
Marser ©   (2003-03-29 13:55) [4]

Можно(и даже эффективнее) с помощью разложения в ряд.Всё зависит от подготовки.


 
Tano ©   (2003-03-29 19:07) [5]

Есть Метод Симпсона на паскале, но перевести в Delphi - секунда дела (сам недавно ето сдал очень придирчивому преподу на "Методах вычислений").
Устроит - пиши на mail, вышлю в ответ.


 
Tano ©   (2003-03-29 19:09) [6]

ЗЫ там коментариев больше, чем кода, погрешность метода оценивается по правилу Рунге.


 
был где то рядом   (2003-03-29 22:46) [7]

А как же забытые методы правых, средних и левых прямоугольников?!?

ЗЫ и еще к ним нужны методы уточнений результатов..


 
Alex44   (2003-03-30 20:24) [8]

Vychislyaite integral v Maple. On v Rossii za $2 prodaetsya...


 
Stranger ©   (2003-04-01 12:07) [9]

пусть необходимо вычислить интеграл от a до b интегрируемой на данном участке функции f(x).
Способ самый простой (метод "левых" прямоугольников):
вычисляем шаг интегрирования h = (b-a)/N
далее находим сумму ш = 0 .. N-1, SInt = f(a+i*h)*h
и так по всем отрезкам

Погрешнось метода для гладких функций при значительном числе итераций (разбиений) не велика


 
passm ©   (2003-04-01 12:08) [10]

Malpe, однако ;)


 
D   (2003-04-01 12:24) [11]

{----------------------------------------------------------}
function INTEG(const A,B:real;eps:real):real;
{ Функция вычисления интеграла от f на отрезке [A,B] c точностью eps методом трапеций . Для выбора шага применяется двойной пересчёт . }
var INT,X,eps_d,I1,I2:real; { eps_d - достигнутая точность . }
j:word;
begin INT:=0; { В INT - значение интеграла . }
h:=(b-a)/4;{ Начальное значение шага . }
eps:=eps/4;{Точность для каждого из 4-х равных отрезков интегрирования}
X:=A; { Х - начало текущего подотрезка . }
while X<B do
begin repeat I1:=(f(X)+f(X+h))*h/r ;{I1-значение инт-ла с шагом h . }
h:=h/r;{ Уменьшаем шаг , }
I2:=I1/r ;{ вычисляем интеграл с меньшим шагом . }
for j:=1 to r-1 do I2:=I2+h*f(X+j*h) ;
eps_d:=(I2-I1)/(exp(p*ln(r)-1));
eps_d:=abs(eps_d); { Определяем достигнутую точность. }
eps:=eps/r
{ Пока не будет достигнута требуемая точность на данном подотрезке}
until eps_d<=eps*r;
{ При переходе к следующему отрезку пробуем увеличить шаг }
h:=h*r;
eps:=eps*r;{Вычисляем точность для нового подотрезка }
INT:=INT+I2 ;
X:=X+h { Переходим к новому подотрезку }
end;
INTEG:=INT
end;


 
Vlad Oshin ©   (2003-04-01 12:49) [12]


А вот в символьном виде кто возмется? :)


 
Думкин ©   (2003-04-01 12:53) [13]


> Vlad Oshin © (01.04.03 12:49)

Со 100% предоплатой, без гарантий - я.


 
Vlad Oshin ©   (2003-04-01 12:57) [14]


> Думкин © (01.04.03 12:53)

Со 100% гарантией - не сделаешь :)



 
Думкин ©   (2003-04-01 12:57) [15]


> Vlad Oshin © (01.04.03 12:57)

И пофиг. Я ж условия выставил.


 
D   (2003-04-01 13:02) [16]

вычисление определенного интеграла методом трапеций

Исходные данные :
- интегрируемая функция F(X) ;
- отрезок интегрирования [A,B] ( где A<=B ) ;
- требуемая точность eps вычисления интеграла ;
- p=3 - порядок точности формулы трапеций ;
- r=2 - константа для пересчёта шага по методу Рунге ;
- h=(B-A)/4 - начальный шаг интегрирования ;

К р а т к и й а л г о р и т м .

1) Начало текущего подотрезка интегрирования X:=A ;
вычисляемое значение интеграла INTEG:=0 ;
точность на первом подотрезке eps:=eps/4 .

2) Если начало текущего подотрезка X<=B - левого предела интегрирования, то перейти к п.10 .

3) Найти значение интеграла I1 на подотрезке [x,x+h] с шагом h.

4) Уменьшить шаг h:=h/r и вычислить значение интеграла I2 с новым шагом на том же подотрезке .
|I2-I1|
5) Определить достигнутую точность : eps_d:= -------- .
r - 1

6) Если eps_d>eps, то уменьшить в r раз точность ( для вычисления интеграла на подотрезке с меньшим правым концом ) : eps:=eps/r ,
перейти к п.3.
Иначе - требуемая точность на текущем подотрезке достигнута .

7) При переходе к следующему подотрезку интегрирования попробовать увеличить шаг и соответственно изменить точность: h:=h*r; eps:=eps*r.

8) Добавить новое слагаемое к обобщённой формуле интеграла:
INTEG:=INTEG+I2 .

9) Изменить подотрезок интегрирования (увеличить левый конец) : x:=x+h ,
перейти к п.2 .

10) Конец, приближённое значение интеграла равно INTEG .


 
Думкин ©   (2003-04-01 13:04) [17]

Считать хорошо по Гауссу.


 
Vlad Oshin ©   (2003-04-01 13:07) [18]


> Думкин © (01.04.03 12:57)


:)
дело в том, что существуют функции от которых нельзя вычислить первообразную.
Были интересные алгоритмы, обрабатывающие таблицы Карсона, Двайта и проч., но не более
Интересовался после того, как препод нам предложил написать такую программу за полное освобождение от всех его экзаменов


 
Думкин ©   (2003-04-01 13:09) [19]


> Vlad Oshin © (01.04.03 13:07)

Дык я с 10 лет в курсе.
Потому и условия такие выставил. А заказчик? - его проблемы. %-)



Страницы: 1 вся ветка

Текущий архив: 2003.04.17;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.017 c
1-54603
_User_
2003-04-07 17:12
2003.04.17
Выгрузка приложения


3-54439
Sectey
2003-04-01 10:56
2003.04.17
ClientDataSet & Index


1-54634
MishaS
2003-04-08 10:12
2003.04.17
Работа с контекстным меню


1-54592
bSava
2003-04-07 11:50
2003.04.17
Окно поверх всех окон.


7-54925
Holy
2003-02-27 12:08
2003.04.17
Очередь сообщений