POLITECHNIKA WROCŁAWSKA

ZAKŁAD AUTOMATYKI
i STEROWANIA w ENERGETYCE

Wydział:Elektryczny

Rok studiów:

Rok Akademicki :

Grupa:

Termin:

Laboratorium Metod Numerycznych

Data wykonania ćwiczenia:

Nr ćwiczenia: 1

Temat: Metoda Eliminacji Gaussa

Data oddania sprawozdania:

Prowadzący:

I. Cel ćwiczenia

Cel ćwiczenia:

Celem ćwiczenia było przypomnienie metody eliminacji Gaussa z wykorzystaniem programu MATLAB.

Wprowadzenie:

Metoda eliminacji Gaussa pozwala nam obliczyć układ n równań z n niewiawiadomymi Ax=b. Przekształcamy w niej macierz współczynników A do macierzy trójkątnej górnej R, z której następnie obliczamy ostateczne rozwiązanie - czyli wektor x. Macierz trójkątną górną R otrzymujemy w następujący sposób: (Przez macierz (A,b) rozumieć będziemy macierz współczynników A z dodaną na końcu kolumną wyrazów wolnych b)

Zadanie 1. Metoda eliminacji Gaussa rozwiązywania układów równań liniowych.

Korzystając z procedury GAUSS.M napisać program do rozwiązywania układów równań liniowych.

Wskazówka: napisać własny program, w którym będzie odwołanie do procedury GAUSS:

X=Gauss(A,b);

gdzie: A - macierz równania (nxn), b - wektor prawej strony (nx1), x - wektor rozwiązania (nx1). Zastosować tę procedurę do rozwiązania następującego układu równań:

0x01 graphic

który może być ogólnie zapisany w postaci macierzowej: Ax = b.

Napisany m-plik:

A=[5 -6 1 -1; 1 4 -2 5;1 -3 -8 -2; 2 1 -5 4];

B=[4;0;12;10];

X_1metoda=gauss(A,B)

X_2metoda=inv(A)*B

X_3metoda=A^-1*B

blad1=A*X_1metoda-B

blad2=A*X_2metoda-B

blad3=A*X_3metoda-B

Wyniki operacji:

gauss(A,B)

inv(A)*B

A^-1*B

X_1metoda =

-3.8541

-4.7639

-1.2189

4.0944

X_2metoda =

-3.8541

-4.7639

-1.2189

4.0944

X_3metoda =

-3.8541

-4.7639

-1.2189

4.0944

blad1*1.0e+014=

0

0.3553

0.3553

0

blad2 *1.0e+014=

-0.6217

0.3553

-0.1776

0

blad3*1.0e+014 =

-0.6217

0.3553

-0.1776

0

Wyniki otrzymane wszystkimi trzema metodami są takie same, zatem m-plik funkcyjny jest napisany prawidłowo, dodatkowo, dla zastosowania metody eliminacji gaussa blad jest wyraznie mniejszy niz w przypadku gotowych rozwiązań proponowanych przez Matlaba.


Zadanie 2. Korzystając z trójkątnej macierzy uzyskanej po pierwszym etapie procedury eliminacji Gaussa opracować procedurę do obliczania wyznacznika macierzy. Zastosować tę procedurę do wyznaczenia wyznacznika macierzy A.

Napisany m-plik:

wyznacznik=1;

for z=1:1:n(1)

wyznacznik=wyznacznik*A(z,z);

end

wyznacznik

det(A)

Wyniki operacji:

wyznacznik =

-233.0000

ans =

-233.0000

Err1= wyznacznik-det(A) % sprawdzam dokładność obu metod

Err1=

0

To że wyniki są identyczne dowodzi, że m-plik jest napisany prawidłowo, a obliczenia wyznacznika wykonane za jego pomocą są prawdziwe, a dobro poraz kolejny zwycięża w walce ze złem.

Zadanie 3. Korzystając z n rozwiązań równania algebraicznego z macierzą (nxn) opracować program do odwracania macierzy kwadratowej dowolnego stopnia. W kolejnych i = 1,…n rozwiązaniach przyjąć w charakterze wektora prawej strony wektor zerowy z jedną tylko jedynką leżącą na pozycji i:

Zastosować tę procedurę do macierzy A; wynik porównać z rezultatem uzyskanym na podstawie procedury MATLABa inv(a).

Napisany m-plik:

disp('tyle ma wynosic macierz odwrotna dla inv(A):')

disp(inv(A))

wielkosc=size(A,1);

odwrotna=ones(wielkosc,wielkosc);

for i=1:wielkosc

b1=zeros(wielkosc,1);

b1(i,1)=1;

X1=gauss(A,b1);

odwrotna(:,i)=X1;

end

odwrotna

Wyniki operacji:

tyle ma wynosic macierz odwrotna:

0.3133 1.0258 0.4077 -1.0000

0.1245 0.9828 0.3948 -1.0000

0.0300 -0.0386 -0.1116 -0.0000

-0.1502 -0.8069 -0.4421 1.0000

odwrotna =

0.3133 1.0258 0.4077 -1.0000

0.1245 0.9828 0.3948 -1.0000

0.0300 -0.0386 -0.1116 -0.0000

-0.1502 -0.8069 -0.4421 1.0000

Err2=gauss(A)-odwrotna %sprawdzam dokładność dwóch metod

Err2=

1.0e+018=

Pętla napisana w m-pliku dokonuje prawidłowego obliczenia macierzy odwrotnej, do zadanej przez prowadzącego. Wszystkie wartości w wierszach i kolumnach są identyczne i znajdują się na tych samych pozycjach.

Wnioski:

Wszystkie obliczenia dokonane za pomocą udostępnionych i napisanych m-plików wykonywane były poprawnie, oraz z większą dokładnością niż alternatywne rozwiązania proponowane przez matlab, niestety dokładność wpłyneła na liczbę i trudność wykonywanych działań a tym samym na czas.