ВУЗ:
Составители:
181
ПРИЛОЖЕНИЕ А
Процедура решения системы нелинейных уравнений модифицирован-
ным методом Ньютона-Рафсона
{****************************************************************}
procedure noLineUraw(n: integer; e: real; intX: massiv2; var f,x: mas-
siv);
{****************************************************************}
{ Решение системы нелинейных уравнений
модифицированным методом Ньютона-Рафсона
Система уравнений вводится в процедуре SystemUraw в виде
F[1] = f(x1,x2,...xn)=0
F[2] = f(x1,x2,...xn)=0
....
F[N] = f(x1,x2,...xn)=0
Процедура noLineUraw использует при своей работе
процедуру обращения матрицы Rmatr
N - число уравнений
E - относительная погрешность
X[1..N] - массив значений X(i) (решение системы уравнений)
F[1..N] - массив значений F(i) (значения функций-уравнений для набора
X(i))
intX[1..N,1..2] - матрица интервалов варьирования для каждой переменной
X(i)
{****************************************************************}
label nachalo, fin;
Type matrix = array[1..20,1..20] of real;
var
b,dX,Xopt,Xold : massiv;
a : matrix;
i,j,iteration,m : integer;
xps,h,r,eps,sb : real;
SummaSqr,MinSqrF: real;
xmin,ssF : real;
{****************************************************************}
{************ Начало процедуры BoundaryConditions ***************}
PROCEDURE BoundaryConditions;
var i : integer;
BEGIN
(*проверка граничных условии*)
(*1*) Randomize;
for i:=1 to n do
begin
if (x[i]<intx[i,1]) then x[i]:=intx[i,1]+(3+Random(10))*e;
if (x[i]>intx[i,2]) then x[i]:=intx[i,2]-(3+Random(10))*e;
end;
(*2*)
END;
{************ Конец процедуры BoundaryConditions ****************}
procedure MinSqrFunc;
var i: integer;
begin
SummaSqr:=0;
for i:=1 to n do SummaSqr:=SummaSqr+f[i]*f[i];
if SummaSqr<MinSqrF then
begin
MinSqrF:=SummaSqr;
Created with novaPDF Printer (www.novaPDF.com)
Страницы
- « первая
- ‹ предыдущая
- …
- 179
- 180
- 181
- 182
- 183
- …
- следующая ›
- последняя »