15.03.2015 Views

MathCAD - ćwiczenia 2

MathCAD - ćwiczenia 2

MathCAD - ćwiczenia 2

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

MATHCAD 2000 - Obliczenia iteracyjne, macierze i wektory<br />

Zmienne zakresowe 1. Tablicowanie funkcji<br />

Wzór<br />

a := 0, π .. 2⋅π<br />

10<br />

a =<br />

0<br />

0.314<br />

0.628<br />

0.942<br />

1.257<br />

1.571<br />

1.885<br />

2.199<br />

2.513<br />

2.827<br />

3.142<br />

3.456<br />

3.77<br />

4.084<br />

4.398<br />

4.712<br />

sin()<br />

a<br />

0<br />

0.309<br />

0.588<br />

0.809<br />

0.951<br />

1<br />

0.951<br />

0.809<br />

0.588<br />

0.309<br />

0<br />

-0.309<br />

-0.588<br />

-0.809<br />

-0.951<br />

-1<br />

=<br />

Opis<br />

a, :, 0, przecinek, Ctrl+Shift+P, /, 10, ;średnik,<br />

Ctrl+Shift+P<br />

a, = sin, (, a, ), =<br />

Wyniki prezentowane po lewej są tablicami, a nie - jak<br />

dotychczas - skalarem. Aby wyświetlić kolejne elementy<br />

tablicy należy ją uaktywnić (poprzez kliknięcie) i<br />

przewinąć do szukanego elementu. Można również<br />

zwiększyć liczbę wyświetlanych elementów tablicy<br />

rozciągając jej dolną krawędź!!!<br />

Poniżej przedstawiamy wykres stablicowanej funkcji<br />

1<br />

1<br />

0 2 4 6 8<br />

Inny sposób (wektorowy)<br />

n := 10<br />

i := 0..<br />

n<br />

Tu dla oszczędności miejsca rozrzedzono podział na n=10<br />

odcinków.<br />

a i<br />

:=<br />

2⋅π<br />

i<br />

n<br />

definicja wektora poprzez zmienną iterowaną<br />

a, [, i, :, 2, Ctrl+Shift+P, i, /, n<br />

a<br />

=<br />

⎛<br />

⎜<br />

⎜<br />

⎜<br />

⎜<br />

⎜<br />

⎜<br />

⎜<br />

⎜<br />

⎜<br />

⎜<br />

0<br />

0.628<br />

1.257<br />

1.885<br />

2.513<br />

3.142<br />

3.77<br />

4 398<br />

⎞<br />

⎟<br />

⎟<br />

⎟<br />

⎟<br />

⎟<br />

⎟<br />

⎟<br />

⎟<br />

⎟<br />

⎟<br />

sin()<br />

a<br />

=<br />

⎛<br />

⎜<br />

⎜<br />

⎜<br />

⎜<br />

⎜<br />

⎜<br />

⎜<br />

⎜<br />

⎜<br />

⎜<br />

0<br />

0.588<br />

0.951<br />

0.951<br />

0.588<br />

0<br />

−0.588<br />

0 951<br />

⎞<br />

⎟<br />

⎟<br />

⎟<br />

⎟<br />

⎟<br />

⎟<br />

⎟<br />

⎟<br />

⎟<br />

⎟<br />

Teraz wyniki są nie tablicami a wektorami!!!<br />

I tak przy okazji doszliśmy do naturalnej<br />

definicji wektora poprzez iterowaną definicje<br />

kolejnych jego elementów.<br />

Dostęp do kolejnych elementów wektora<br />

uzyskujemy stosując operator indeksu "[".


⎜<br />

⎜<br />

⎜<br />

⎜<br />

⎜<br />

⎝<br />

4.398<br />

5.027<br />

5.655<br />

6.283<br />

⎟<br />

⎟<br />

⎟<br />

⎟<br />

⎟<br />

⎠<br />

⎜<br />

⎜<br />

⎜<br />

⎜<br />

⎜<br />

⎝<br />

−0.951<br />

−0.951<br />

−0.588<br />

0<br />

⎟<br />

⎟<br />

⎟<br />

⎟<br />

⎟<br />

⎠<br />

Zmienne zakresowe 2. Sumowanie szeregów<br />

n := 10<br />

i := 0..<br />

n<br />

1<br />

a i :=<br />

s<br />

2 i<br />

:=<br />

∑ a i<br />

i<br />

s = 1.999023<br />

a<br />

=<br />

⎛<br />

⎜<br />

⎜<br />

⎜<br />

⎜<br />

⎜<br />

⎜<br />

⎜<br />

⎜<br />

⎜<br />

⎜<br />

⎜<br />

⎜<br />

⎜<br />

⎜<br />

⎝<br />

1<br />

0.5<br />

0.25<br />

0.125<br />

0.0625<br />

0.03125<br />

0.01563<br />

0.00781<br />

0.00391<br />

0.00195<br />

0.00098<br />

⎞<br />

⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎠<br />

Uwaga: do obliczenia powyższej sumy nie warto<br />

definiować wektora a, tylko od razu wpisać wzór<br />

∑<br />

n<br />

1<br />

i 0<br />

2 i = 1.999023<br />

=<br />

co zaoszczędza zużycie pamięci i zwiększa szybkość<br />

obliczeń. (przedstawiony po lewej sposób obliczeń jest<br />

nieefektywny - pokazano go jedynie dla celów<br />

dydaktycznych).<br />

Ćwiczenie 1:<br />

1. Stablicuj funkcję cos(x) w przedziale od 0 do 2π z podziałem na 20 odcinków.<br />

2. Stablicuj dowolną funkcję f(x) w przedziale od x1 do x2 z krokiem ∆x, tak aby końce<br />

zakresu jak i krok można było dynamicznie zmieniać.<br />

n<br />

3. Oblicz sumę szeregu<br />

∑ 1<br />

dla n = 10, 100, 1000 i 10000. Wyniki przedstaw z<br />

i 1<br />

i 2<br />

=<br />

dokładnością 10 cyfr po przecinku. Zwróć uwagę na wolną zbieżność szeregu!!!<br />

Wektory i macierze<br />

ORIGIN := 1<br />

UWAGA: początkowy indeks wektorów i macierzy<br />

to 0 a nie 1. To domyślne zachowanie Mathcada<br />

możemy zmienić definiująć zmienną ORIGIN<br />

Różne sposoby definiowania wektorów i macierzy<br />

1. wystarczy określić kilka wyrazów wektora lub macierzy (pozostałe elementy przyjmą domyślne<br />

wartości zerowe). Wymiary wektora-macierzy określają maksymalne indeksy użyte do tej pory


V 1 := 1.23<br />

V<br />

A 11 , := 1<br />

A 23 , := 5<br />

=<br />

⎛<br />

⎜<br />

⎜<br />

⎜<br />

⎝<br />

1.23<br />

0<br />

3.5<br />

V 3 := 3.5<br />

⎞ ⎟⎟<br />

⎟ ⎠<br />

A 22 , := 3<br />

V, [, :, 1.23<br />

Dla macierzy drugi indeks oddzielamy przecinkiem<br />

A, [, 0, przecinek, 0, :, 1<br />

analogicznie<br />

A<br />

=<br />

⎛<br />

⎜<br />

⎝<br />

1<br />

0<br />

0<br />

3<br />

0<br />

5<br />

⎞ ⎟⎠<br />

2. można zastosować zmienne zakresowe i definicję wektora (macierzy) za pomocą wzoru<br />

iteracyjnego (jak przedstawiono przy omawianiu zmiennych zakresowych) lub podając<br />

bezpośrednio kolejne elementy wektora oddzielone przecinkami.<br />

i := 1..<br />

3<br />

w i<br />

:=<br />

B i j ,<br />

2i ⋅<br />

j := 1..<br />

2<br />

:=<br />

w<br />

=<br />

⎛<br />

⎜<br />

⎜<br />

⎜<br />

⎝<br />

2<br />

4<br />

6<br />

⎞ ⎟⎟<br />

⎟ ⎠<br />

lub<br />

z i<br />

1<br />

3<br />

7<br />

:=<br />

z =<br />

⎛<br />

⎜<br />

⎜<br />

⎜<br />

⎝<br />

1<br />

3<br />

7<br />

⎞ ⎟⎟<br />

⎟ ⎠<br />

1<br />

2<br />

3<br />

4<br />

5<br />

6<br />

B<br />

=<br />

⎛<br />

⎜<br />

⎜<br />

⎜<br />

⎝<br />

1<br />

3<br />

5<br />

2<br />

4<br />

6<br />

⎞ ⎟⎟<br />

⎟ ⎠<br />

dla macierzy dane czytane są wierszami!!!<br />

3. Ctrl+M lub przycisk Insert Matrix na pasku narzędziowym Matrix.lub w menu Insert<br />

A<br />

:=<br />

⎛<br />

⎜<br />

⎝<br />

1<br />

0<br />

2<br />

3<br />

0<br />

4<br />

⎞ ⎟⎠<br />

A, :, Ctrl+M, podać wymiary i wpisać kolejne elementy<br />

4. Poprzez generowanie<br />

I :=<br />

diag()<br />

z<br />

I<br />

=<br />

⎛<br />

⎜<br />

⎜<br />

⎜<br />

⎝<br />

1<br />

0<br />

0<br />

0<br />

3<br />

0<br />

0<br />

0<br />

7<br />

⎞ ⎟<br />

⎟<br />

⎟<br />

⎠<br />

H := identity( 3)<br />

H =<br />

⎛<br />

⎜<br />

⎜<br />

⎜<br />

⎝<br />

1<br />

0<br />

0<br />

0<br />

1<br />

0<br />

0<br />

0<br />

1<br />

⎞ ⎟<br />

⎟<br />

⎟<br />


Operacje algebraiczne na wektorach i macierzach<br />

A<br />

=<br />

⎛<br />

⎜<br />

⎝<br />

1<br />

0<br />

2<br />

3<br />

0<br />

4<br />

⎞ ⎟⎠<br />

B<br />

=<br />

⎛<br />

⎜<br />

⎜<br />

⎜<br />

⎝<br />

1<br />

3<br />

5<br />

2<br />

4<br />

6<br />

⎞ ⎟⎟⎟⎠<br />

C :=<br />

B T<br />

C<br />

=<br />

⎛<br />

⎜<br />

⎝<br />

1<br />

2<br />

3<br />

4<br />

5<br />

6<br />

⎞ ⎟⎠<br />

transpozycja macierzy (Ctrl+1)<br />

A<br />

+<br />

B =<br />

BŁĄD! niezgodne wymiary macierzy<br />

A + C<br />

=<br />

⎛<br />

⎜<br />

⎝<br />

2<br />

2<br />

5<br />

7<br />

5<br />

10<br />

⎞<br />

⎟<br />

⎠<br />

C − A<br />

=<br />

⎛<br />

⎜<br />

⎝<br />

0<br />

2<br />

1<br />

1<br />

5<br />

2<br />

⎞ ⎟⎠<br />

suma i różnica macierzy<br />

AB ⋅<br />

D :=<br />

=<br />

⎛<br />

⎜<br />

⎝<br />

B⋅A<br />

7<br />

29<br />

10<br />

36<br />

⎞<br />

⎟<br />

⎠<br />

D<br />

=<br />

⎛<br />

⎜<br />

⎜<br />

⎜<br />

⎝<br />

1<br />

3<br />

5<br />

8<br />

18<br />

28<br />

8<br />

16<br />

24<br />

⎟<br />

⎞<br />

⎟<br />

⎟<br />

⎠<br />

iloczyn macierzowy<br />

D = 0<br />

eigenvals( D)<br />

=<br />

⎛<br />

⎜<br />

⎜<br />

⎜<br />

⎝<br />

43.866<br />

−0.866<br />

0<br />

⎟<br />

⎞<br />

⎟<br />

⎟<br />

⎠<br />

wyznacznik macierzy (tylko dla mac. kwadratowych)<br />

wartości własne macierzy<br />

Inne rzadziej używane funkcje<br />

cols( A) = 3<br />

〈〉 2<br />

= ⎜<br />

3<br />

A 2<br />

⎛<br />

⎝<br />

⎞ ⎟⎠<br />

rows( A) = 2<br />

Ile kolumn i wierszy<br />

wyciągnięcie n-tej kolumny (Ctrl+6)<br />

w×<br />

z<br />

=<br />

⎛<br />

⎜<br />

⎜<br />

⎜<br />

⎝<br />

10<br />

−8<br />

2<br />

⎞ ⎟⎟<br />

⎟ ⎠<br />

iloczyn wektorowy (Ctrl+8)<br />

max( B) = 6<br />

min( B) = 1<br />

szukanie elementów o największej lub najmniejszej<br />

wartości


Operacje na blokach<br />

Służą do tego specjalne funkcje blokowe:<br />

• submatrix() - wyciągnięcie bloku z macierzy<br />

• augment() - sklejenie dwóch macierzy w poziomie<br />

• stack() - sklejenie macierzy w pionie<br />

Opis poszukaj samodzielnie w "Helpie" lub "Recource Center"<br />

Ćwiczenie 2<br />

1. Zdefiniuj na różne sposoby następujące macierze:<br />

⎛<br />

⎜<br />

⎜<br />

⎜<br />

⎜<br />

⎜<br />

⎝<br />

1<br />

0<br />

A := 0 0 3 0 3 B :=<br />

0<br />

1<br />

2. Oblicz A + B, A 2 − B , A⋅<br />

B, B⋅A<br />

0<br />

2<br />

0<br />

2<br />

0<br />

0<br />

0<br />

3<br />

0<br />

0<br />

4<br />

4<br />

1<br />

2<br />

4<br />

5<br />

⎞<br />

⎟⎟⎟⎟⎟⎠<br />

3. Oblicz macierz C := ( A − B) 2 , znajdź max i min, oblicz wyznacznik i mac.<br />

transponowaną z C<br />

4. Zdefiniuj funkcje row(A,i) i col(A,j) do wyciągania pojedynczego wiersza i kolumny, a<br />

następnie oblicz za ich pomocą wektory v1 = row(C,2) i v2 = col(C,3)<br />

5. Wyciągnij środkowy blok 3x3 z macierzy C (znajdź opis i użyj funkcji submatrix(...)).<br />

6. Doklej wektor v1 do macierzy A jako jej ostatni wiersz. Podobnie doklej wektor v2 do<br />

macierzy B jako jej pierwsza (lewa) kolumna. Użyj funkcji stack() i augment()<br />

7. Wykonaj zadania z punktów 5 i 6 iteracyjnie - bez korzystania z funkcji blokowych<br />

⎛<br />

⎜<br />

⎜<br />

⎜<br />

⎜<br />

⎜<br />

⎝<br />

2<br />

0<br />

0<br />

0<br />

0<br />

0<br />

1<br />

0<br />

0<br />

0<br />

0<br />

0<br />

1<br />

0<br />

0<br />

0<br />

0<br />

0<br />

1<br />

0<br />

0<br />

0<br />

0<br />

0<br />

1<br />

⎞<br />

⎟⎟⎟⎟⎟⎠<br />

Rozwiązywanie układów równań liniowych AX=B<br />

ORIGIN := 1<br />

i := 1..<br />

3<br />

A := 0<br />

j := 1..<br />

3<br />

B := 0<br />

UWAGA: zniszczenie poprzednich definicji macierzy<br />

definicja macierzy A i wektora B<br />

A i, j := i j<br />

A<br />

=<br />

⎛<br />

⎜<br />

⎜<br />

⎜<br />

⎝<br />

1<br />

2<br />

3<br />

1<br />

4<br />

9<br />

1<br />

8<br />

27<br />

⎟<br />

⎞<br />

⎟<br />

⎟<br />

⎠<br />

B i := i+<br />

j<br />

B<br />

=<br />

⎛<br />

⎜<br />

⎜<br />

⎜<br />

⎝<br />

4<br />

5<br />

6<br />

⎞ ⎟<br />

⎟<br />

⎟⎠<br />

1. Rozwiązanie poprzez macierz odwrotną (dla małych układów)<br />

sprawdzenie czy macierz nieosobliwa det A 0<br />

A = 12


obliczenie macierzy odwrotnej<br />

A1 := A − 1<br />

A1<br />

=<br />

⎛<br />

⎜<br />

⎜<br />

⎜<br />

⎝<br />

3<br />

−2.5<br />

0.5<br />

−1.5<br />

2<br />

−0.5<br />

0.333<br />

−0.5<br />

0.167<br />

⎟<br />

⎞<br />

⎟<br />

⎟<br />

⎠<br />

X<br />

rozwiązanie<br />

:=<br />

A1⋅B<br />

X<br />

=<br />

⎛<br />

⎜<br />

⎜<br />

⎜<br />

⎝<br />

6.5<br />

−3<br />

0.5<br />

⎟<br />

⎞<br />

⎟<br />

⎟<br />

⎠<br />

UWAGA: wyniki można również obliczyć symboliczn<br />

A1 →<br />

⎛<br />

⎜<br />

⎜<br />

⎜<br />

⎜<br />

⎜<br />

⎜<br />

⎝<br />

3<br />

−5<br />

2<br />

1<br />

2<br />

−3<br />

2<br />

2<br />

−1<br />

2<br />

1<br />

3<br />

−1<br />

2<br />

1<br />

6<br />

⎞<br />

⎟⎟⎟⎟⎟⎟⎠<br />

X →<br />

⎛<br />

⎜<br />

⎜<br />

⎜<br />

⎜<br />

⎜<br />

⎝<br />

13<br />

2<br />

−3<br />

1<br />

2<br />

⎞<br />

⎟<br />

⎟<br />

⎟<br />

⎟<br />

⎟<br />

⎠<br />

2. Rozwiązanie przez zastosowanie funkcji lsolve() (zalecane dla dużych układów)<br />

X<br />

:=<br />

lsolve( A , B)<br />

X<br />

=<br />

⎛<br />

⎜<br />

⎜<br />

⎜<br />

⎝<br />

6.5<br />

−3<br />

0.5<br />

⎟<br />

⎞<br />

⎟<br />

⎟<br />

⎠<br />

X →<br />

⎛<br />

⎜<br />

⎜<br />

⎜<br />

⎜<br />

⎜<br />

⎝<br />

13<br />

2<br />

−3<br />

1<br />

2<br />

⎞<br />

⎟<br />

⎟<br />

⎟<br />

⎟<br />

⎟<br />

⎠<br />

Wektory i macierze funkcyjne<br />

przykład<br />

Mx ( )<br />

:=<br />

⎛<br />

⎜<br />

⎝<br />

sin( x)<br />

cos( x)<br />

x 2 − 2<br />

x<br />

⎞<br />

⎟⎠<br />

M1 ( )<br />

=<br />

⎛<br />

⎜<br />

⎝<br />

0.841<br />

0.54<br />

−1<br />

1<br />

⎞<br />

⎟<br />

⎠<br />

⎛<br />

⎜<br />

⎝<br />

M π 6<br />

⎞<br />

⎟<br />

⎠<br />

→<br />

⎛<br />

⎜<br />

⎜<br />

⎜<br />

⎜<br />

⎝<br />

1<br />

2<br />

1<br />

⋅<br />

2<br />

3<br />

1<br />

⋅<br />

36 π2 − 2<br />

1<br />

6 ⋅π<br />

⎟<br />

⎞<br />

⎟<br />

⎟<br />

⎟<br />

⎠<br />

Ćwiczenie 3<br />

1. Rozwiąż układ równań AX=B:<br />

1 2 3<br />

A :=<br />

⎛<br />

⎜<br />

⎜<br />

⎜<br />

⎝<br />

4<br />

5 6<br />

⎞ ⎟<br />

⎟<br />

⎟⎠<br />

B := 7 dla p = 1, 5 i 9<br />

7 8<br />

p<br />

13<br />

2. Czy istnieje rozwiązanie dla p = 9 i jeśli tak to jak je otrzymać ???<br />

⎛<br />

⎜<br />

⎜<br />

⎜<br />

⎝<br />

1<br />

⎟<br />

⎞<br />

⎟<br />

⎟<br />


3. Wygeneruj losowo (funkcja rnd()) układ równań dla n = 10, 100 i 1000 niewiadomych i<br />

porównaj dokładność rozwiązania.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!