Sistēma


1. Uzdevuma formulējums:

Atrisināt vienādojumu sistēmu  ar precizitāti 10-5 . Jāizmanto divas metodes.

2.Algoritmisks risinājuma pamatojums:

Dota vienādojumu sistēma  ar m mainīgajiem.
Apzīmējam x = (x1,x2,...,xm), xRm, tad katru fju fi(x1,x2,...,xm) var apzīmēt ar fi(x), un ievedot vēl vektoru-funkciju f(x)=(f1(x),f2(x),...,fm(x)), tad sākotnējo sistēmu var uzrakstīt formā f(x)=0.

1.)Vienādojumu sistēmu risināšana ar Ņūtona metodi:
Dota vienādojumu sistēma f(x)=0.
Dots kaut kāds nulltais tuvinājums x0 = (x01,...,x0m) sistēmas atrisinājumam a=(a1,a2,...,am).
Kļūdas vektors ir e = a - x0 = (a1 - x01,...,am - x0m) = (e1,...,em). Vienādībā f(a) = 0 aizvietojam a = x0 + e :       f(x0 + e) = 0.
Paņemsim no vienādojumu sistēmas galveno lineāro daļu, lai to izdarītu katru fju fi(x0 + e) = 0 izvirzīsim pēc Teilora formulas, saglabājot tikai lineāro daļu, bet pārējo atmetot. Tā mēs iegūsim lineāru vienādojumi sistēmu, kas tuvināti aizstāj doto vien. sistēmu: , kur i = 1,2,...,m.
Izrēķinot to mēs iegūsim tuvinātus kļūdus rezultātus e0i. Sākotnējo tuvinājumu mēs varam uzlabot aizstājot to ar x0i + e0i. Tātad x11 = x01 + e01; ... x1m = x0m + e0m. Tādā veidā aprēķinus var turpināt. Rezultātā mēs katrai vērtībai ai iegūsim tuvinājumu rindu, kurā katru nākamo atrisinājumu var iegūt no lineāras vienādojumu sistēmas pēc iepriekšējā tuvinājuma:
, kur i = 1,2,...,m un n = 1,2,...
To var pārveidot par f '(x)(xn+1 - xn) = -f(xn), kur f '(x) ir fju sistēmas fi (i = 1,2,..,m) Jakobi matrica:
Pareizinot vienādojums f '(x)(xn+1 - xn) = -f(xn) abas puses no labās puses ar [f '(x)]-1 ieģūsim:  xn+1 = xn - [f '(x)]-1   (n = 0,1,...,N), kur  ( - precizitāte ar kādu vēlas iegūt vienādojumu sistēmas atrisinājumu.
Tuvinājumu rindas konverģences nosacījums ir: , ja det[f '(x)] nav nulle atrisinājuma a apkārtnē.
Tagad izrakstīsim Ņūtona metodes formulas gadījumā m = 2:
, det f '(x) ¹ 0.
, kur , ,  un .
Tātad n+1 tuvinājmu aprēķina pēc formulām:
,
.
Tagad apskatīsim doto vienādojumu sistēmu:
Pārveidojam to par:
Izrēķinām Jakobi matricu:
D = -cos(x+1)siny+2
Tātad n+1 tuvinājumu dotajai vien. sistēmai var izrēķināt pēc formulām:

2.)Vienādojumu sistēmu risināšana ar Vienkāršo iterācijas  metodi:
Dota vienādojuma sistēma f(x)=0.
Dots kaut kāds nulltais tuvinājums x0 = (x01,...,x0m) sistēmas atrisinājumam a=(a1,a2,...,am).
Pārveidojam doto sistēmu formā x = j(x), kur
  - tā ir iteratīvā funkcija.
Tā pat kā iepriekšējā metodē ņemam kļūdas:
 
, kur
Tātad M<1. Pietiekamais un nepieciešamais tuvinājuma rindas konverģences nosacījums ir Jakobi matricas īpašvērtībām jābūt  (i = 1,2,...,m).
Apskatām doto vienādojumu sistēmu un paŗveidojam to šādā formā:



Tātad iteratīvā funkcija ir:
Jakobi matrica ir



Grafiski nosaka aptuvenu atrisinājuma un aprēķina Jakobi matricas īpaðvērtības ðajā punktā.
Aptuvens atrisinājums ir x = 0.5 un y = -0.2, tātad l2 = -1/2cos(1.5)sin(-0.2)
l = ±0.0059, tātad |l|<1 un tuvinājumu rinda konverģē.

















3. Programmas:
{ROMUALDS BARKA'NS 2Dz2}
program nutona_metode_sistemam;
{ e   - kl'u'da,
  x0  - x nulltais tuvina'jums, y0 - y nulltais tuvina'jums,
  f1  - siste'mas pirmais viena'dojums,
  f2  - siste'mas otrais viena'dojums,
  f1x - pirma' vien. atvasina'jums pe'c x,
  f1y - pirma' vien. atvasina'jums pe'c y,
  f2x - otra' vien. atvasina'jums pe'c x,
  f2y - otra' vien. atvasina'jums pe'c y.}

const e=0.00001;
      x0=0;
      y0=0;
var x,y,a,b,x1,y1: real;

function f1(x,y:real):real;
 begin f1:=sin(x+1)-y-1.2 end;
function f2(x,y:real):real;
 begin f2:=2*x+cos(y)-2 end;
function f1x(x,y:real): real;
 begin f1x:=cos(x+1); end;
function f1y(x,y:real): real;
 begin f1y:=-1 end;
function f2x(x,y:real): real;
 begin f2x:=2 end;
function f2y(x,y:real): real;
 begin f2y:=-sin(y) end;

function nutoX(x,y:real):real;
 begin
  nutoX:=x-f2y(x,y)/(f1x(x,y)*f2y(x,y)-f1y(x,y)*f2x(x,y))*f1(x,y)-
    (-f1y(x,y))/(f1x(x,y)*f2y(x,y)-f1y(x,y)*f2x(x,y))*f2(x,y)
 end;
function nutoY(x,y:real):real;
 begin
  nutoY:=y-(-f2x(x,y))/(f1x(x,y)*f2y(x,y)-f1y(x,y)*f2x(x,y))*f1(x,y)-
    f1x(x,y)/(f1x(x,y)*f2y(x,y)-f1y(x,y)*f2x(x,y))*f2(x,y)
 end;
begin
 x:=x0;
 y:=y0;
 x1:=nutoX(x,y);
 y1:=nutoY(x,y);
 writeln;
 writeln(x:11:7,y:11:7);
 writeln(x1:11:7,y1:11:7);
 while (abs(x-x1)>e) or (abs(y-y1)>e) do
  begin
   x:=x1;
   y:=y1;
   a:=nutoX(x1,y1);
   b:=nutoY(x1,y1);
   x1:=a;
   y1:=b;
   writeln(x1:11:7,y1:11:7);
  end;
 writeln('Vien. sist. atrisinajums ar kludu',e:8:5,' pec Nutona metodes ir:');
 writeln('x=',x1:7:5,' y=',y1:7:5);
end.

{ROMUALDS BARKA'NS 2Dz2}
program vien_iteracijas_metode_sistemai;
 { e      - kl'u'da,
   x0, y0 - nulltais tuvina'jums,
   fi1    - viena'dojums forma' x=fi1(x,y),
   fi2    - viena'dojums forma' y=fi2(x,y).}

const
  e=0.00001;
  x0=0;
  y0=0;

var x,y,a,b,x1,y1:real;

function fi1(x,y:real):real;
 begin
  fi1:=-cos(y)/2+1
 end;
function fi2(x,y:real):real;
 begin
  fi2:=sin(x+1)-1.2
 end;

begin
 x:=x0;
 y:=y0;
 x1:=fi1(x,y);
 y1:=fi2(x,y);
 writeln(x:11:7,y:11:7);
 writeln(x1:11:7,y1:11:7);
 while (abs(x-x1)+abs(y-y1)>e) do
  begin
   x:=x1;
   y:=y1;
   a:=fi1(x1,y1);
   b:=fi2(x1,y1);
   x1:=a;
   y1:=b;
   writeln(x1:11:7,y1:11:7);
  end;
 writeln('Vien. sist. atrisinajums ar kludu',e:8:5,' pec vienkarsas iteracijas metodes ir:');
 writeln('x=',x1:7:5,' y=',y1:7:5);
end.















4. Rezultātu analīze:

1.) Ņūtona metode:
Izpildot  programmu, tiek iegūti šādi tuvinājumi:

x
y
Nulltais tuvinājums:
0.000000
0.000000
Pirmais:
0.500000
-0.088378
Otrais:
0.506966
-0.202012
Treðais:
0.510149
-0.201833
Ceturtais:
0.510150
-0.201838
Tātad sistēmas atrisinājums ar precizitāti 10-5 ir x = 0.51015 un y = -0.20184

2.) Vienkāršā iterācijas metode:
Izpildot  programmu, tiek iegūti šādi tuvinājumi:

x
y
Nulltais tuvinājums:
0.000000
0.000000
Pirmais:
0.500000
-0.358539
Otrais:
0.531793
-0.202505
Treðais:
0.510217
-0.200760
Ceturtais:
0.510042
-0.201834
Piektais:
0.510149
-0.201845
Sestais:
0.510150
-0.201838
Tātad sistēmas atrisinājums ar precizitāti 10-5 ir x = 0.51015 un y = -0.20184

Nav komentāru:

Ierakstīt komentāru