Curs 3 Metode Numerice SIST LIN

27
METODE NUMERICE 3. Rezolvarea sistemelor de ecuaţii algebrice liniare Metodele de rezolvare a sistemelor de ecuaţii liniare, se pot împărţi în două categorii: 1. Metode exacte(directe) – care sunt algoritmi finiţi pentru calculul soluţiilor sistemelor de ecuatii liniare: Metoda lui Cramer, bazată pe calculul determinantilor Metoda eliminarilor succesive (metoda lui Gauss) 2. Metode iterative – care permit găsirea soluţiei sistemelor liniare cu o anumită precizie, într-un număr finit de paşi: Metoda lui Jacobi Metoda Gauss-Seidel 3.1. Metoda lui Cramer Considerăm următorul sistem de n ecuaţii liniare cu n necunoscute: Conform noţiunilor de algebră din liceu, dacă un sistem liniar cu n ecuaţii şi n necunoscute are determinantul principal nenul, atunci el are soluţie unică, determinat prin regula lui Cramer, şi anume : 1

description

kl

Transcript of Curs 3 Metode Numerice SIST LIN

METODE NUMERICE

PAGE 18METODE NUMERICE

3. Rezolvarea sistemelor de ecuaii algebrice liniare

Metodele de rezolvare a sistemelor de ecuaii liniare, se pot mpri n dou categorii:

1. Metode exacte(directe) care sunt algoritmi finii pentru calculul soluiilor sistemelor de ecuatii liniare:

Metoda lui Cramer, bazat pe calculul determinantilor Metoda eliminarilor succesive (metoda lui Gauss)2. Metode iterative care permit gsirea soluiei sistemelor liniare cu o anumit precizie, ntr-un numr finit de pai: Metoda lui Jacobi

Metoda Gauss-Seidel

3.1. Metoda lui Cramer

Considerm urmtorul sistem de n ecuaii liniare cu n necunoscute:

Conform noiunilor de algebr din liceu, dac un sistem liniar cu n ecuaii i n necunoscute are determinantul principal nenul, atunci el are soluie unic, determinat prin regula lui Cramer, i anume :

unde, se obin prin nlocuirea n a a coloanei corespunztoare necunoscutei xi, prin coloana termenilor liberi.

Rezolvarea efectiv a sistemului de n ecuaii cu n necunoscute se face prin calculul a n + 1 determinanti.

Deci, trebuie s construim un algoritm de calcul numeric al determinantilor :

S presupunem, de exemplu, c avem un determinant de ordin 3, n forma general:

Dac elementul a11 este diferit de zero, atunci cutm s ajungem la un determinant care s conin pe prima coloan numai pe zero, cu excepia elementului a11. Acesta se poate obine succesiv nmulind prima linie cu i adunnd rezultatul la linia a doua. De asemenea nmulind prima linie cu i adunnd la linia a treia se ajunge la un determinant, cu aceeai valoare ca cel iniial, dar care are pe prima coloan un singur element nenul. Deci determinatul devine:

n continuare, dac este diferit de zero, putem, fr a afecta valoarea determinatului, s nmulim linia a doua cu i s adunm la a treia; vom obtine :

Evident valoarea acestui determinant este egal cu .nainte de a generaliza acest procedeu, trebuie s vedem ce se ntmpl dac, de exemplu, la primul pas, a11 = 0. n aceast situaie, dac pe prima coloan toate elementele sunt nule, atunci determinantul este zero.

Dac exist, totui un element nenul pe prima coloan, atunci putem permuta linia care conine acel element nenul, cu prima linie. Obinem un nou determinant, avnd semnul schimbat fa de cel anterior.Procedeul poate fi aplicat n continuare ca mai sus, cu singura observaie c determinantul i schimb semnul de fiecare dat cnd se efectueaz o permutare de dou linii.

n general, pentru calculul unui determinant de ordin n putem folosi metoda de mai sus. Astfel, avem :

Pentru rezolvarea sistemului de n ecuaii cu n necunoscute vom construi o funcie de calcul a determinantului conform metodei de mai sus, pe care o vom apela, prima dat pentru calculul determinantului principal al sistemului () i apoi de n ori pentru calculul celor n determinani corespunztori celor n necunoscute: .Soluia n limbajul C++ :

#include

#include

#include

float a[10][10],b[10],x[10],save[10],dp;

int i,j,n;

float determinant(float a[10][10], int n)

{

int i,j,k,l,t,iv; float temp,d=1; for(j=1;j