sin a
( )
0
0.588
0.951
0.951
0.588
0
0.588
−
0 951
=
a
0
0.628
1.257
1.885
2.513
3.142
3.77
4 398
=
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 "[".
a
i
2
π
⋅
i
n
:=
definicja wektora poprzez zmienną iterowaną
a, [, i, :, 2, Ctrl+Shift+P, i, /, n
i
0 n
..
:=
Tu dla oszczędności miejsca rozrzedzono podział na n=10
odcinków.
n
10
:=
Inny sposób (wektorowy)
0
2
4
6
8
1
1
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
a, =
sin, (, a, ), =
sin a
( )
0
0.309
0.588
0.809
0.951
1
0.951
0.809
0.588
0.309
0
-0.309
-0.588
-0.809
-0.951
-1
=
a
0
0.314
0.628
0.942
1.257
1.571
1.885
2.199
2.513
2.827
3.142
3.456
3.77
4.084
4.398
4.712
=
a, :, 0, przecinek, Ctrl+Shift+P, /, 10, ;średnik,
Ctrl+Shift+P
a
0
π
10
,
2
π
⋅
..
:=
Opis
Wzór
Zmienne zakresowe 1. Tablicowanie funkcji
MATHCAD 2000 - Obliczenia iteracyjne, macierze i wektory
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
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
Wektory i macierze
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ć.
3. Oblicz sumę szeregu
1
n
i
1
i
2
∑
=
dla n = 10, 100, 1000 i 10000. Wyniki przedstaw z
dokładnością 10 cyfr po przecinku. Zwróć uwagę na wolną zbieżność szeregu!!!
Ćwiczenie 1
:
s
1.999023
=
a
1
0.5
0.25
0.125
0.0625
0.03125
0.01563
0.00781
0.00391
0.00195
0.00098
=
s
i
a
i
∑
:=
a
i
1
2
i
:=
Uwaga: do obliczenia powyższej sumy nie warto
definiować wektora a, tylko od razu wpisać wzór
0
n
i
1
2
i
∑
=
1.999023
=
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
0 n
..
:=
n
10
:=
Zmienne zakresowe 2. Sumowanie szeregów
0.951
−
0.951
−
0.588
−
0
4.398
5.027
5.655
6.283
H
1
0
0
0
1
0
0
0
1
=
H
identity 3
( )
:=
I
1
0
0
0
3
0
0
0
7
=
I
diag z
( )
:=
4.
Poprzez generowanie
A, :, Ctrl+M, podać wymiary i wpisać kolejne elementy
A
1
0
2
3
0
4
:=
3.
Ctrl+M lub przycisk Insert Matrix na pasku narzędziowym Matrix.lub w menu Insert
dla macierzy dane czytane są wierszami!!!
B
1
3
5
2
4
6
=
B
i j
,
1
2
3
4
5
6
:=
j
1 2
..
:=
z
1
3
7
=
z
i
1
3
7
:=
lub
w
2
4
6
=
w
i
2 i
⋅
:=
i
1 3
..
:=
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.
A
1
0
0
3
0
5
=
analogicznie
A
2 2
,
3
:=
A
2 3
,
5
:=
A, [, 0, przecinek, 0, :, 1
A
1 1
,
1
:=
Dla macierzy drugi indeks oddzielamy przecinkiem
V
1.23
0
3.5
=
V, [, :, 1.23
V
3
3.5
:=
V
1
1.23
:=
szukanie elementów o największej lub najmniejszej
wartości
min B
( )
1
=
max B
( )
6
=
iloczyn wektorowy (Ctrl+8)
w z
×
10
8
−
2
=
wyciągnięcie n-tej kolumny (Ctrl+6)
A
2
〈 〉
2
3
=
Ile kolumn i wierszy
rows A
( )
2
=
cols A
( )
3
=
Inne rzadziej używane funkcje
wartości własne macierzy
eigenvals D
( )
43.866
0.866
−
0
=
wyznacznik macierzy (tylko dla mac. kwadratowych)
D
0
=
D
1
3
5
8
18
28
8
16
24
=
D
B A
⋅
:=
iloczyn macierzowy
A B
⋅
7
29
10
36
=
suma i różnica macierzy
C A
−
0
2
1
1
5
2
=
A C
+
2
2
5
7
5
10
=
BŁĄD!
niezgodne wymiary macierzy
A B
+
=
A B
+
transpozycja macierzy (Ctrl+1)
C
1
2
3
4
5
6
=
C
B
T
:=
B
1
3
5
2
4
6
=
A
1
0
2
3
0
4
=
Operacje algebraiczne na wektorach i macierzach
A
12
=
sprawdzenie czy macierz nieosobliwa det A <> 0
1. Rozwiązanie poprzez macierz odwrotną (dla małych układów)
B
4
5
6
=
B
i
i j
+
:=
A
1
2
3
1
4
9
1
8
27
=
A
i j
,
i
j
:=
definicja macierzy A i wektora B
UWAGA: zniszczenie poprzednich definicji macierzy
B
0
:=
A
0
:=
j
1 3
..
:=
i
1 3
..
:=
ORIGIN
1
:=
Rozwiązywanie układów równań liniowych AX=B
1. Zdefiniuj na różne sposoby następujące macierze:
A
1
0
0
0
1
0
2
0
0
2
0
0
3
0
3
0
0
0
4
4
1
2
3
4
5
:=
B
2
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0
0
0
1
:=
2. Oblicz A B
+
, A
2
B
−
, A B
⋅
, B A
⋅
3. Oblicz macierz C
A B
−
(
)
2
:=
, 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
Ćwiczenie 2
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"
1. Rozwiąż układ równań AX=B:
A
1
4
7
2
5
8
3
6
p
:=
p
B
1
7
13
:=
dla p = 1, 5 i 9
2. Czy istnieje rozwiązanie dla p = 9 i jeśli tak to jak je otrzymać ???
Ćwiczenie 3
M
π
6
1
2
1
2
3
⋅
1
36
π
2
⋅
2
−
1
6
π
⋅
→
M 1
( )
0.841
0.54
1
−
1
=
M x
( )
sin x
( )
cos x
( )
x
2
2
−
x
:=
Wektory i macierze funkcyjne przykład
X
13
2
3
−
1
2
→
X
6.5
3
−
0.5
=
X
lsolve A B
,
(
)
:=
2. Rozwiązanie przez zastosowanie funkcji lsolve() (zalecane dla dużych układów)
X
13
2
3
−
1
2
→
A1
3
5
−
2
1
2
3
−
2
2
1
−
2
1
3
1
−
2
1
6
→
X
6.5
3
−
0.5
=
X
A1 B
⋅
:=
UWAGA: wyniki można również obliczyć symboliczn
rozwiązanie
A1
3
2.5
−
0.5
1.5
−
2
0.5
−
0.333
0.5
−
0.167
=
A1
A
1
−
:=
obliczenie macierzy odwrotnej
3. Wygeneruj losowo (funkcja rnd()) układ równań dla n = 10, 100 i 1000 niewiadomych i
porównaj dokładność rozwiązania.