POLITECHNIKA WROCŁAWSKA
ZAKŁAD AUTOMATYKI |
|
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ń:
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.