układy równań liniowych macierze...
Post on 06-Feb-2018
217 Views
Preview:
TRANSCRIPT
Instytut Konstrukcji Budowlanych M etody ObliczenioweZakład Komputerowego W spomagania Projektowania Semestr II.
30 wr zesie 2013ń SciLab w obliczeniach numerycznych - część 1 Slajd 1
Układy równań liniowychMacierze rzadkie
Instytut Konstrukcji Budowlanych M etody ObliczenioweZakład Komputerowego W spomagania Projektowania Semestr II.
30 wr zesie 2013ń SciLab w obliczeniach numerycznych - część 1 Slajd 2
Plan zajęć
1. Zadanie rozwiązania układu równań liniowych.
2. Ćwiczenie 1 - rozwiązanie układu równań liniowych postaci Ax = b.
3. Ćwiczenie 2 - operacje We-Wy, porównanie metod rozwiązania układu równań liniowych. oszacowanie błędu (wektora reszt) przy pomocy normy, iteracyjne poprawianie rozwiązania.
4. Ćwiczenie 3 - znalezienie rozkładu trójkątnego macierzy.
5. Przykład 4, Ćwiczenie 5 - wykorzystanie funkcji związanych z macierzami rzadkimi.
6. Ćwiczenie 6 - rozwiązywanie układu równań liniowych z macierzą rzadką, symetryczną, dodatnio określoną.
7. Ćwiczenie 7 - rozwiązywanie układu równań liniowych.
8. Zadanie 8 – przykład inżynierski – wyznaczenie sił w modelu kratownicy metodą równoważenia węzłów.
Instytut Konstrukcji Budowlanych M etody ObliczenioweZakład Komputerowego W spomagania Projektowania Semestr II.
30 wr zesie 2013ń SciLab w obliczeniach numerycznych - część 1 Slajd 3
Układ równań liniowych
Zapis w postaci macierzowej
=+++
=+++=+++
nnnnnn
nn
nn
bxaxaxa
bxaxaxabxaxaxa
2211
22222121
11212111
0det,][
2
1
2
1
21
22221
11211
≠=
=
AbxAb
bb
x
xx
aaa
aaaaaa
nnnnnn
n
n
Instytut Konstrukcji Budowlanych M etody ObliczenioweZakład Komputerowego W spomagania Projektowania Semestr II.
30 wr zesie 2013ń SciLab w obliczeniach numerycznych - część 1 Slajd 4
Ćwiczenie 1Rozwiązać, układ równań, zapisany w postaci macierzowej M x = t:
● wykorzystując macierz odwrotną do macierzy M● przy użyciu funkcji SciLaba linsolve():
=
−−−−
−
7902
1213211211111111
4
3
2
1
xxxx
Instytut Konstrukcji Budowlanych M etody ObliczenioweZakład Komputerowego W spomagania Projektowania Semestr II.
30 wr zesie 2013ń SciLab w obliczeniach numerycznych - część 1 Slajd 5
Ćwiczenie 1Rozwiązać, układ równań, zapisany w postaci macierzowej M x = t:
● wykorzystując macierz odwrotną do macierzy M● przy użyciu funkcji SciLaba linsolve():
=
−−−−
−
7902
1213211211111111
4
3
2
1
xxxx
M = [ 1, 1, 1, -1; 1, -1, -1, 1; 2, 1, -1, 2; 3, 1, 2, -1]t = [2, 0, 9, 7]'x = inv(M) * t// x = [1, 2, 3, 4]'
Instytut Konstrukcji Budowlanych M etody ObliczenioweZakład Komputerowego W spomagania Projektowania Semestr II.
30 wr zesie 2013ń SciLab w obliczeniach numerycznych - część 1 Slajd 6
Ćwiczenie 1Rozwiązać, układ równań, zapisany w postaci macierzowej M x = t:
● wykorzystując macierz odwrotną do macierzy M● przy użyciu funkcji SciLaba linsolve():
UWAGA: funkcja linsolve() rozwiązuje równanie macierzowe postaci M*x + t =0 .
=
−−−−
−
7902
1213211211111111
4
3
2
1
xxxx
Instytut Konstrukcji Budowlanych M etody ObliczenioweZakład Komputerowego W spomagania Projektowania Semestr II.
30 wr zesie 2013ń SciLab w obliczeniach numerycznych - część 1 Slajd 7
Ćwiczenie 1Rozwiązać, układ równań, zapisany w postaci macierzowej M x = t:
● wykorzystując macierz odwrotną do macierzy M● przy użyciu funkcji SciLaba linsolve():
UWAGA: funkcja linsolve() rozwiązuje równanie macierzowe postaci M*x + t = 0 .
=
−−−−
−
7902
1213211211111111
4
3
2
1
xxxx
M = [ 1, 1, 1, -1; 1, -1, -1, 1; 2, 1, -1, 2; 3, 1, 2, -1]t = [2, 0, 9, 7]'x = linsolve(M, -t)// x = [1, 2, 3, 4]'
Instytut Konstrukcji Budowlanych M etody ObliczenioweZakład Komputerowego W spomagania Projektowania Semestr II.
30 wr zesie 2013ń SciLab w obliczeniach numerycznych - część 1 Slajd 8
Ćwiczenie 2Skrypt /pub/programy/mo-1.sce zawiera polecenia pozwalające podstawić pod
zmienne n,A dane zapisane w sformatowanym pliku tekstowym macierz_aa.txt.
Po otwarciu skryptu, uzupełnić skrypt o polecenia formujące wektor kolumnowy b (n= rozmiar wektora = wymiar macierzy A) podstawiając:
niA
b ij
nji ,...,14
max,...,1
===
Instytut Konstrukcji Budowlanych M etody ObliczenioweZakład Komputerowego W spomagania Projektowania Semestr II.
30 wr zesie 2013ń SciLab w obliczeniach numerycznych - część 1 Slajd 9
Ćwiczenie 2Skrypt /pub/programy/mo-1.sce zawiera polecenia pozwalające podstawić pod
zmienne n,A dane zapisane w sformatowanym pliku tekstowym macierz_aa.txt.
Po otwarciu skryptu, uzupełnić skrypt o polecenia formujące wektor kolumnowy b (n= rozmiar wektora = wymiar macierzy A) podstawiając:
niA
b ij
nji ,...,14
max,...,1
===
// sformowanie wektora bfor i=1:n b(i) = max(A(i,1:n))/4end
Instytut Konstrukcji Budowlanych M etody ObliczenioweZakład Komputerowego W spomagania Projektowania Semestr II.
30 wr zesie 2013ń SciLab w obliczeniach numerycznych - część 1 Slajd 10
Ćwiczenie 2Uzupełnić skrypt o polecenia rozwiązujące układ równań Ax = b przy użyciu:
● funkcji SciLaba linsolve() (zapisując rozwiązanie jako zmienną x1)
● macierzy odwrotnej do macierzy A (zapisując rozwiązanie jako zmienną x2)
Porównać oba otrzymane rozwiązania.
Instytut Konstrukcji Budowlanych M etody ObliczenioweZakład Komputerowego W spomagania Projektowania Semestr II.
30 wr zesie 2013ń SciLab w obliczeniach numerycznych - część 1 Slajd 11
Ćwiczenie 2Uzupełnić skrypt o polecenia rozwiązujące układ równań Ax = b przy użyciu:
● funkcji SciLaba linsolve() (zapisując rozwiązanie jako zmienną x1)
● macierzy odwrotnej do macierzy A (zapisując rozwiązanie jako zmienną x2)
Porównać oba otrzymane rozwiązania.
// rozwiązanie układów równańx1 = linsolve(A,-b)x2 = inv(A)* b
disp(x1); disp(x2)disp(clean(x1)); disp(clean(x2))
x1 = x2 ?
Które rozwiązanie poprawne?
Instytut Konstrukcji Budowlanych M etody ObliczenioweZakład Komputerowego W spomagania Projektowania Semestr II.
30 wr zesie 2013ń SciLab w obliczeniach numerycznych - część 1 Slajd 12
Ćwiczenie 2 Zapisać polecenia obliczające i wyświetlające na ekranie wektory reszt
r1, r2 (rp = A*xp – b, p=1,2), oraz ich normy
Instytut Konstrukcji Budowlanych M etody ObliczenioweZakład Komputerowego W spomagania Projektowania Semestr II.
30 wr zesie 2013ń SciLab w obliczeniach numerycznych - część 1 Slajd 13
Ćwiczenie 2 Zapisać polecenia obliczające i wyświetlające na ekranie wektory reszt
r1, r2 (rp = A*xp – b, p=1,2), oraz ich normy
// oszacowanie błędówr1 = A * x1 - br2 = A * x2 - bp1 = norm(r1); p2 = norm(r2)disp(p1); disp(p2)// p1 = 0.2499...// p2 = 0.0000...
Instytut Konstrukcji Budowlanych M etody ObliczenioweZakład Komputerowego W spomagania Projektowania Semestr II.
30 wr zesie 2013ń SciLab w obliczeniach numerycznych - część 1 Slajd 14
Ćwiczenie 3 Uzupełnić skrypt, poprzez dopisanie poleceń, które:
● wykorzystując funkcję lu()znajdą rozkład trójkątny macierzy EA = LU (UWAGA: [L,U,E]=lu(A))
Instytut Konstrukcji Budowlanych M etody ObliczenioweZakład Komputerowego W spomagania Projektowania Semestr II.
30 wr zesie 2013ń SciLab w obliczeniach numerycznych - część 1 Slajd 15
Ćwiczenie 3 Uzupełnić skrypt, poprzez dopisanie poleceń, które:
● wykorzystując funkcję lu()znajdą rozkład trójkątny macierzy EA = LU (UWAGA: [L,U,E]=lu(A))
// otrzymanie rozkładu trójkątnego[L,U,E] = lu(A)
Instytut Konstrukcji Budowlanych M etody ObliczenioweZakład Komputerowego W spomagania Projektowania Semestr II.
30 wr zesie 2013ń SciLab w obliczeniach numerycznych - część 1 Slajd 16
Ćwiczenie 4Macierz rzadka - macierz w której znaczną część elementów stanowią zeraprofil macierzy - zapis elementów niezerowych macierzy rzadkich
Instytut Konstrukcji Budowlanych M etody ObliczenioweZakład Komputerowego W spomagania Projektowania Semestr II.
30 wr zesie 2013ń SciLab w obliczeniach numerycznych - część 1 Slajd 17
Ćwiczenie 4Macierz rzadka - macierz w której znaczną część elementów stanowią zeraprofil macierzy - zapis elementów niezerowych macierzy rzadkich
Skrypt /pub/programy/mo-2.sce zawiera polecenia pozwalające podstawić pod zmienne m,B,z dane zapisane w sformatowanym pliku tekstowym macierz_bb.txt.
Po otwarciu skryptu, zapisz polecenia które pozwolą zliczyć jakim procentem elementów macierzy B są zera
Instytut Konstrukcji Budowlanych M etody ObliczenioweZakład Komputerowego W spomagania Projektowania Semestr II.
30 wr zesie 2013ń SciLab w obliczeniach numerycznych - część 1 Slajd 18
Ćwiczenie 4Macierz rzadka - macierz w której znaczną część elementów stanowią zeraprofil macierzy - zapis elementów niezerowych macierzy rzadkich
Skrypt /pub/programy/mo-2.sce zawiera polecenia pozwalające podstawić pod zmienne m,B,z dane zapisane w sformatowanym pliku tekstowym macierz_bb.txt.
Po otwarciu skryptu, zapisz polecenia które pozwolą zliczyć jakim procentem elementów macierzy B są zera
zera=0for i=1:m for j=1:m if B(i,j)==0 then
zera = zera+1 end
endendprocent = zera/(m*m)*100; disp(procent)
Instytut Konstrukcji Budowlanych M etody ObliczenioweZakład Komputerowego W spomagania Projektowania Semestr II.
30 wr zesie 2013ń SciLab w obliczeniach numerycznych - część 1 Slajd 19
Przykład 5
Uzupełnij skrypt, stworzony w poprzednim zadaniu:● Wykorzystując funkcję SciLaba sparse() przekształć macierz B do
profilu generowanego przez tą funkcję.
B_s = sparse(B)
Instytut Konstrukcji Budowlanych M etody ObliczenioweZakład Komputerowego W spomagania Projektowania Semestr II.
30 wr zesie 2013ń SciLab w obliczeniach numerycznych - część 1 Slajd 20
Przykład 5
Uzupełnij skrypt, stworzony w poprzednim zadaniu:● Wykorzystując funkcję SciLaba sparse() przekształć macierz A do
profilu generowanego przez tą funkcję.
B_s = sparse(B)● Rozwiąż układ równań B x = z za pomocą funkcji lusolve()
służącej do rozwiązywania układów równań liniowych z macierzą rzadką. Wynik podstawić pod zmienną xg.
xg = lusolve (B_s, z)
Instytut Konstrukcji Budowlanych M etody ObliczenioweZakład Komputerowego W spomagania Projektowania Semestr II.
30 wr zesie 2013ń SciLab w obliczeniach numerycznych - część 1 Slajd 21
Przykład 5
Uzupełnij skrypt, stworzony w poprzednim zadaniu:● Wykorzystując funkcję SciLaba sparse() przekształć macierz B do
profilu generowanego przez tą funkcję.
B_s = sparse(B)● Rozwiąż układ równań B x = z za pomocą funkcji lusolve()
służącej do rozwiązywania układów równań liniowych z macierzą rzadką. Wynik podstawić pod zmienną xg.
xg = lusolve (B_s, z)● oszacuj za pomocą normy błąd rozwiązania, porównaj go z błędem
rozwiązania otrzymanego za pomocą funkcji inv().
pg = norm (B_s*xg – z)pinv = norm (B*inv(B)*z - z)
Instytut Konstrukcji Budowlanych M etody ObliczenioweZakład Komputerowego W spomagania Projektowania Semestr II.
30 wr zesie 2013ń SciLab w obliczeniach numerycznych - część 1 Slajd 22
Ćwiczenie 6
W nowym skrypcie zapisać polecenia przy pomocy których można● sformować macierz T, oraz wektor zx,
● przekształcić macierz T do postaci rzadkiej, wykorzystując sposób zapisu macierzy rzadkiej w SciLabie (patrz funkcje sparse(), full())
● rozwiązać układ równań Ty = zx wykorzystując funkcję lusolve()● oszacować za pomocą normy błąd rozwiązania
=
=
101
...21
,
120]0[......
32233213
]0[320
zT
Instytut Konstrukcji Budowlanych M etody ObliczenioweZakład Komputerowego W spomagania Projektowania Semestr II.
30 wr zesie 2013ń SciLab w obliczeniach numerycznych - część 1 Slajd 23
Ćwiczenie 6
// sformowanie macierzy T i zx
=
=
101
...21
,
120]0[......
32233213
]0[320
zT
Instytut Konstrukcji Budowlanych M etody ObliczenioweZakład Komputerowego W spomagania Projektowania Semestr II.
30 wr zesie 2013ń SciLab w obliczeniach numerycznych - część 1 Slajd 24
Ćwiczenie 6
// sformowanie macierzy T i zxT = zeros(101,101)for i = 1:100 T(i,i) = 19 + i T(i,i+1) = 3; T(i+1,i) = 3 zx(i) = iendT(101,101) = 120; zx(101) = 101
=
=
101
...21
,
120]0[......
32233213
]0[320
zT
Instytut Konstrukcji Budowlanych M etody ObliczenioweZakład Komputerowego W spomagania Projektowania Semestr II.
30 wr zesie 2013ń SciLab w obliczeniach numerycznych - część 1 Slajd 25
Ćwiczenie 6
// sformowanie macierzy T i zxT = zeros(101,101)for i = 1:100 T(i,i) = 19 + i T(i,i+1) = 3; T(i+1,i) = 3 zx(i) = iendT(101,101) = 120; zx(101) = 101T_sp = sparse(T) // budowa profilu macierzy rzadkiejy = lusolve (T_sp, zx) // rozwiązanie funkcją lusolvep_ch = norm (T_sp * y - zx) // oszacowanie błędudisp(p)T_n = full(T_sp)// tablica z profilu macierzy rzadkiej
=
=
101
...21
,
120]0[......
32233213
]0[320
zT
Instytut Konstrukcji Budowlanych M etody ObliczenioweZakład Komputerowego W spomagania Projektowania Semestr II.
30 wr zesie 2013ń SciLab w obliczeniach numerycznych - część 1 Slajd 26
Ćwiczenie 7 W nowym skrypcie zapisać instrukcje za pomocą których● zostanie wygenerowana macierz kwadratowa H (wymiaru 100x100),
poprzez – wypełnienie losowo wybranymi liczbami z przedziału [-1,1), – następnie zwiększenie elementów przekątnej głównej o liczbę
100, ● zostanie rozwiązany układ równań Hx = d, gdzie d jest wektorem
kolumnowym jedynek, za pomocą
– funkcji linsolve()– wykorzystania macierzy odwrotnej
● zostaną oszacowane oba rozwiązania● Rozwiązanie otrzymane funkcją linsolve() zostanie zapisane do
sformatowanego pliku tekstowego – zapis w dwóch kolumnach: i, xi
Instytut Konstrukcji Budowlanych M etody ObliczenioweZakład Komputerowego W spomagania Projektowania Semestr II.
30 wr zesie 2013ń SciLab w obliczeniach numerycznych - część 1 Slajd 27
Ćwiczenie 7 W nowym skrypcie zapisać instrukcje za pomocą których● zostanie wygenerowana macierz kwadratowa H (wymiaru 100x100),
poprzez – wypełnienie losowo wybranymi liczbami z przedziału [-1,1), – następnie zwiększenie elementów przekątnej głównej o liczbę
100,
Instytut Konstrukcji Budowlanych M etody ObliczenioweZakład Komputerowego W spomagania Projektowania Semestr II.
30 wr zesie 2013ń SciLab w obliczeniach numerycznych - część 1 Slajd 28
Ćwiczenie 7 W nowym skrypcie zapisać instrukcje za pomocą których● zostanie wygenerowana macierz kwadratowa H (wymiaru 100x100),
poprzez – wypełnienie losowo wybranymi liczbami z przedziału [-1,1), – następnie zwiększenie elementów przekątnej głównej o liczbę
100,
// wygenerowanie macierzy HH = 2*rand(100,100) - 1H = H + 100*eye(100,100)
Instytut Konstrukcji Budowlanych M etody ObliczenioweZakład Komputerowego W spomagania Projektowania Semestr II.
30 wr zesie 2013ń SciLab w obliczeniach numerycznych - część 1 Slajd 29
Ćwiczenie 7
// wykorzystanie macierzy odwrotnejx_odw = inv(H) * d
// oszacowania rozwiazańNorma_1 = norm(H*x – d)Norma_2 = norm(H*x_odw – d)
● zostanie rozwiązany układ równań Hx = d, gdzie d jest wektorem kolumnowym jedynek, za pomocą
● zostaną oszacowane oba rozwiązania
x = linsolve(H,-d)
Instytut Konstrukcji Budowlanych M etody ObliczenioweZakład Komputerowego W spomagania Projektowania Semestr II.
30 wr zesie 2013ń SciLab w obliczeniach numerycznych - część 1 Slajd 30
Ćwiczenie 7 ● rozwiązanie zostanie zapisane do sformatowanego pliku tekstowego –
zapis w dwóch kolumnach: i, xi
● nazwa pliku: ~/rozwiazanie_linsolve.txt
Instytut Konstrukcji Budowlanych M etody ObliczenioweZakład Komputerowego W spomagania Projektowania Semestr II.
30 wr zesie 2013ń SciLab w obliczeniach numerycznych - część 1 Slajd 31
Ćwiczenie 7
// zapis rozwiązania do pliku tekstowegou = file('open','~/rozwiazanie_linsolve.txt','unknown')for i = 1:100 write(u,[i,x(i)],'(f6.0,f10.4)') endfile('close',u)
● rozwiązanie zostanie zapisane do sformatowanego pliku tekstowego – zapis w dwóch kolumnach: i, xi
● nazwa pliku: ~/rozwiazanie_linsolve.txt
Instytut Konstrukcji Budowlanych M etody ObliczenioweZakład Komputerowego W spomagania Projektowania Semestr II.
30 wr zesie 2013ń SciLab w obliczeniach numerycznych - część 1 Slajd 32
Zadanie 8
W powyższym modelu kratownicy należy, wykorzystując metodę równoważenia węzłów wyznaczyć wartości sił w prętach, oraz wartości sił reakcji.
równoważąc siły w każdym z węzłów wyznaczamy 10 równań liniowych:
Zapisując współczynniki każdego z równań jako elementy macierzy A i wektora b, oraz definiując wektor
otrzymujemy do rozwiązania układ równań liniowych Ax = b
PNERANRA CEDECYAYYACAXx =⋅==+ )sin(:...0:;0: α
TBYBXAYAXDECECDBDBCAC RRRRNNNNNNx ],,,,,,,,,[=
Instytut Konstrukcji Budowlanych M etody ObliczenioweZakład Komputerowego W spomagania Projektowania Semestr II.
30 wr zesie 2013ń SciLab w obliczeniach numerycznych - część 1 Slajd 33
Zadanie 8
PNERANRA CEDECYAYYACAXx =⋅==+ )sin(:...0:;0: αT
BYBXAYAXDECECDBDBCAC RRRRNNNNNNx ],,,,,,,,,[=
=
=
P
bA
DEC
...00
,
00000)sin(0000...
00100000000001000001
α
Instytut Konstrukcji Budowlanych M etody ObliczenioweZakład Komputerowego W spomagania Projektowania Semestr II.
30 wr zesie 2013ń SciLab w obliczeniach numerycznych - część 1 Slajd 34
Zadanie 8
TBYBXAYAXDECECDBDBCAC RRRRNNNNNNx ],,,,,,,,,[=
Przygotować skrypt rozwiązujący zadanie. ● przyjąć jako dane wejściowe : AB, AC, DE, P● wyniki – wyznaczone wartości sił wyświetlić na ekranie● zamieścić instrukcje generujące model kratownicy
Instytut Konstrukcji Budowlanych M etody ObliczenioweZakład Komputerowego W spomagania Projektowania Semestr II.
30 wr zesie 2013ń SciLab w obliczeniach numerycznych - część 1 Slajd 35
Funkcje SciLaba
Wykorzystywane funkcje:● norm() obliczenie normy wektora lub macierzy● linsolve() rozwiązanie układu równań liniowych dowolnej postaci● lu() rozkład LU - metoda Gaussa-Crouta● inv() obliczenie macierzy odwrotnej● sparse() formowanie macierzy rzadkich● full() formowanie macierzy kwadratowej z profilu otrzymanego
funkcją sparse()● lusolve() rozwiązanie układu równań liniowych z macierzą rzadką
top related