background image

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

background image

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

background image

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+Mpodać 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

:=

background image

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

 

background image

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"

 

background image

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

background image

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

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