АЛГОРИТМЫ

Новости

Рассылка новостей

Форум

AlgoPascal

Редактор блок-схем

Статьи

О сайте

Контакты



Содержание - Численное интегрирование - Вычисление комплексного интеграла

Вычисление криволинейного интеграла в комплексной области

Процедура вычисляет значение криволинейного интеграла для комплексной переменной z.

с помощью конечной суммы Римана-Стильтьеса.

Процедура использует функции F1(x,y) и F2(x,y) как действительную и мнимую часть функции F(z), где x, y - действительная и мнимая часть аргумента, а функции Z1(x,y) и Z2(x,y) как действительную и мнимую часть функции z(t) определяющей контур по которому происходит интегрирование. И на выходе получаем значения s1, s2 - действительную и мнимую часть значения интеграла.

Если нашли ошибку в алгоритме - сообщите!



Реализации алгоритма на различных языках:

Реализация алгоритма на C++
Реализация алгоритма на Delphi
Реализация алгоритма на Visual Basic 6

Блоксхемы:

Посмотреть блок-схему алгоритма
Скачать блок-схему алгоритма


Реализация алгоритма на AlgoPascal:

unit IntegralComplexUnit;

declaration
(*
Интеграл от функции F(Z) по кривой Z(t), t на [a,b].
ReF = Re F(x+iy)
ImF = Im F(x+iy)
ReZ = Re Z(t)
ImZ = Im Z(t)
*)
function ReF(X:Real; Y:Real):Real;
function ImF(X:Real; Y:Real):Real;
function ReZ(T:Real):Real;
function ImZ(T:Real):Real;

interface
    IntegralComplex;
implementation

(*
Вычисление криволинейного интеграла в комплексной области.
Интеграл от функции F(Z) по кривой Z(t), t на [a,b].

procedure IntegralComplex(a,b:real;n:integer;var s1,s2:real);

Интегрирование проводится с шагом h=(b-a)/n.
На выходе получаем значения s1,s2 - действительную и мнимую
часть значения интеграла.
*)
procedure IntegralComplex(
    const   a   :   Real;
    const   b   :   Real;
    const   n   :   Integer;
    out     s1  :   Real;
    out     s2  :   Real);
var
    d   :   Real;
    d1  :   Real;
    d2  :   Real;
    f1  :   Real;
    f2  :   Real;
    t   :   Real;
    x   :   Real;
    y   :   Real;
    z1  :   Real;
    z2  :   Real;
    z3  :   Real;
    z4  :   Real;
begin
    s1:=0;
    s2:=0;
    d:=(b-a)/n;
    t:=a;
    z3:=ReZ(t);
    z4:=ImZ(t);
    t:=t+d;
    repeat
        z1:=ReZ(t);
        z2:=ImZ(t);
        d1:=z1-z3;
        d2:=z2-z4;
        x:=z3+d1/2;
        y:=z4+d2/2;
        f1:=ReF(x,y);
        f2:=ImF(x,y);
        s1:=s1+f1*d1-f2*d2;
        s2:=s2+f1*d2+f2*d1;
        z3:=z1;
        z4:=z2;
        t:=t+d;
    until not(t<b);
end;


end.

 


Бочканов Сергей, Быстрицкий Владимир
Copyright © 1999-2004
При поддержке проекта MANUAL.RU