Схема алгоритма приведена на рисунке 23. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Схема алгоритма приведена на рисунке 23.



Пример. Вычислить собственные значения и собственные вектора матрицы

 

|2 2 –2|

|2 5 –4|

|-2 –4 5|

Текст программы:

 

procedure Fadeev(n:integer;a:tmatr;var q:tvector);

var Aa,E,B:tmatr;

i,j:integer;

begin

for i:=1 to n do

for j:=1 to n do if i<>j then e[i,j]:=0 else e[i,j]:=1;

Aa:=a;

q[1]:=spA(n,Aa);

MulChislo(n,q[1],e,b);

MatrVich(n,Aa,b,b);

for i:=2 to n do

begin

MulMatr(n,a,b,Aa);

q[i]:=-spA(n,Aa)/i;

MulChislo(n,q[i],e,b);

MatrVich(n,Aa,b,b);

end;

end;

 

Вычисления по программе привели к следующим результатам:

Собственные числа Собственные вектора

.10000Е+01 -.94281Е+00.23570Е+00 -.23570Е+00

.10000Е+02 -.33333Е+00 -.66667Е+00.66667Е+00

.10000Е+01.00000Е+00 -.70711Е+00 -.70711Е+00

 

 

 

Рисунок 23 - Схема алгоритма метода Фадеева

 

Варианты заданий для нахождения собственных значений и собственных векторов матрицы приведены в таблице 5.

 

Метод Крылова

 

Входные параметры: n—целое положительное число, равное порядку n системы; а — массив из n х n действительных чисел, содержащий входную матрицу.

Выходные параметры: q—массив из n действительных чисел при выходе из программы содержит решение системы.

Схема алгоритма приведена на рисунке 24.

Пример. Вычислить собственные значения и собственные вектора матрицы

 

|2 2 –2|

|2 5 –4|

|-2 –4 5|

 

Текст программы:

 

PROCEDURE Krylov(Nn:integer; A: TMatr;Var Y:TVector);

Label 2;

Var I,J,K,T,Nn1:Integer;

yy:TVector;

aa:TMatr;

s,c,q,p,h,d,u,

m,v,f,w,yyy,z,

l,r,x,aaa,b: Real;

Begin

form3.Caption:='Крылов';

Nn1:=Nn;

For I:=1 To Nn Do Yy[i]:=I*Trunc(10*ranDom);

2:For I:=Nn Downto 1 Do Begin

Y:=Yy;

For J:=1 To Nn Do Aa[j,i]:=Yy[j];

For J:=1 To Nn Do Begin

S:=0;

For K:=1 To Nn Do S:=S+A[j,k]*Y[k];

Yy[j]:=S; End;

End;

For I:=1 To Nn Do Y[i]:=-Yy[i];

Simq(Nn1,Aa,Y,K);

If(K=1) Then Begin

For I:=1 To Nn Do Yy[i]:=I*I*trunc(7*ranDom);

Goto 2;

End;

End;

 

 

 

Рисунок 24 - Схема алгоритма метода Крылова

 

Вычисления по программе привели к следующим результатам:

Собственные числа Собственные вектора

.10000Е+01 -.94281Е+00.23570Е+00 -.23570Е+00

.10000Е+02 -.33333Е+00 -.66667Е+00.66667Е+00

.10000Е+01.00000Е+00 -.70711Е+00 -.70711Е+00

 

Варианты заданий для нахождения собственных значений и собственных векторов матрицы приведены в таблице 5. Тема лабораторной работы №5 для контроля знаний проиллюстрирована контрольно – обучающей программой.


Лабораторная работа № 6

Решение проблемы собственных значений и собственных векторов

Итерационные методы

Метод QR-разложения

 

Входные параметры: nn—целое положительное число, равное порядку n системы; а — массив из n х n действительных чисел, содержащий входную матрицу.

Выходные параметры: R_1, R_2—массив из n действительных чисел при выходе из программы содержит решение системы.

Пример. Вычислить собственные значения и собственные вектора матрицы

 

|2 2 –2|

|2 5 –4|

|-2 –4 5|

 

Текст программы:

 

PROCEDURE Qr (Var Nn:Integer;Var A:Tmatr;Var R_1:Tvector;Var R_2:Tvector);;

Var

I,J,K,L,M,Na,Its: Integer;

I1,M1,N1,L1,N: Integer;

M3,U1,U11,U2: Real;

Q,P,R,S,T,U,X,Y,Z,W: Real;

Aa: tMatr;

r1,r2:tvector;

Label NexTw,NexTit,Cont_1,Cont_2,Cont_3;

Label Onew,TwOw,Fin;

Begin

Aa:=A; N:=Nn;

for i:=0 to Nn do

begin r1[i]:=0; r2[i]:=0; end;

T:=0.0;

NexTw:

If (N=0) Then Goto Fin;

Its:=0; Na:=N-1; M3:=1.0e-11;

NexTit:

For L:=N DownTo 2 Do Begin

U:=Abs(Aa[l,l-1]); U1:=M3*(Abs(Aa[l-1,l-1])+Abs(Aa[l,l]));

If (U<=U1) Then Goto Cont_1;

End;

L:=1; Cont_1:

X:=Aa[n,n]; If(L=N) Then Goto Onew;

Y:=Aa[na,na]; W:=Aa[n,na]*Aa[na,n];

If(L=Na) Then Goto Twow; If(Its=30) Then Goto Fin;

If((Its=10)And(Its=20)) Then

Begin

T:=T+X;

For I:=1 To N Do Begin

Aa[i,i]:=Aa[i,i]-X; End;{}

S:=Abs(Aa[n,na])+Abs(Aa[na,n-2]);

X:=0.75*S; Y:=0.75*S; W:=-0.4375*S*S;

End;

Its:=Its+1;

For M:=N-2 Downto L Do Begin

Z:=Aa[m,m]; R:=X-Z;

S:=Y-Z; P:=(R*S-W)/Aa[m+1,m]+Aa[m,m+1];

Q:=Aa[m+1,m+1]-Z-R-S; R:=Aa[m+2,m+1];

S:=Abs(P)+Abs(Q)+Abs(R);

P:=P/S; Q:=Q/S; R:=R/S;

If(M=L) Then Goto Cont_2;

U11:=Abs(Aa[m,m-1])*(Abs(Q)+Abs(R));

U2:=M3*Abs(P)*(Abs(Aa[m-1,m-1])+Abs(Z)+Abs(Aa[m+1,m+1]));

If(U11<=U2) Then Goto Cont_2;

End;

Cont_2: For I:=M+2 To N Do Begin Aa[i,i-2]:=0.0; End;

For I:=M+3 To N Do Begin Aa[i,i-3]:=0.0; End;

For K:=M To Na Do Begin

If (K<>M) Then Begin;

P:=Aa[k,k-1]; Q:=Aa[k+1,k-1]; If(K<>Na) Then R:=Aa[k+2,k-1]

Else R:=0.0;

X:=Abs(P)+Abs(Q)+Abs(R);

If(X=0.0) Then Goto Cont_3;

P:=P/X; Q:=Q/X; R:=R/X;

End;

S:=Sqrt(P*P+Q*Q+R*R);

If(P<0.0) Then S:=-S;

If(K<>M) Then Aa[k,k-1]:=-S*X

Else If(L<>M) Then Aa[k,k-1]:=-Aa[k,k-1];

P:=P+S; X:=P/S; Y:=Q/S; Z:=R/S;Q:=Q/P; R:=R/P;

For J:=K To N Do Begin

P:=Aa[k,j]+Q*Aa[k+1,j];

If (K<>Na) Then Begin

P:=P+R*Aa[k+2,j]; Aa[k+2,j]:=Aa[k+2,j]-P*Z; End;

Aa[k+1,j]:=Aa[k+1,j]-P*Y; Aa[k,j]:=Aa[k,j]-P*X;

End;

If((K+3)<N) Then J:=K+3

Else J:=N;

For I:=L To J Do Begin

P:=X*Aa[i,k]+Y*Aa[i,k+1]; If(K<>Na) Then Begin;

P:=P+Z*Aa[i,k+2]; Aa[i,k+2]:=Aa[i,k+2]-P*R; End;

Aa[i,k+1]:=Aa[i,k+1]-P*Q; Aa[i,k]:=Aa[i,k]-P;

End;

Cont_3: End; Goto NexTit; Onew:

R1[n]:=X+T; {R1-ўҐй} R2[n]:=0.0; {Cnt[n]:=its;} N:=Na;

Goto Nextw; Twow:

P:=(Y-X)/2.0; Q:=P*P+W; Y:=Sqrt(Abs(Q));

{Cnt[n]:=-its; Cnt[na]:=its;} X:=X+T;

If(Q>0.0) Then Begin

If(P<0.0) Then Y:=-1.0*Y; Y:=P+Y; R1[na]:=X+Y;

R1[n]:=X-W/Y; R2[na]:=0.0; R2[n]:=0.0; End

Else Begin R1[na]:=X+P; R1[n]:=X+P; R2[na]:=Y; R2[n]:=-1.0*Y;End;

N:=N-2; Goto Nextw; Fin: r_1:=r1; r_2:=r2; End;

 

Вычисления по программе привели к следующим результатам:

Собственные числа Собственные вектора

.10000Е+01 -.94281Е+00.23570Е+00 -.23570Е+00

.10000Е+02 -.33333Е+00 -.66667Е+00.66667Е+00

.10000Е+01.00000Е+00 -.70711Е+00 -.70711Е+00

 

Варианты заданий для нахождения собственных значений и собственных векторов матрицы приведены в таблице 5.

 

Метод обратных итераций

 

Входные параметры: nn—целое положительное число, равное порядку n системы; Aа — массив из n х n действительных чисел, содержащий входную матрицу, eps – малое число для условия окончания итерационного процесса.

Выходные параметры: V0,V1—массив из n действительных чисел при выходе из программы содержит решение системы, it – количество итераций.

Пример. Вычислить собственные значения и собственные вектора матрицы

 

|2 2 –2|

|2 5 –4|

|-2 –4 5|

 

Текст программы:

 

PROCEDURE IObrIter(Nn:integer;Aa:tmatr;lam,lam1,eps:real;var V0,V1:tvector;var it:byte);

var x,x1:tvector; c,c1:extended; nev:real; i,j,k,p:integer; i1:byte; aa1:tmatr; rv,rv1:tvector;

begin

it:=1;

for i:=1 to 2*nn do

for j:=1 to 2*nn do

begin

if (i<=Nn)and(j<=Nn)then

if i=j then aa1[i,i]:=aa[i,i]-lam else aa1[i,j]:=aa[i,j];

if (i<=Nn)and(j>Nn) then if j=Nn+i then aa1[i,j]:=-lam1 else aa1[i,j]:=0;

if (i>Nn)and(j<=Nn)then if i=j+Nn then aa1[i,j]:=-lam1 else aa1[i,j]:=0;

if (i>Nn)and(j>Nn)then if i=j then aa1[i,j]:=aa[i-nn,j-nn]-lam

else aa1[i,j]:=aa[i-nn,j-nn];

end;

for i:=1 to Nn do rv1[i]:=1;

for i:=Nn+1 to 2*nn do rv1[i]:=0;

repeat rv:=rv1; rv1:=rv;

simq(2*Nn,AA1,rv1,p);{ c:=rv1[1]; c1:=rv1[nn+1];

for i1:=1 to Nn do

begin

if rv1[i1]<c then c:=rv1[i1]; if rv1[i1+nn]<c1 then c1:=rv1[i1+nn];

end;}

for i1:=1 to Nn do

begin

rv1[i1,1]:=rv1[i1,1]/c; rv1[i1,2]:=rv1[i1,2]/c1;

end;}

c:=0; c1:=0;

for i:=1 to Nn do

begin

c:=c+sqr(rv1[i]); c1:=c1+sqr(rv1[i+nn]);

end;

c:=sqrt(c); c1:=sqrt(c1); nev:=0;

for i:=1 to Nn do

begin

rv1[i]:=rv1[i]/c; rv1[i+nn]:=rv1[i+nn]/c1;

nev:=nev+(sqr(rv[i])+sqr(rv[i+nn])-sqr(rv1[i])-sqr(rv1[i+nn]));

end;

nev:=sqrt(nev);

inc(it);

until (nev<eps)or (it>15);

for i:=1 to Nn do

begin v0[i]:=rv1[i]; v1[i]:=rv1[i+nn];

end;

end;

 

Вычисления по программе привели к следующим результатам:

Собственные числа Собственные вектора

.10000Е+01 -.94281Е+00.23570Е+00 -.23570Е+00

.10000Е+02 -.33333Е+00 -.66667Е+00.66667Е+00

.10000Е+01.00000Е+00 -.70711Е+00 -.70711Е+00

 

Варианты заданий

 

Таблица 5

Вариант   Матрица A  
   
  .15446E + 00 .33012E + 00 –.54037E + 00 .58495Е + 00 -.43024E + 00 -.94878E+00 .15346E + 01 -.16812Е + 01 .55900E-01 .12327E + 00.19939E+00 -.21843Е + 00 .24055E + 00 .51413E + 00 –.84158E+00 .91101Е + 00
  .10194E + 01.13770E+00 .13661E+01 .19687Е+00 .51685E + 01 .74484E + 00 -.22275E + 01 -.30089E+00
Продолжение таблицы 5
   
  .14613E+00 –.12171E-01 .19598Е+00 -.17401E-01 .74144E+00 .65832E-01 -.31930E+00 .26593E-01
  .37712E + 01 -.43613E + 01.52997E+01 .40591E+01 .48587E + 00 -.59594E+00 .69610E+00 .55464E + 00 19836E + 00 243 З0Е + 00 28419E+00 22644E+00 -.53757E + 00 .62168E + 00 -.75546E+00 -. 57861 E+ 00
  .41585H + 00 .13936E + 01 -.87625E + 00 -.48377E + 01 -.35891E+00 .12212E + 01 -.73761E+00 -.42394E + 01 63151E + 00 21488E + 01 12978E + 01 74592E + 01 .48148E + 00 .16136E+01 -.10145E + 01 -.56012E + 01
  .11107E + 01.33082E+00 -.17127E+00 .29074E+00 .10590E+02 .30755E+01 –.17300E + 01 .27030E+01 79845E + 01 23188E + 01 13043E+01 20379E+01 -.37547E + 01 -.11183Е + 01 .57899E + 00 -.98286E + 00
  .94217E + 01 -.82311E + 01 .10527E + 02.28367E+01 -.20262E+01 .171414 + 01 .22359E + 01 -.59074E+00 20679E + 01 17494E + 01 22819E + 01 60288 E + 00 -.27418E+01 .23953E + 01 .30634E + 01 -.82550E + 00
  .22224Е+00 .17226Е + 01 .10474Е + 02 .54542Е + 01 .20919Е + 00 .12234Е + 01 .74958Е + 01 .38736Е + 01 .26602Е + 00 .15558Е + 01 .95322Е + 01 .49260Е + 01 19367Е+00 .15012Е + 01 .91273Е+01 .47530Е + 01
  .42016Е + 00 .19439Е + 00 - 61729Е+ 01 -.20038Е+00 -16937Е + 02 -.76571Е + 01 .28952Е +01 .78932Е + 01 .10087Е + 02 .45605Е + 01 -.17253Е+ 01 -.47011Е+01 -.28570Е + 01 -13218Е+01 .41974Е + 00 13625Е + 01
  15788Е + 02 -10221Е + 02 .46778Е + 01 -11261Е + 02 -.31013Е + 01 .20256Е + 01 -.88782Е + 00 .22317Е + 01 -.71755Е+01 .46865Е + 01 -.20541Е + 01 .51635E-01 -.71410Е+01 .46230Е + 01 -.21158Е+01 .50935Е + 01
  .41750Е-01 .93292Е-01 -19135Е+02 .89416Е + 01 .72743Е-01 -.69765Е-01 14194Е + 02 -.66866Е + 01 -.20820Е-01 19967Е-01 .40626Е+01 1 9138Е + 01 .27069Е-01 .60487Е-01 -12406Е+02 .57974Е + 01
  .70954Е-03 -.99360Е-04 .37446Е-03 -.35194Е-04 -.35012Е + 01 .22264Е + 01.25177Е+01 -.78859Е + 00 .23236Е+02 14775Е + 02 16709Е + 02 -.52335Е + 01 -16032Е + 00 .22450Е-01 -.84609Е-01 .79521Е-02
  .21121Е+02 -.97494Е + 01.54455Е+01 .92933Е + 01 15882Е+02 -.74096Е + 01.39960Е+01 .70629Е+01 -.32325Е + 00 15081Е + 00 -.81334Е-01 -14376Е + 00 -13430Е+02 .61993Е + 01 -.34626Е+01 -.59092Е+01
Продолжение таблицы 5
   
  .58993Е+00 -.43515Е + 01 .67688Е + 01 -.31085Е + 02 .36004Е-01 -.24076Е+00 .39005Е + 00 -.17198Е+01 -.32946Е + 00 .22030Е + 01 -.35692Е + 01 .15737Е + 02 .27315Е + 00 -.20148Е + 01 .31341Е + 01 -.14393Е+02
  .46329Е + 00 .37616Е + 00 -.42388Е + 00 .28498Е + 00 .23325Е + 02 .19986Е + 02 -.21495Е + 02 .15141Е + 02 .56599Е + 01 .48497Е + 01 -.52159Е + 01 .36742Е + 01 .33563Е + 01 .27251Е+01 -.30708Е + 01 .20646Е + 01
  .23797Е + 02 -.72308Е + 01 -.74144Е + 01 -.96619Е + 00 -.96479Е + 01 .28581Е + 01 .30008Е + 01 .38190Е + 00 .25078Е+02 -.74291Е + 01 -.78002Е + 01 -.99269Е + 00 -.20370Е + 02 .61895Е + 01 .63466Е + 01 .82706Е + 00
  .33057Е + 01 -11653Е + 02 .27268Е + 02 .32367Е + 02 10035Е + 01 -.31905Е + 01 .76123Е + 01 .88617Е + 01 .54364Е + 00 -17284Е + 01 .41118Е + 01 .48006Е + 01 .99381Е + 00 -.35034Е + 01 .81975Е + 01 .97306Е + 01
  .16823Е + 01 19161Е + 01 .7З100Е - 01 -.28993Е+01 -.12521Е + 02 -14239Е + 02 -.90481Е + 00.21545Е + 02 .17330Е + 02 19707Е + 02 12523Е + 01 -.29821Е + 02 .58778Е +01 .66946Е + 01 .25541Е + 00 -10130Е + 02
  .23026Е+02 -.34268Е + 01 .25324Е + 01 -.24584Е + 01 -.28865Е + 02 .44373Е + 01 -.30771Е + 01 .31833Е + 01 -.27154Е + 02 .41743Е + 01 -.28947Е + 01 .29947Е + 01 -.26187Е + 02 .38973Е + 01 -.28802Е + 01 .27959Е + 01
  .93047Е + 01 -.20747Е + 02 -.50813Е + 02 .23840Е + 01 -.96771Е + 00 .25205Е + 01.60245Е4-01 -.28963Е + 00 .79337Е + 00 -.20664Е + 01 -.49391Е + 01 .23745Е + 00 14105Е + 01 -.31451Е + 01 -.77027Е + 01 .36139Е + 00
  .29497Е+01 .63919Е+01 .53881Е + 01 -.87224Е + 01 -18646Е + 02 -15501Е+02 -13989Е+02 -.29905Е + 02 -. 24861 Е + 02 .65990Е + 01 14300Е+02 12054Е + 02
  .18899Е + 02 -15438Е + 00 11694Е + 00 15299Е + 00 .47944Е + 02 -.43842Е + 00 -.45833Е-01 .43447Е + 00 -.21890Е + 02 .20017Е + 00 .20926Е-01 -19837Е + 00 -.28868Е + 02 .23582Е + 00 -17863Е+00 -.23370Е + 00
  18736Е+02 -.29757Е + 02 .31857Е + 02 -.45869Е + 02 -.80167Е-01 .57914Е-01 -12683Е + 00 .89269Е-01 -.25998Е+00 18781Е + 00 -.41130Е + 00 .28950Е + 00 16584Е + 00 -.26340Е + 00 .28199Е + 00 -. 40601 Е + 00
  .36164Е + 01 .74821Е + 01 -17309Е + 02 10248Е + 02 .22156Е + 02 -.50828Е + 02 -17581Е + 01 -.38041Е + 01.87201Е+01 .57433Е + 01 11883Е + 02 -.27490Е + 02
Продолжение таблицы 5
   
  .38860Е + 01 .11507Е + 02 -.19742Е + 01 .61716Е +01
  .12738Е +02 16202Е + 01 15111Е + 01 .81142Е + 00 26061Е+ 01 .35161Е + 00 .30380Е + 00 -17609Е + 00 .63995Е + 02 .86341Е+01.74599Е+01 .43244 + 01 .-27195Е +02 -.34589Е+01 -.32261Е + 01 -17323Е + 01
  .30846Е + 02 -.36344Е + 02 17157Е + 02 .53507Е + 02 -.40806Е + 01 .49263Е + 01 -.20743Е + 01 -.72527Е + 01 -.36208Е + 00 .43712Е + 00 -18406Е + 00 -.64354Е + 00 -.41187Е + 01 .48529Е + 01 -.22910Е + 01 -.71445Е + 01
    .27346Е + 01 .91361Е + 01 .12961Е + 02 -.28402Е + 02 -.11110Е + 01 -.35849Е + 01 -.51725Е + 01.11145Е+02 .50222Е + 01 .16206Е + 02 .23383Е + 02 -.50380Е + 02 .32234Е + 01 .10769Е + 02 .15278Е + 02 -.33479Е + 02
  27 .63868Е + 01 .18697Е + 01 -.17156Е + 01 .75164Е + 00 -.67524Е+02 -.18932Е + 02.18209Е+02 -.76109Е+01 -.24412Е+02 -.68445Е+01 .65832Е + 01 -.27516Е + 01 -.20908Е+02 -.61208Е + 01 .56162Е+01 -.24606Е+01
    .43510Е + 02 -.38692Е + 02 -.48615Е+02 -.17455Е + 02 .59136Е+01 -.50907Е + 01 -.65295Е + 01 -.22966Е + 01 -.11467Е + 02 .98719Е4-01 .12662Е + 02 .44536Е + 01 -.12245Е+02 .10889Е + 02 .13682Е+02 .49125Е+01
    10921Е + 01 .74301Е + 01 .26781Е+01 .42614Е+02 -.12118Е + 01 -.72230Е + 01 -.07865Е + 01 -.41427Е+02 -.83855Е+00 -.49981Е+01 -.49087Е+02 -.28666Е+02 .96881Е+00 .65916Е + 01 .76564Е + 01 .37805Е +02
    .17965Е+01 .78083Е + 00 .26239Е + 00 -.82565Е + 00 .49866Е + 02.22034Е+02 .60831Е + 01 -.23299Е + 02 -.55218Е+02 -.24399Е + 02 -.67359Е + 01 .25799Е + 02 -.11507Е + 02 -.50015Е + 01 -16807Е + 01 .52886Е + 01
               

 

Тема лабораторной работы №6 для контроля знаний проиллюстрирована контрольно – обучающей программой.

 


Лабораторная работа № 7

Приближение функций

 

Интерполяционный полином Лагранжа

 

Входные параметры: N - число узлов интерполяции; y - массив размерности n, содержащий значения функции в узлах интерполяции; x-массив размерности n, содержащий значения узлов интерполяции; q-точка в которой вычисляем значения функции интерполяции.

Выходные параметры: приближенное значение функции в точке q; графическая интерпретация результата.

Схема алгоритма приведена на рисунке 25.

Задание. Аппроксимировать табличную функцию с помощью интерполяционного полинома Лагранжа.

 

xi yi xi yi
  2,05   1,88
  1,94   1,71
  1,92   1,60
  1,87   1,56
  1,77   1,40

 

Текст программы:

 

function Lagran(n:integer;x,y:TVector;q:real):real;

var i,j:integer; l,s:real;

begin

L:=0;

for i:=1 to n do

begin s:=1;

for j:=1 to N do

if j<>i then

s:=s*(q-x[j])/(x[i]-x[j]);

L:=L+y[i]*s;

end;

Lagran:=l

end

 

Вычисления по программе привели к следующим результатам:

 

X=1 Y=2,05

X=1,5 Y=2,38

X=2 Y=1,94

X=2,5 Y=1,83

X=3 Y=1,92

X=3,5 Y=1,94

X=4 Y=1,87

X=4,5 Y=1,78

X=5 Y=1,77

X=5,5 Y=1,83

X=6 Y=1,88

X=6,5 Y=1,83

X=7 Y=1,71

X=7,5 Y=1,59

X=8 Y=1,6

X=8,5 Y=1,67

X=9 Y=1,56

X=9,5 Y=1,09

X=10 Y=1,4

 

 

 

Рисунок 25 - Схема алгоритма приближения функций формулой Лагранжа

 

Варианты заданий для решения задачи приближения функций приведены в таблице 6.

 

Аппроксимация функций с помощью кубического сплайна

 

Входные параметры: N - число узлов интерполяции; y - массив размерности n, содержащий значения функции в узлах интерполяции; x-массив размерности n, содержащий значения узлов интерполяции; q-точка в которой вычисляем значения функции интерполяции.

Выходные параметры: приближенное значение функции в точке q; графическая интерпретация результата.

Схема алгоритма приведена на рисунке 26.

Задание. Аппроксимировать табличную функцию с помощью кубического сплайна.

 

xi yi xi yi
  2,05   1,88
  1,94   1,71
  1,92   1,60
  1,87   1,56
  1,77   1,40

 

Текст программы:

 

Procedure Spline3(N:integer;X,Y:mas;S0,SN:real;Var A,B,C,D:mas);

Var F: Mas; H2,H3,p: real; i,j: integer;

Begin

H2:=X[2]-X[1];

H3:=X[3]-X[2];

A[1]:=(2*(H2+H3))/H3;

f[1]:=(6/h3)*(((y[3]-y[2])/h3)-((y[2]-y[1])/h2))-(h2*s0)/h3;

For i:=4 to n-1 do

begin

h2:=x[i-1]-x[i-2]; h3:=x[i]-x[i-1];

a[i-2]:=(2/h3)*(h2+h3); b[i-2]:=h2/h3;

f[i-2]:=(6/h3)*(((y[i]-y[i-1])/h3-((y[i-1]-y[i-2])/h2)));

end;

h2:=x[n-1]-x[n-2]; h3:=x[n]-x[n-1];

p:=2*(h2+h3); b[1]:=h2/p;

f[n-2]:=(6/p)*(((y[n]-y[n-1])/h3)-((y[n-1]-y[n-2])/h2))-(h3*sn)/p;

d[1]:=1/a[1]; c[1]:=f[1];

For i:=2 to n-3 do

begin

d[i]:=1/(a[i]-b[i]*d[i-1]); c[i]:=f[i]-b[i]*d[i-1]*c[i-1];

end;

d[n-2]:=(f[n-2]-b[1]*d[n-3]*c[n-3])/(1-b[1]*d[n-3]);

For i:=n-3 downto 1 do

d[i]:=d[i]*(c[i]-d[i+1]);

c[1]:=s0; c[n]:=sn;

For i:=2 to n-1 do c[i]:=d[i-1];

For i:=1 to n do

begin

a[i]:=0; b[i]:=0; d[i]:=0; end;

For i:=2 to n do

begin

h2:=x[i]-x[i-1]; d[i]:=(c[i]-c[i-1])/h2;

b[i]:=h2*c[i]/2-(Sqr(h2))*d[i]/6+(y[i]-y[i-1])/h2; a[i]:=y[i];

end; end;

Вычисления по программе привели к следующим результатам:

 

X=1 Y=2,21

X=1,5 Y=2,06

X=2 Y=1,94

X=2,5 Y=2,00

X=3 Y=1,92

X=3,5 Y=1,99

X=4 Y=1,87

X=4,5 Y=1,88

X=5 Y=1,77

X=5,5 Y=1,91

X=6 Y=1,88

X=6,5 Y=1,90

X=7 Y=1,71

X=7,5 Y=1,71

X=8 Y=1,6

X=8,5 Y=1,66

X=9 Y=1,56

X=9,5 Y=1,57

X=10 Y=1,4

 

 

 

Рисунок 26 - Схема алгоритма приближения функций с помощью сплайнов

Варианты заданий для решения задачи приближения функций приведены в таблице 6.

 

Приближение формулами Ньютона

 

Входные параметры: N - число узлов интерполяции; y - массив размерности n, содержащий значения функции в узлах интерполяции; x-массив размерности n, содержащий значения узлов интерполяции; q-точка в которой вычисляем значения функции интерполяции.

Выходные параметры: приближенное значение функции в точке q; графическая интерпретация результата.

Схема алгоритма приведена на рисунке 27.

Задание. Аппроксимировать табличную функцию с помощью формул Ньютона.

 

xi yi xi yi
  2,05   1,88
  1,94   1,71
  1,92   1,60
  1,87   1,56
  1,77   1,40

 

Текст программы:

 

function PribNew(n:integer;a,b:TVector;x:Real):real;

function GetRazdRazn(k,l:integer;m:TMatr):real;

begin

GetRazdRazn:=m[k,l-k+1];

end;

var i,j:integer; s,p:real; M:tmatr;

begin

TabRazdRazn(n,a,b,M);

S:=b[1];

for i:=1 to N-1 do

begin

P:=1;

for j:=1 to i do

P:=P*(x-a[j]);

s:=s+P*GetRazdRazn(1,i+1,m);

end;

PribNew:=s;

end;

 

Вычисления по программе привели к следующим результатам:

 

X=1 Y=2,05

X=1,5 Y=2,38

X=2 Y=1,94

X=2,5 Y=1,83

X=3 Y=1,92

X=3,5 Y=1,94

X=4 Y=1,87

X=4,5 Y=1,78

X=5 Y=1,77

X=5,5 Y=1,83

X=6 Y=1,88

X=6,5 Y=1,83

X=7 Y=1,71

X=7,5 Y=1,59

X=8 Y=1,6

X=8,5 Y=1,67

X=9 Y=1,56

X=9,5 Y=1,09

X=10 Y=1,4

 

 

Рисунок 27 - Схема алгоритма приближения функций формулами Ньютона

 

Варианты заданий для решения задачи приближения функций приведены в таблице 6.

 

Аппроксимация функций методом наименьших квадратов.

 

Входные параметры: N - число узлов интерполяции; y - массив размерности n, содержащий значения функции в узлах интерполяции; x-массив размерности n, содержащий значения узлов интерполяции; q-точка в которой вычисляем значения функции интерполяции.

Выходные параметры: приближенное значение функции в точке q; графическая интерпретация результата.

 

Схема алгоритма приведена на рисунке 28.

Задание. Аппроксимировать табличную функцию многочленом второй степени методом наименьших квадратов.

 

xi yi xi yi
  2,05   1,88
  1,94   1,71
  1,92   1,60
  1,87   1,56
  1,77   1,40

 

Текст программы:

 

function Apr_Kv(n:integer;x,y:TVector;q:real):real;

var i,j:integer;

a:TMatr;

b,c:TVector;

s:real;

begin

a[1,1]:=N;

s:=0;

for i:=1 to N do

s:=s+x[i];

a[1,2]:=s;

a[2,1]:=s;

s:=0;

for i:=1 to N do

s:=s+x[i]*x[i];

a[1,3]:=s;

a[2,2]:=s;

a[3,1]:=s;

s:=0;

for i:=1 to N do

s:=s+x[i]*x[i]*x[i];

a[2,3]:=s;

a[3,2]:=s;

s:=0;

for i:=1 to N do

s:=s+x[i]*x[i]*x[i]*X[i];

a[3,3]:=s;

s:=0;

for i:=1to N do s:=s+y[i];

b[1]:=s;

s:=0;

for i:=1 to N do s:=s+y[i]*x[i];

b[2]:=s;

s:=0;

for i:=1 to N do s:=s+y[i]*x[i]*x[i];

b[3]:=s;

j:=N;

N:=3;

LinSys(n,a,b,c);

Apr_kv:=c[1]+c[2]*q+c[3]*q*q;

N:=j;

for i:=0 to N-1 do

begin a:=apr_kv(x,y,i/10);

end;

 

Вычисления по программе привели к следующим результатам:

 

A=-0,004 B=-0,0132 C=2,0147

X=1 Y=2,00

X=1,5 Y=1,99

X=2 Y=1,97

X=2,5 Y=1,95

X=3 Y=1,93

X=3,5 Y=1,91

X=4 Y=1,89

X=4,5 Y=1,86

X=5 Y=1,83

X=5,5 Y=1,80

X=6 Y=1,77

X=6,5 Y=1,73

X=7 Y=1,70

X=7,5 Y=1,66

X=8 Y=1,62

X=8,5 Y=1,57

X=9 Y=1,53

X=9,5 Y=1,48

X=10 Y=1,43

 

 

Рисунок 28 - Схема алгоритма аппроксимации функций методом наименьших квадратов

Варианты заданий. Значения xi=i´0,1; i=1,2…20 одинаковые для всех вариантов

 

Таблица 6

      Значения Yi=y(Xi)      
  Вариант 1 Вариант 2 Вариант 3 Вариант 4 Вариант 5 Вариант 6  
               
  2,05 2,09 2,02 1,99 2,23 2,07  
  1,94 2,05 1,98 2,03 2,29 2,17  
  1,92 1,87 2,19 2,18 1,67 1,65 2,20 2,39 2,27 2,62 2,21 2,31  
  1,77 1,88 2,17 2,27 1,57 1,42 2,19 2,61 2,72 2,82 2,10 2,09  
  1,71 2,58 1,37 2,35 3,13 2,12  
  1,60 2,73 1,07 2,60 3,49 1,63  
  1,56 2,82 0,85 2,55 3,82 1,78  
  1,40 3,04 0,48 2,49 3,95 1,52  
  1,50 3,03 0,35 2,50 4,22 1,16  
  1,26 3,45 -0,30 2,52 4,48 1,07  
  0,99 3,62 -0,61 2,44 5,06 0,85  
  0,97 3,85 -1,20 2,35 5,50 0,56  
  0,91 4,19 -1,39 2,26 5,68 0,10  
  0,71 4,45 -1,76 2,19 6,19 -0,25  
  0,43 4,89 -2,28 2,24 6,42 -0,65  
  0,54 5,06 -2,81 2,34 7,04 -1,06  
  0,19 5,63 -3,57 1,96 7,57 -1,66  
  0,01 5,91 -4,06 2,19 8,10 -2,01  
      Значения Yi=y(Xi)      
  Вариант 7 Вариант 8 Вариант 9 Вариант 10 Вариант 11 Вариант12  
  2,18 -0,10 -0,16 2,09 2,15 0,10  
  2,43 -0,21 0,01 2,31 2,41 -0,01  
  2,40 0,01 0,10 2,72 2,58 -0,19  
  2,43 0,05 0,16 2,77 2,84 -0,11  
  2,65 -0,13 0,05 2,78 3,28 -0,31  
  2,75 -0,23 0,35 2,97 3,46 -0,78  
  2,67 -0,21 0,19 3,00 4,02 -0,64  
  2,66 -0,43 0,50 3,51 4,11 -0,85  
  2,63 -0,57 0,74 3,43 4,61 -1,18  
  2,75 -0,44 1,03 3,58 5,03 -1,39  
  2,41 -0,44 1,06 3,58 5,34 -1,79  
  2,24 -0,83 1,49 3,54 5,86 -2,02  
  2,12 -0,78 1,79 3,82 6,33 -2,48  
  1,74 -0,81 2,03 3,90 6,81 -2,93  
Продолжение таблицы 6  
               
  1,57 -1,06 2,22 3,77 7,21 -3,26  
  1,17 -1,41 2,50 3,81 7,67 -3,91  
  0,96 -1,40 2,88 4,00 8,23 -4,41  
  0,63 -1,70 3,21 3,97 8,68 -4,91  
  0,25 -1,96 3,63 4,08 9,35 -5,30  
  -0,01 -1,91 3,90 4,08 9,93 -6,00  
      Значения Yi=y(Xi)      
  Вариант 13 Вариант 14 Вариант 15 Вариант 16 Вариант 17 Вариант 18  
  0,17 0,07 0,17 0,05 0,12 0,80 0,29 0,52 0,77 0,93 0,04 0,47 0,78 1,01 1,19 0,08 0,14 0,37 0,36 0,44 -0,02 0,44 0,51 0,67 0,69 0,14 0,23 0,44 0,54 0,72  
  0,00 1,20 1,60 0,48 1,04 3,76  
  0,01 1,20 1,93 0,27 1,1 0,37  
  -0,05 1,35 2,22 0,39 1,3 0,64  
  -0,21 1,39 2,50 0,50 1,7    
  -0,50 1,48 3,01 0,48 2,0 3,44  
  -0,50 1,52 3,22 0,69 2,1 3,41  
  -0,86 1,71 3,71 0,50 2,4 0,30  
  -1,24 1,72 4,23 0,31 2,90 -0,0  
  -1,47 1,87 4,78 0,37 3,50 -0,03  
  -1,79 1,86 5,27 0,43 3,99 -0,47  
  -2,25 1,89 5,75 0,33 4,06 -0,68  
  -2,55 2,04 6,16 0,31 4,54 -0,93  
  -3,18 1,73 6,76 0,09 4,99 -1,28  
  -3,60 2,04 7,30 0,08 5,36 -1,53  
  -3,93 2,03 8,00 0,03 5,99 -1,93  
      Значения Yi=y(Xi)    
  Вариант 19 Вариант 20 Вариант 21 Вариант 22 Вариант 23 Вариант 24
  -1,86 - 1,65 -1,89 -1,84 -1,92 -1,90
  -1,95 - 2,00 -2,07 -1,98 -1,60 -1,80
  -2,12 - 1,87 -2,30 -1,72 -1,57 -1,82
  -2,06 - 1,89 -2,26 - 1,58 -1,41 -1,86
  -2,15 - 1,75 -2,34 - 1,69 -1,36 -1,83
  -2,00 - 1,59 -2,66 - 1,59 -0,97 -2,00
  -2,12 -1,44 -2,88 -1,58 -0,59 -2,01
  -2,31 -1,61 -2,85 -1,64 -0,71 -2,05
  -2,29 - 1,00 -3,16 - 1,55 -0,15 -2,46
  -2,57 - 1,17 -3,49 - 1,35 0,01 -2,68
  -2,56 -0,87 -3,88 - 1,33 0,22 -2,85
  -2,86 -0,47 -4,22 - 1,47 0,63 -2,98
Продолжение таблицы 6
             
  -2,85 -0,33 -4,45 - 1,50 1,07 3,30
  -3,03 -0,00 -4,99 - 2,65 1,42 -3,40
  -3,25 0,34 -5,36 - 1,65 1,68 -3,90
  -3,08 0,49 -5,71 - 1,87 2,49 -4,37
  -3,29 0,81 -6,51 - 1,61 2,57 -4,65
  -3,67 1,37 -6,76 - 1,86 3,09 -5,00
  -3,70 1,72 -7,35 - 1,84 3,40 -5,42
  -3,85 2,03 -8,02 - 1,91 4,00 -6,13
      Значения Yi=y(Xi)    
  Вариант 25 Вариант26 Вариант27 Вариант 28 Вариант 29 Вариант 30
  -1,80 -1,65 -1,88 -,01 -4,13 -3,97
  -1,66 -1,64 -1,69 -,06 -4,11 -4,07
  -1,36 -1,41 -1,52 -,88 -3,87 -4,04
  -1,41 -0,91 -1,55 -3,98 -3,74 -4,30
  -1,13 -0,63 -1,16 -4,36 -3,85 -4,27
  -0,82 -0,34 -1,27 -4,18 -3,71 -4,54
  -0,74 -0,12 -1,23 -4,16 -3,53 -4,79
  -076 0,25 -1,36 -4,51 -3,56 -5,07
  -0,64 0,64 -1,26 -4,53 -3,19 -5,30
  -0,46 0,96 -1,47 -4,38 -3.04 -5,51
  -0,30 1,50 -1,72 -4,76 -2,83 -5,83
  -0,27 1,77 -1,76 -4,66 -2,54 -6,06
  -0,22 2,24 -2,00 -4,82 -2,41 -6,40
  -0,11 2,93 -2,03 -4,77 -1,97 -6,83
  -0,02 3,17 -2,35 -5,12 -1,78 -7,54
  0,11 3,77 -2,46 -5 ,23 -1,53 -7,68
  0,11 4,42 -2,88 -5,40 -1,04 -8,36
  -0,02 4,79 -3,27 -5,84 -0,86 -8,91
  0,03 5,50 -3,68 -5,86 -0,48 -9,39
  0,01 6,01 -3,98 -6,01 0,09 -9,98
                                                                   

 

Тема лабораторной работы №7 для контроля знаний проиллюстрирована контрольно – обучающей программой.


Лабораторная работа №8

Решение задачи Коши

Одношаговые методы

 

Метод Эйлера

 

Входные параметры: a,b – интервал приближения; n – количество точек приближения; Kolfun – порядок системы; x – начальное значение ; y_1 – массив из kolfun чисел, содержащий начальное значение y.

Выходные параметры: y_1 – массив из kolfun чисел, содержащий приближенное решение системы.

Схема алгоритма показана на рисунке 29.

Пример. Решить на отрезке [0,3] с шагом 0,1 задачу Коши

 

 

Текст программы:

 

procedure eiler (a,b:real;n,kolfun:integer;x:real;var y_1:TFunZnach);;

var t:real;

begin

t:=(b-a)/n;

for i:=1 to n do begin

for k:=1 to kolfun do y_1[k]:=y_1[k]+t*f(x,y_1[k]);{F(y1,y2,x)} x:=x+t;

end;

end;

 

Вычисления по программе привели к следующим результатам:

 

x=0 y1=0 y2=0

x=0,1 y1=0 y2=0,1

x=0,2 y1=0,01 y2=0,19

x=0,3 y1=0,02 y2=0,29

x=0,4 y1=0,05 y2=0,38

x=0,5 y1=0,09 y2=0,47

x=0,6 y1=0,14 y2=0,55

x=0,7 y1=0,20 y2=0,62

x=0,8 y1=0,26 y2=0,68

x=0,9 y1=0,33 y2=0,74

x=1 y1=0,40 y2=0,79

x=1,1 y1=0,48 y2=0,84

x=1,2 y1=0,56 y2=0,88

x=1,3 y1=0,65 y2=0,91

x=1,4 y1=0,74 y2=0,94

x=1,5 y1=0,84 y2=0,97

x=1,6 y1=0,94 y2=0,99

x=1,7 y1=1,04 y2=1,01

x=1,8 y1=1,14 y2=1,03

x=1,9 y1=1,24 y2=1,04

x=2 y1=1,35 y2=1,06

x=2,1 y1=1,45 y2=1,07

x=2,2 y1=1,56 y2=1,08

x=2,3 y1=1,67 y2=1,09

x=2,4 y1=1,78 y2=1,10

x=2,5 y1=1,89 y2=1,11

x=2,6 y1=2,00 y2=1,11

x=2,7 y1=2,11 y2=1,12

x=2,8 y1=2,22 y2=1,12

x=2,9 y1=2,34 y2=1,13

 

Рисунок 29 - Схема алгоритма метода Эйлера

 

Варианты заданий для решения задачи Коши методом Эйлера приведены в таблице 7.

 

Метод прогноза и коррекции

 

Входные параметры: a,b – интервал приближения; n – количество точек приближения; Kolfun – порядок системы; x – начальное значение ; y_1 – массив из kolfun чисел, содержащий начальное значение y.

Выходные параметры: y_1 – массив из kolfun чисел, содержащий приближенное решение системы.

Схема алгоритма показана на рисунке 30.

Пример. Решить задачу Коши на отрезке [0,3] с шагом 0,1

 

 

Текст программы:

 

procedure prognoz(a,b:real;n,kolfun:integer;x:real;y_0:TFunZnach;var y_1:TFunZnach);

var h:real;

begin

h:=(b-a)/n;

for i:=1 to n do begin

for k:=1 to kolfun do

y_0[k]:=y_0[k]+h*f(x+0.5*h,y_0[k]+0.5*h*f(y_0[k],x));

x:=x+h; end;

y_1:=y_0;

end;

 

Вычисления по программе привели к следующим результатам:

 

x=0 y1=0 y2=0

x=0,1 y1=0,01 y2=0,1

x=0,2 y1=0,02 y2=0,19

x=0,3 y1=0,05 y2=0,29

x=0,4 y1=0,09 y2=0,38

x=0,5 y1=0,14 y2=0,46

x=0,6 y1=0,20 y2=0,53

x=0,7 y1=0,26 y2=0,60

x=0,8 y1=0,33 y2=0,67

x=0,9 y1=0,40 y2=0,72

x=1 y1=0,48 y2=0,77

x=1,1 y1=0,57 y2=0,81

x=1,2 y1=0,66 y2=0,85

x=1,3 y1=0,75 y2=0,88

x=1,4 y1=0,84 y2=0,91

x=1,5 y1=0,94 y2=0,94

x=1,6 y1=1,04 y2=0,96

x=1,7 y1=1,14 y2=0,98

x=1,8 y1=1,25 y2=1,00

x=1,9 y1=1,35 y2=1,01

x=2 y1=1,46 y2=1,02

x=2,1 y1=1,57 y2=1,03

x=2,2 y1=1,68 y2=1,04

x=2,3 y1=1,79 y2=1,05

x=2,4 y1=1,90 y2=1,06

x=2,5 y1=2,01 y2=1,07

x=2,6 y1=2,13 y2=1,07

x=2,7 y1=2,24 y2=1,08

x=2,8 y1=2,35 y2=1,08

x=2,9 y1=2,47 y2=1,09

 

 

 

Рисунок 30 - Схема алгоритма метода прогноза и коррекции

 

Варианты заданий для решения задачи Коши методом прогноза и коррекции приведены в таблице 7.

 

Метод Рунге-Кутта 4-го порядка

 

Входные параметры: a,b – интервал приближения; n – количество точек приближения; Kolfun – порядок системы; x – начальное значение ; y_1 – массив из kolfun чисел, содержащий начальное значение y.

Выходные параметры: y_1 – массив из kolfun чисел, содержащий приближенное решение системы.

Схема алгоритма показана на рисунке 31.

Пример. Решить задачу Коши на отрезке [0,3] с шагом 0,1

 

 

Текст программы:

 

procedure runge_ku (a,b:real;n,kolfun:integer;x:real;var y_1:TFunZnach);

var Kf:array[1..NumFun,1..4] of real; h:real;

begin

h:=(b-a)/n;

for i:=1 to n do

begin

for k:=1 to kolfun do begin

Kf[k,1]:=h*f(x,y_1[k]);{f(t,y1,y2,x);}

kf[k,2]:=h*f(x+0.5*h,y_1[k]+0.5*kf[k,1]);{f(met,y1+0.5*t*k1[1],y2+0.5*t*k1[1],x+0.5*t);}

kf[k,3]:=h*f(x+0.5*h,y_1[k]+0.5*kf[k,2]);{f_1(met,y1+0.5*t*k1[2],y2+0.5*t*k1[2],x+0.5*t);}

kf[k,4]:=h*f(x+h,y_1[k]+kf[k,3]);{f_1(met,y1+t*k1[2],y2+t*k1[2],x+t);} end;

x:=x+h;

for k:=1 to kolfun do y_1[k]:=y_1[k]+h/6*(kf[k,1]+2*kf[k,2]+2*kf[k,3]+kf[k,4]);

еnd;

end;

 

 

Рисунок 31 - Схема алгоритма метода Рунге-Кутта

 

Вычисления по программе привели к следующим результатам:

 

x=0 y1=0 y2=0

x=0,1 y1=0 y2=0,09

x=0,2 y1=0,01 y2=0,19

x=0,3 y1=0,03 y2=0,29

x=0,4 y1=0,06 y2=0,38

x=0,5 y1=0,10 y2=0,46

x=0,6 y1=0,15 y2=0,53

x=0,7 y1=0,20 y2=0,60

x=0,8 y1=0,27 y2=0,66

x=0,9 y1=0,34 y2=0,72

x=1 y1=0,41 y2=0,77

x=1,1 y1=0,49 y2=0,81

x=1,2 y1=0,58 y2=0,85

x=1,3 y1=0,67 y2=0,88

x=1,4 y1=0,76 y2=0,91

x=1,5 y1=0,86 y2=0,94

x=1,6 y1=0,96 y2=0,96

x=1,7 y1=1,06 y2=0,98

x=1,8 y1=1,17 y2=1,00

x=1,9 y1=1,27 y2=1,02

x=2 y1=1,38 y2=1,03

x=2,1 y1=1,49 y2=1,04

x=2,2 y1=1,60 y2=1,05

x=2,3 y1=1,71 y2=1,06

x=2,4 y1=1,82 y2=1,07

x=2,5 y1=1,93 y2=1,08

x=2,6 y1=2,05 y2=1,08

x=2,7 y1=2,16 y2=1,09

x=2,8 y1=2,28 y2=1,09

x=2,9 y1=2,39 y2=1,10

 

Варианты заданий для решения задачи Коши методом Эйлера приведены в таблице 7.


Лабораторная работа №9

Решение задачи Коши

Многошаговые методы

 

Метод Адамса (явный)

 

Входные параметры: a,b – интервал приближения; n – количество точек приближения; Kolfun – порядок системы; x – начальное значение ; y_1 – массив из kolfun чисел, содержащий начальное значение y.

Выходные параметры: y_1 – массив из kolfun чисел, содержащий приближенное решение системы.

Схема алгоритма показана на рисунке 32.

Пример. Решить задачу Коши на отрезке [0,3] с шагом 0,1

 

 

Текст программы:

 

procedure adams (a,b:real;n,kolfun:integer;x:real;var y_1:TFunZnach);

var Fun:array[1..NumFun,1..4] of real;

h:real;

begin

h:=(b-a)/n;

for i:=1 to 4 do

begin for k:=1 to kolfun do fun[k,i]:=f(y_1[k],x);

runge_ku(a,b,1,1,x,y_1); x:=x+h; end;

for i:=5 to n do



Поделиться:


Последнее изменение этой страницы: 2016-04-08; просмотров: 273; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.80.173.25 (0.513 с.)