![]() |
![]() |
||||
![]() | |||||
![]() |
![]() АЛГОРИТМЫ Новости Рассылка новостей Форум AlgoPascal Редактор блок-схем Статьи О сайте Контакты |
![]() |
![]() Линейное уравнение Вольтерра первого родаЛинейное интегральное уравнение Вольтерра первого рода имеет вид: Если k(a, a) не равно 0, f(a) = 0 и если функции f(x), k(x, s) имеют производные f'(x), k'x (x, s), непрерывные в интервале (a, b), заключенном в интервале интегрирования, внутри которого k(x, s) не обращается в нуль, то уравнение Вольтерра первого рода допускает в интервале (a, b) непрерывное и единственное решение. Представленная процедура решает уравнение методом квадратурных формул. Вычисление интеграла производится по формуле трапеций с постоянным шагом h: где
Если нашли ошибку в алгоритме - сообщите! Реализации алгоритма на различных языках:![]() ![]() ![]() Блоксхемы:![]() ![]() Реализация алгоритма на AlgoPascal:unit Volterra1Unit; declaration function F(X : Real):Real; function K(X : Real; S : Real):Real; interface SolveVolterra1; implementation (****************************************************************** Процедура решает интегральное уравнение Вольтерра первого рода, заданное ядром интегрирования K(X,S) и правой частью F(X), на отрезке [A, B]. Результат помещается в массив Y с номерами элементов от 1 до N, где 1 соответствует A, N соответсвует B. ******************************************************************) procedure SolveVolterra1( const A : Real; const B : Real; const N : Integer; out Y : array of Real); var G : Real; H : Real; K1 : Real; X : Real; I : Integer; J : Integer; begin SetBounds(y, [1, N]); h := (b-a)/(n-1); k1 := K(a,a); y[1] := (-3*F(a)+4*F(a+h)-F(a+2*h))/(2*h*k1); for i:=2 to n do begin x := a+(i-1)*h; g := F(x)/h; for j:=1 to i-1 do begin k1 := K(x,a+(j-1)*h); if j=1 then begin k1 := k1/2; end; g := g-k1*y[j]; end; y[i] := 2*g/K(x,x); end; end; end. |
![]() |
|
|
![]() |