|
Текст подпрограммы и версий qsazc_p.zip qsazz_p.zip |
Тексты тестовых примеров tqsazc_p.zip tqsazz_p.zip |
Вычисление криволинейного интеграла от комплекснозначной функции.
Подпрограмма QSAZC вычисляет криволинейный интеграл от комплекснозначной функции f (z) , z = z (t) по участку кривой Г, для которого a ≤ t ≤ b. Вычисленное значение интеграла полагается равным конечной сумме Римана - Стилтьеса
n
∑ f ( zk ) ( zi - zi-1 ) ,
i=1
где n - число подынтервалов, на которые должен быть разбит
исходный отрезок [ a, b ],
а zk∈ ( zi - 1, zi ) .
Лаврентьев М.А., Шабат Б.В. Методы теории функций комплексного переменного. М.: Физматгиз, 1965.
procedure QSAZC(A :Real; B :Real; F :Proc_F2A; G :Proc_F2_A; N :Integer;
var RINT1 :Real; var RINT2 :Real);
Параметры
| A, B - | заданные границы отрезка изменения параметра t (тип: вещественный); |
| F - |
имя подпрограммы вычисления значения f (z) в текущей
точке z (t) кривой Г; заголовок подпрограммы F имеет вид:
procedure F (Z :Array of Real; var FZ :Array of Real); |
| где Z - | вещественный одномерный массив длины 2, в первой компоненте которого задается вещественная часть аргумента z (t), а во второй - мнимая часть аргумента z (t); |
| FZ - | вещественный одномерный массив длины 2, в первой компоненте которого должна быть помещена вещественная часть f ( z (t) ), а во второй компоненте - мнимая часть f ( z (t) ); |
| G - |
имя подпрограммы вычисления значения текущей точки
z (t) кривой Г; заголовок подпрограммы G имеет вид:
procedure G (T :Real; var ZT :Array of Real); |
| где T - | значение параметра t , определяющее положение текущей точки z (t) на кривой Г; |
| ZT - | вещественный одномерный массив длины 2, в первой компоненте которого должна быть помещена вещественная часть вычисленного значения z (t), а во второй компоненте - мнимая часть вычисленного значения z (t); |
| N - | заданное число подынтервалов, на которые должен быть разбит исходный отрезок [ a, b ] (тип: целый); |
|
RINT1 - RINT2 | вещественные переменные, содержащие на выходе соответственно вещественную и мнимую части вычисленного значения интеграла. |
Версии
| QSAZZ - | вычисление криволинейного интеграла от комплекснозначной функции в режиме расширенной (Extended) точности; при этом параметры A, B, RINT1 и RINT2, а также Z, FZ, T и ZT должны иметь тип Extended. |
Вызываемые подпрограммы: нет
Замечания по использованию: нет
Пусть требуется вычислить интеграл
∫ z 2 dz = - 2/3 ,
где z = z (1) + i z (2), по полуокружности | z | = 1, 0 ≤ arg (z) ≤ π с началом пути в точке z = 1 . Данная полуокружность (участок кривой Г) описывается уравнениями:
z(1) = cos t
z(2) = sin t ,
где
a ≤ t ≤ b,
a = 0, b = π .
Выражения для FZ(1) и FZ(2) следуют из соотношений:
z2 = ( z(1) + i z(2) )2 = z(1)2 - z(2)2 + 2 i z(1) z(2) =
= cos2 t - sin2 t + 2 i cos t sin t = 1 - 2 sin2 t + 2 i cos t sin t =
= 1 - 2 z(2)2 + 2 i z(1) z(2) .
Отсюда следует, что
FZ(1) = 1 - 2 z(2)2 ; FZ(2) = 2 z(1) z(2)
Unit TQSAZC_p;
interface
uses
SysUtils, Math, { Delphi }
Lstruct, Lfunc, UtRes_p, FQSAZC_p, FGQSAZC_p, QSAZC_p;
function TQSAZC: String;
implementation
function TQSAZC: String;
var
N :Integer;
A,B,RINT1,RINT2 :Real;
begin
Result := ''; { результат функции }
A := 0.0;
B := 3.14159265;
N := 250;
QSAZC(A,B,FQSAZC,FGQSAZC,N,RINT1,RINT2);
Result := Result + Format('%16.7f %16.7f ',[RINT1,RINT2]) + #$0D#$0A;
end;
end.
Unit FQSAZC_p;
interface
uses
SysUtils, Math, { Delphi }
Lstruct, Lfunc;
procedure FQSAZC( Z :Array of Real; var FZ :Array of Real);
implementation
procedure FQSAZC( Z :Array of Real; var FZ :Array of Real);
begin
FZ[0] := 1-2*IntPower(Z[1],2);
FZ[1] := 2*Z[0]*Z[1];
end;
end.
Unit FGQSAZC_p;
interface
uses
SysUtils, Math, { Delphi }
Lstruct, Lfunc;
procedure FGQSAZC(T :Real; var ZT :Array of Real);
implementation
procedure FGQSAZC(T :Real; var ZT :Array of Real);
begin
ZT[0] := Cos(T);
ZT[1] := Sin(T);
end;
end.
Результаты: RINT1 = -0.6667545 , RINT2 = 0.0