Sunteți pe pagina 1din 4

Universitatea Tehnică a Moldovei

Facultatea Calculatoare Informatică și Microelectronică


Departamentul Ingineria Software și Automatică

RAPORT
la lucrarea de laborator nr. 2
Metode numerice

Tema: REZOLVAREA NUMERICĂ A SISTEMELOR DE ECUAŢII LINIARE

A efectuat: Batrănac Adrina


Grupa: TI - 221

A verificat: Paţiuc Vladimir

Chişinău 2023
Scopul lucrării:

1) Să se rezolve sistemul de ecuaţii lineare Ax=b, utilizând

- Metoda eliminării lui Gauss;

- Metoda lui Cholesky (metoda rădăcinii pătrate);

- Metoda iterativă a lui Jacobi cu o eroare ε=10-3 ;

- Metoda iterativă a lui Gauss-Seidel cu o eroare ε=10-3 şi ε=10-5 .

2) Să se determine numărul de iteraţii necesare pentru aproximarea soluţiei sistemului cu eroarea dată
ε. Să se compare rezultatele.

1) Met

#include <stdio.h>

#include <math.h>

void gaussianElimination(double A[4][4], double b[4], int n) {

int i, j, k;

double factor;

// Eliminare gaussiana

for (i = 0; i < n - 1; i++) {

for (j = i + 1; j < n; j++) {

factor = A[j][i] / A[i][i];

for (k = i; k < n; k++) {

A[j][k] -= factor * A[i][k];

b[j] -= factor * b[i];


}

// Substitutie inversa

for (i = n - 1; i >= 0; i--) {

for (j = i + 1; j < n; j++) {

b[i] -= A[i][j] * b[j];

b[i] /= A[i][i];

double residualNorm(double A[4][4], double x[4], double b[4], int n) {

double residualNorm = 0.0;

for (int i = 0; i < n; i++) {

double sum = 0.0;

for (int j = 0; j < n; j++) {

sum += A[i][j] * x[j];

residualNorm += pow(b[i] - sum, 2);

return sqrt(residualNorm);

int main() {

// Definire matrice A și vector b

double A[4][4] = {

{11.2, -0.8, 1.1, 0.6},

{0, 12.6, 0.9, 0.7},


{0, 0, 14.6, 1.4},

{0, 0, 0, 15.9}

};

double b[4] = {13.2, -9.6, 12.3, 8.7};

// Apelul funcției pentru eliminarea gaussiana

gaussianElimination(A, b, 4);

// Afișare rezultate și matrice reziduala

printf("Solutia sistemului dupa metoda Gauss:\n");

for (int i = 0; i < 4; i++) {

printf("x[%d] = %lf\n", i + 1, b[i]);

double residual = residualNorm(A, b, b, 4);

printf("Norma reziduala: %lf\n", residual);

return 0;

S-ar putea să vă placă și