Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

книги / Математическое моделирование кинетики сложных химических реакций. Ч. 1

.pdf
Скачиваний:
5
Добавлен:
12.11.2023
Размер:
1.44 Mб
Скачать

3. Программа решения систем нелинейных алгебраических уравнений методом Ньютона-Рафсона

Program Nyuton-Rafson;

Var s,m,i,j,k,r,n: integer; h,e,l:real;

b,f,x:array [1..100] of real; a:array [0..100,0..100] of real;

Label q,q1;

Procedure FX;

Begin

{ f[1]:=sqr(x[1])+sqr(x[2])-1; f[2]:=x[1]-x[2]+1;}

f[1]:=3*x[2]*x[2]+6*x[1]*x[2]-6*x[1]*x[2]*x[4]- 3*x[3]+

6*x[2]*x[2]*exp(-x[4]); f[2]:=6*x[1]+2*x[1]*x[5]+6*x[2]*x[4]*exp(-x[4])-1; f[3]:=-6*x[2]*exp(-x[4])+6*x[1]*x[4]*exp(-x[4])-

6*x[2]*exp(-2*x[4])-2*x[2]*x[5]; f[4]:=-2*x[3]*x[5]+3*exp(-x[4]); f[5]:=x[1]*x[1]-x[2]*x[2]-x[3]*x[3]-1;

{ f[1]:=3*x[1]+1.008*x[2]+x[1]*x[3]-0.5; f[2]:=2.016*x[1]-0.3*x[2]-2*x[2]*x[3]-0.672; f[3]:=x[1]*x[1]-x[2]*x[2]-1;}

{f[1]:=x[1]+3*ln(x[1])/ln(10)-x[2]*x[2]; f[2]:=2*x[1]*x[1]-x[1]*x[2]-5*x[1]+1;} End;{FX}

BEGIN

Write('Введите число уравнений N= '); Readln(n); Write('Задайте точность решения e= ');Readln(e); Write('Задайте число итераций m='); Readln(m); s:=0;

For i:=1 to n do Begin

Write('x[',i,']='); Readln(x[i]); end;

q: FX;

For i:=1 to n do Write('x',i,'=',x[i]:8:4,' '); Writeln;

For i:=1 to n do

221

Write('f',i,'=',f[i]:7:5,' '); Writeln;

For i:=1 to n do b[i]:=-f[i]; For j:=1 to n do

Begin

l:=x[j]; h:=e*abs(l); x[j]:=l+h;

FX;

For i:=1 to n do a[i,j]:=(f[i]+b[i])/h; x[j]:=l;

end;

s:=s+1;

If s=m+1 THEN begin

Writeln('Число итераций s=m'); goto q1;

end;

For i:=1 to n-1 do For j:=i+1 to n do Begin

a[j,i]:=-a[j,i]/a[i,i]; For k:=i+1 to n do

a[j,k]:=a[j,k]+a[j,i]*a[i,k];

b[j]:=b[j]+a[j,i]*b[i];

end;

f[n]:=b[n]/a[n,n]; For i:=n-1 downto 1 do Begin

h:=b[i];

For j:=i+1 to n do h:=h-f[j]*a[i,j]; f[i]:=h/a[i,i];

end;

r:=0;

For i:=1 to n do begin

x[i]:=x[i]+f[i];

If abs(f[i]/x[i])>e THEN r:=1; end;

If r=1 THEN goto q;

Writeln('Решение системы уравнений');

For i:=1 to n do Writeln('x[',i,']=',x[i]); Writeln('Число итераций s=',s);

q1: readln;

END.

222

Учебное издание

ФЕДОСЕЕВ Анатолий Михайлович, КЕТИКОВ Валентин Николаевич

МАТЕМАТИЧЕСКОЕ МОДЕЛИРОВАНИЕ КИНЕТИКИ СЛОЖНЫХ ХИМИЧЕСКИХ РЕАКЦИЙ

Часть I

Учебное пособие

Редактор и корректор И.А. Мангасарова

Подписано в печать 28.02.11. Формат 60×90/16. Усл. печ. л. 14,0. Тираж 100 экз. Заказ № 33/2011.

Издательство Пермского государственного технического университета.

Адрес: 614990, г. Пермь, Комсомольский пр., 29, к. 113.

Тел. (342) 219-80-33.

223

Соседние файлы в папке книги