MATHCAD 2000 - Obliczenia iteracyjne, macierze i wektory
Transkrypt
MATHCAD 2000 - Obliczenia iteracyjne, macierze i wektory
MATHCAD 2000 - Obliczenia iteracyjne, macierze i wektory Zmienne zakresowe 1. Tablicowanie funkcji Wzór a := 0 , Opis π 10 .. 2⋅ π a = a, :, 0, przecinek, Ctrl+Shift+P, /, 10, ;średnik, Ctrl+Shift+P sin ( a) = 0 0 0.314 0.309 0.628 0.588 0.942 0.809 1.257 0.951 1.571 1 1.885 0.951 2.199 0.809 2.513 0.588 2.827 0.309 3.142 0 3.456 -0.309 3.77 -0.588 4.084 -0.809 4.398 -0.951 4.712 -1 a, = sin, (, a, ), = Wyniki prezentowane po lewej są tablicami, a nie - jak dotychczas - skalarem. Aby wyświetlić kolejne elementy tablicy należy ją uaktywnić (poprzez kliknięcie) i przewinąć do szukanego elementu. Można również zwiększyć liczbę wyświetlanych elementów tablicy rozciągając jej dolną krawędź!!! Poniżej przedstawiamy wykres stablicowanej funkcji 1 0 2 4 6 8 1 Inny sposób (wektorowy) n := 10 Tu dla oszczędności miejsca rozrzedzono podział na n=10 odcinków. i := 0 .. n ai := 2⋅ π i n 0 0.628 1.257 1.885 2.513 a = 3.142 3.77 4 398 definicja wektora poprzez zmienną iterowaną a, [, i, :, 2, Ctrl+Shift+P, i, /, n 0 0.588 0.951 0.951 0.588 sin ( a) = 0 −0.588 0 951 Teraz wyniki są nie tablicami a wektorami!!! I tak przy okazji doszliśmy do naturalnej definicji wektora poprzez iterowaną definicje kolejnych jego elementów. Dostęp do kolejnych elementów wektora uzyskujemy stosując operator indeksu "[". 4.398 5.027 5.655 6.283 −0.951 − 0.951 −0.588 0 Zmienne zakresowe 2. Sumowanie szeregów n := 10 i := 0 .. n ai := s := 1 i 2 ∑a i i s = 1.999023 1 0.5 0.25 0.125 0.0625 a = 0.03125 0.01563 0.00781 0.00391 0.00195 0.00098 Uwaga: do obliczenia powyższej sumy nie warto definiować wektora a, tylko od razu wpisać wzór n ∑ 1 i = 1.999023 =0 2 co zaoszczędza zużycie pamięci i zwiększa szybkość obliczeń. (przedstawiony po lewej sposób obliczeń jest nieefektywny - pokazano go jedynie dla celów dydaktycznych). i Ćwiczenie 1: 1. Stablicuj funkcję cos(x) w przedziale od 0 do 2π z podziałem na 20 odcinków. 2. Stablicuj dowolną funkcję f(x) w przedziale od x1 do x2 z krokiem ∆x, tak aby końce zakresu jak i krok można było dynamicznie zmieniać. n 3. Oblicz sumę szeregu ∑ 1 2 dla n = 10, 100, 1000 i 10000. Wyniki przedstaw z =1 i dokładnością 10 cyfr po przecinku. Zwróć uwagę na wolną zbieżność szeregu!!! i Wektory i macierze ORIGIN := 1 UWAGA: początkowy indeks wektorów i macierzy to 0 a nie 1. To domyślne zachowanie Mathcada możemy zmienić definiująć zmienną ORIGIN Różne sposoby definiowania wektorów i macierzy 1. wystarczy określić kilka wyrazów wektora lub macierzy (pozostałe elementy przyjmą domyślne wartości zerowe). Wymiary wektora-macierzy określają maksymalne indeksy użyte do tej pory V1 := 1.23 V3 := 3.5 V, [, :, 1.23 1.23 V= 0 3.5 Dla macierzy drugi indeks oddzielamy przecinkiem A1 , 1 := 1 A, [, 0, przecinek, 0, :, 1 A2 , 3 := 5 A2 , 2 := 3 analogicznie 1 0 0 0 3 5 A= 2. można zastosować zmienne zakresowe i definicję wektora (macierzy) za pomocą wzoru iteracyjnego (jak przedstawiono przy omawianiu zmiennych zakresowych) lub podając bezpośrednio kolejne elementy wektora oddzielone przecinkami. i := 1 .. 3 wi := 2⋅ i j := 1 .. 2 2 w = 4 6 lub zi := 1 3 7 1 z = 3 7 Bi , j := 1 2 3 4 5 6 1 2 B = 3 4 5 6 dla macierzy dane czytane są wierszami!!! 3. Ctrl+M lub przycisk Insert Matrix na pasku narzędziowym Matrix.lub w menu Insert 1 2 0 0 3 4 A := A, :, Ctrl+M, podać wymiary i wpisać kolejne elementy 4. Poprzez generowanie I := diag ( z) 1 0 0 I = 0 3 0 0 0 7 H := identity( 3) 1 0 0 H = 0 1 0 0 0 1 Operacje algebraiczne na wektorach i macierzach 1 2 B = 3 4 5 6 1 2 0 A= 0 3 4 1 3 5 2 4 6 T C= C := B A+B = transpozycja macierzy (Ctrl+1) BŁĄD! niezgodne wymiary macierzy 2 5 5 2 7 10 A+C = 7 10 29 36 A⋅ B = D := B⋅ A 0 1 5 2 1 2 C−A = suma i różnica macierzy iloczyn macierzowy 1 8 8 D = 3 18 16 5 28 24 D =0 wyznacznik macierzy (tylko dla mac. kwadratowych) 43.866 eigenvals ( D) = −0.866 0 wartości własne macierzy Inne rzadziej używane funkcje cols ( A) = 3 rows ( A) = 2 Ile kolumn i wierszy 〈2〉 2 A = 3 wyciągnięcie n-tej kolumny (Ctrl+6) 10 w × z = −8 2 iloczyn wektorowy (Ctrl+8) max ( B) = 6 min ( B) = 1 szukanie elementów o największej lub najmniejszej wartości Operacje na blokach Służą do tego specjalne funkcje blokowe: • submatrix() - wyciągnięcie bloku z macierzy • augment() - sklejenie dwóch macierzy w poziomie • stack() - sklejenie macierzy w pionie Opis poszukaj samodzielnie w "Helpie" lub "Recource Center" Ćwiczenie 2 1. Zdefiniuj na różne sposoby następujące macierze: 1 0 := A 0 0 1 0 0 0 1 2 0 := B 0 0 0 0 3 0 3 0 0 4 4 2 3 4 5 2 0 0 2 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 2 2. Oblicz A + B , A − B , A⋅ B , B⋅ A 2 3. Oblicz macierz C := ( A − B) , znajdź max i min, oblicz wyznacznik i mac. transponowaną z C 4. Zdefiniuj funkcje row(A,i) i col(A,j) do wyciągania pojedynczego wiersza i kolumny, a następnie oblicz za ich pomocą wektory v1 = row(C,2) i v2 = col(C,3) 5. Wyciągnij środkowy blok 3x3 z macierzy C (znajdź opis i użyj funkcji submatrix(...)). 6. Doklej wektor v1 do macierzy A jako jej ostatni wiersz. Podobnie doklej wektor v2 do macierzy B jako jej pierwsza (lewa) kolumna. Użyj funkcji stack() i augment() 7. Wykonaj zadania z punktów 5 i 6 iteracyjnie - bez korzystania z funkcji blokowych Rozwiązywanie układów równań liniowych AX=B ORIGIN := 1 i := 1 .. 3 j := 1 .. 3 A := 0 B := 0 UWAGA: zniszczenie poprzednich definicji macierzy definicja macierzy A i wektora B Ai , j := i j 1 1 1 A = 2 4 8 3 9 27 Bi := i + j 4 B = 5 6 1. Rozwiązanie poprzez macierz odwrotną (dla małych układów) sprawdzenie czy macierz nieosobliwa det A <> 0 A = 12 obliczenie macierzy odwrotnej A1 := A 3 −1.5 0.333 −0.5 A1 = −2.5 2 0.5 −0.5 0.167 −1 rozwiązanie UWAGA: wyniki można również obliczyć symboliczn 6.5 X = −3 0.5 X := A1⋅ B 3 −5 A1 → 2 1 2 −3 2 2 −1 2 1 3 −1 2 1 6 13 2 X → −3 1 2 2. Rozwiązanie przez zastosowanie funkcji lsolve() (zalecane dla dużych układów) 13 2 X → −3 1 2 6.5 X = −3 0.5 X := lsolve ( A , B) Wektory i macierze funkcyjne przykład sin ( x) x2 − 2 M ( x) := cos ( x) x 0.841 −1 0.54 1 M ( 1) = 1 2 1 ⋅ π − 2 2 36 π M → 1 6 1⋅ 3 ⋅ π 2 6 Ćwiczenie 3 1. Rozwiąż układ równań AX=B: 1 2 3 A := 4 5 6 7 8 p 1 B := 7 13 dla p = 1, 5 i 9 2. Czy istnieje rozwiązanie dla p = 9 i jeśli tak to jak je otrzymać ??? 3. Wygeneruj losowo (funkcja rnd()) układ równań dla n = 10, 100 i 1000 niewiadomych i porównaj dokładność rozwiązania.