Текст подпрограммы и версий qtthr_p.zip qtthe_p.zip |
Тексты тестовых примеров tqtthr_p.zip tqtthe_p.zip |
Вычисление неопределенного двукратного интеграла от табличной функции, заданной на равномерной сетке, по формуле трапеций.
Вычисляются значения неопределенного двойного интеграла по прямоугольникам x1 ≤ x ≤ xi, y1 ≤ y ≤ yj, i = 1, 2, ..., N, j = 1, 2, ..., M от табличной функции f (x, y), заданной на равномерной сетке
xi = x1 + (i - 1) h1, yj = y1 + (j - 1) h2,
по формуле трапеций.
Н.С.Бахвалов. Численные методы, "Hаука", M.: 1975.
procedure QTTHR(var RINT :Array of Real; H1 :Real; H2 :Real; var F :Array of Real; N :Integer; M :Integer);
Параметры
RINT - | вещественный двумерный массив размера N на M, содержащий вычисленные значения неопределенного интеграла; |
H1 - | заданный шаг равномерной сетки по x (тип: вещественный); |
H2 - | заданный шаг равномерной сетки по y (тип: вещественный); |
F - | вещественный двумерный массив размера N на M, содержащий значения подинтегральной функции f (x, y); |
N - | заданное число узлов сетки по x (тип: целый); |
M - | заданное число узлов сетки по y (тип: целый). |
Версии
QTTHE - | вычисление с расширенной (Extended) точностью неопределенного двукратного интеграла от табличной функции, заданной на равномерной сетке, по формуле трапеций. |
Вызываемые подпрограммы: нет
Замечания по использованию
Требуется, чтобы N ≥ 2 и M ≥ 2 . В подпрограмме QTTHE параметры RINT, H1, H2, F имеют тип Extended. |
Unit TQTTHR_p; interface uses SysUtils, Math, { Delphi } Lstruct, Lfunc, UtRes_p, QTTHR_p; function TQTTHR: String; implementation function TQTTHR: String; var N,M,J,I :Integer; H1,H2,Y,X :Real; F :Array [0..1999] of Real; RINT :Array [0..1999] of Real; label _1,_2; begin Result := ''; { результат функции } H1 := 3.14159/49.0; H2 := 3.14159/39.0; N := 50; M := 40; У := 0.0; for J:=1 to 40 do BЕGin Х := Y; for I:=1 to 50 do begin F[(I-1)+(J-1)*50] := Sin(X); _1: X := X+H1; end; _2: Y := Y+H2; end; QTTHR(RINT,H1,H2,F,N,M); Result := Result + Format('%20.16f %20.16f %20.16f %20.16f ', [RINT[0],RINT[51],RINT[(N-2)+(M-1)*50],RINT[(N-1)+(M-1)*50]]) + #$0D#$0A; UtRes('TQTTHR',Result); { вывод результатов в файл TQTTHR.res } end; end. Результаты: RINT(1, 1) = 0.00000 RINT(2, 2) = 0.00037 RINT(N-1, M) = 0.12803 RINT(N, M) = 0.00001