You are on page 1of 40

MATHCAD 2000

MATHCAD 2000
1. Wprowadzenie
Mathcad 2000 to profesjonalny program matematyczny sucy do rozwizywania rnego typu
zagadnie inynierskich. Umoliwia prowadzenie zaawansowanych oblicze numerycznych, jak
rwnie przeksztace symbolicznych (m.in. symboliczne obliczenia pochodnych, caek i granic
funkcji), czyli operacji zwizanych z analiz matematyczn.
W porwnaniu do konkurencyjnych produktw Mathcad zajmuje szczegln pozycj. Pomimo
faktu, e w obliczeniach numerycznych jest sabszy od Mathlaba a w obliczeniach symbolicznych
wyranie ustpuje Mathematice, to jednak wyrnia si z pord innych pakietw:
atwoci obsugi,
prac zblion do naturalnych rachunkw prowadzonych na kartce papieru,
symboliczn prezentacj tworzonych wzorw (zgodn z oglnie panujcymi zwyczajami),
wygodnym tworzeniem wykresw,
operowaniem i przeliczaniem jednostek miar,
penym wykorzystaniem graficznego rodowiska systemw Windows.

Obszar roboczy
Mathcad uywa standardowego interfejsu Windows (zob. rysunek powyej), dlatego w niniejszym
kursie pominiemy oczywiste elementy klikologii i klawiszologii stosowanej, a skupimy si na
charakterystycznych dla Mathcada operacjach edycyjnych. Naszym gwnym celem jest zapoznanie
si z ogromnymi moliwociami pakietu i zrozumienie specyfiki oblicze numerycznych (np.
rde powstawania bdw numerycznych).

MATHCAD 2000

Jak wida na przedstawionym rysunku, okno robocze Mathcada zawiera oprcz menu gwnego
rne paski narzdzi, ktre podobnie jak w aplikacjach MS-Office mona dowolnie rozmieszcza na
pulpicie. Korzystanie z tych narzdzi odbywa si w standardowy sposb, to jest poprzez kliknicie
mysz lub zastosowanie odpowiedniego skrtu z klawiatury. Mathcad stosuje specyficzny sposb
edycji wyrae matematycznych, podobny do uywanego w programie Word edytora rwna tu
rwnie operujemy tzw. kursorem dwuwymiarowym, ktry oprcz punktu wstawiania pokazuje
zakres aktywnego argumentu (szczegy podane zostan w przykadach).
Regiony
Wszystkie dane (wzory, wyniki, wykresy) s przechowywane w prostoktnych polach zwanych
regionami. W odrnieniu od komrek Excela mog one zajmowa dowoln pozycj na arkuszu
roboczym. Regiony przeznaczone s przede wszystkim do przechowywania wzorw matematycznych ale mog rwnie zawiera zwyky tekst (komentarze itp.), grafik (np. wykresy funkcji)
oraz obiekty osadzone tworzone przez inne aplikacje Windows.
Naley wspomnie, e sposb rozmieszczenia regionw ma wpyw na kolejno wykonywanych
operacji i widzialno definiowanych przez uytkownika zmiennych, powinien wic by
dopasowany do realizowanego algorytmu obliczeniowego. Mathcad przelicza kolejne regiony w
naturalny sposb, poczwszy od lewego grnego rogu idc w prawo i w d. (Wyjtkiem od tej
zasady s tzw. zmienne globalne, o ktrych dowiemy si z przykadw).

2. Informacje podstawowe przegld


Punkt niniejszy stanowi przegld operatorw, klawiszy funkcyjnych i narzdzi stosowanych w
Mathcadzie. Pomylany zosta jako maa ciga pomocna przy realizacji przykadw prezentowanych na wiczeniach. Zanim zadasz pytanie prowadzcemu zajcia zajrzyj tutaj i sprbuj
samodzielnie znale odpowied. Pamitaj, e podane tu informacje s wybircze, gdy maj
jedynie uatwi pocztki pracy z Mathcadem. Szczegowe i peniejsze informacje naley szuka w
systemie pomocy Resource Center. Zamiast mudnego czytania tego punktu zacznij po prostu
prac z Mathcadem i naucz si efektywnie posugiwa wbudowanym systemem pomocy.
Podstawowe operatory
Wykaz stosowanych w Mathcadzie operatorw i odpowiadajcych im klawiszy funkcyjnych
przedstawiono w zaczniku 1. Wikszo podanych tam skrtw klawiaturowych nie trzeba
pamita gdy mona je zastpi klikniciem odpowiedniej ikonki z paskw narzdziowych lub z
menu gwnego. Operowanie myszk jest jednak wolniejsze i czsto mniej wygodne, dlatego warto
chocia pobienie zapozna si z przedstawion tabel i zapamita kilka kluczowych skrtw
klawiaturowych. Przegld pozostaych klawiszy funkcyjnych mona znale w systemie pomocy
Resource Center (haso: keyboard help).

MATHCAD 2000

Wybrane funkcje wbudowane


System Mathcad dysponuje ogromn liczb wbudowanych funkcji matematycznych, takich jak:
funkcje trygonometryczne,
sin, cos, tan, cot
wykadnicze
exp, log, ln
wektorowe,
max, min, matrix, diag, rows, cols
statystyczne,
normal, gamma.
Istniej ponadto funkcje-procedury dedykowane do rozwizywania konkretnych zagadnie. Ich
uywanie jest ju trudniejsze i wymaga pewnej wiedzy z metod numerycznych, jednak im wanie
naley powici wicej czasu aby mc w peni korzysta z potencjau obliczeniowego Mathcada.
Na pocztek podajemy tylko dwa przykady:
lsolve(A, v) rozwizywanie ukadu rwna liniowych,
find(x1, x2, ...) poszukiwanie rozwizania rwna nieliniowych.
Predefiniowane zmienne globalne
= 3.14159...
e = 2.71828...
ORIGIN = 0 definiuje pocztkowy indeks pierwszego elementu wektorw i macierzy
TOL = 10-3 dopuszczalny bd wzgldny przy obliczaniu caek, rozwizywaniu rwna, itp.
Definiowanie wasnych zmiennych i funkcji
Kluczow rol w obliczeniach prowadzonych w Mathcadzie odgrywa moliwo definiowania
wasnych zmiennych i funkcji. Raz zdefiniowan zmienn lub funkcj mona uywa wielokrotnie
upraszczajc i zwikszajc przejrzysto oblicze. Zmienne (lub funkcje) mog mie zasig lokalny
lub globalny. Zmienne lokalne widziane s na prawo i poniej definicji, natomiast zmienne
globalne widziane s w caym arkuszu niezalenie od miejsca ich definicji. Definicja zmiennej
lokalnej ma posta:
nazwa_zmiennej_lokalnej := warto (lub oglniej - wyraenie),
a zmiennej globalnej:
nazwa_zmiennej_globalnej warto.
Operatory := i uzyskujemy poprzez wpisanie z klawiatury odpowiednio dwukropka : lub
tyldy ~ Mathcad automatycznie przeksztaca wpisane znaki do postaci wywietlanej powyej.
Wartoci zmiennych lokalnych mona zmienia w trakcie oblicze zmienna moe przechowywa
rne wartoci w kolejnych etapach oblicze nowa definicja niszczy star.
Uwaga: Mathcad rozrnia wielkie i mae litery a nawet rodzaj zastosowanej czcionki. Na przykad
zmienne: abc, ABC oraz abc oznaczaj trzy rne wielkoci.
Obliczenia symboliczne kontra numeryczne
Mathcad dysponuje dwoma niezalenymi mechanizmami przetwarzania danych:
obliczenia numeryczne stosowane w typowych zagadnieniach inynierskich, gdzie
gwnym celem jest znalezienie rozwizania w postaci konkretnych wartoci liczbowych,
wyraenie = wynik w postaci liczby
(klaw. =)
obliczenia symboliczne stosowane przede wszystkim w analizie matematycznej, w ktrej (o
ile to moliwe) staramy si uzyska rozwizanie w postaci zwizego wzoru matematycznego
wyraenie wynik w postaci wzoru
(klaw. Ctrl+. lub Shift+Ctrl+.)

MATHCAD 2000

W wielu przypadkach moemy stosowa obydwie metody zamiennie lub rwnolegle, jednak
istniej klasy zagadnie do rozwizania ktrych prowadzi tylko jedna z nich. Na przykad pochodne
lub caki nieoznaczone obliczamy w sposb symboliczny, podczas gdy rozwizanie rwnania
przestpnego moemy (w oglnym przypadku) przeprowadzi jedynie na drodze numerycznej.
Warto zauway, e obliczenia symboliczne pozwalaj na lepsz ocen jakociow wynikw, ale s
kosztowne i nie zawsze moliwe do przeprowadzenia.
Jednostki miar
Jedn z wyrniajcych cech Mathcada jest automatyczne przeliczanie rnych jednostek miar.
Mathcad rozpoznaje systemy miar m.in.: SI (m, s, kg,...), CGI (cm, sec, gm,...), US (ft, sec, lb,...).
Jednostk miary dodajemy bezporednio po liczbie (lub wyraeniu) z uyciem lub bez operatora
mnoenia (szczegy podane bd w przykadach). Moemy definiowa wasne jednostki miar
jako pochodne od miar pierwotnych. Wykaz predefiniowanych miar i odpowiadajcych im skrtw
znale mona w Resource Center (haso: units and dimensions).
Liczby zespolone
Mathcad stosuje powszechn notacj liczb zespolonych: a + bi, lub a + bj. Liter i lub j
naley poda podobnie jak jednostk miary zaraz po liczbie (lub wyraeniu), jednak nie mona ich
stosowa oddzielnie, tzn. litera i (lub j) musi by poprzedzona wyraeniem, w szczeglnym
przypadku liczb urojon i zapisujemy jako 1i. Mathcad automatycznie rozpoznaje zespolone
argumenty w operatorach i funkcjach oraz stosuje zespolone odpowiedniki tych funkcji.
Zmienne zakresowe obliczenia iteracyjne
Szczeglnym typem zmiennych w Mathcadzie s zmienne zakresowe od..do, suce przede
wszystkim do oblicze cyklicznych lub iteracyjnych. Typowym ich zastosowaniem jest tablicowanie wartoci funkcji lub obliczanie sum szeregw. Maj rwnie zastosowanie w rnego
rodzaju operacjach macierzowych. Zmienne zakresowe definiujemy w postaci:
x := x1, x2 .. x3

(zamiast dwch kropek .. uywamy rednika ;)

gdzie x jest nazw definiowanej zmiennej, x1 i x3 oznaczaj pocztek i koniec zakresu, a x2


(opcjonalne) okrela w sposb poredni przyrost kolejnych elementw cigu. Na przykad do
stablicowania funkcji f(x) w przedziale od 1 do 5 co 0.2 wygodnie jest zdefiniowa nastpujc
zmienn zakresow:
x := 1, 1.2 .. 5.
Po wpisaniu formuy f(x) = Mathcad poda wszystkie wyniki (dla kolejnych x) w postaci tablicy.
Wektory i macierze
Wiele zagadnie matematycznych zapisa mona w zwartej notacji macierzowej. Mathcad
umoliwia definiowanie wektorw i macierzy na wiele rnych sposobw. Typowe operacje
algebraiczne jak dodawanie czy mnoenie macierzy zapisujemy w naturalny sposb, korzystajc ze
standardowych operatorw +, -, *, itd. Jednak istnieje wiele specyficznych operatorw majcych
zastosowanie jedynie dla zmiennych wektorowych lub macierzowych. Najwaniejsze z nich zostay
przedstawione w zaczniku 1, w sekcji operacje macierzowe. Szczegowe informacje dotyczce
problematyki notacji macierzowej w Mathcadzie zostan pokazane w przykadach.
Uwaga: Domylnie, pocztkowy indeks wektorw i macierzy w Mathcadzie zaczyna si od 0 a nie
od 1, mona go zmieni poprzez przedefiniowanie wbudowanej zmiennej globalnej ORIGIN. Aby
pocztkowe indeksy wektorw i macierzy zaczynay si od 1 naley na pocztku dokumentu wpisa
nastpujc definicj: ORIGIN := 1 lub zmieni warto tej zmiennej w menu Math/Options.

MATHCAD 2000

Wykresy funkcji
Wykresy w Mathcadzie tworzymy z menu
Insert/Graph lub z paska narzdziowego Graph.
Na jednym wykresie mona przedstawi kilka
funkcji oraz dodawa punkty kontrolne lub
asymptoty (rys. obok). Kolejne funkcje dodajemy
poprzez wpisanie przecinka w polu opisu funkcji,
mog by one zalene od jednej wsplnej zmiennej
lub kada z funkcji moe mie swj niezaleny
argument. Formatowanie wykresu odbywa si po
jego podwjnym klikniciu i wybraniu odpowiednich opcji z okienka dialogowego.

2
2

tan( x)
sin( x)

cos( x)
2

Pola tekstowe
Pola tekstowe su do dokumentowania prowadzonych oblicze (komentarze, objanienia, itp.).
Domylnie kady nowo tworzony region zawiera rwnanie, jednak po wpisaniu pierwszego wyrazu
i spacji automatycznie zmienia si w region tekstowy. Pewniejszym sposobem jest zastosowanie
cudzysowu [] na pocztku wpisywanego tekstu jest to sygna dla Mathcada, e chcemy
wpisywa tekst a nie wzr. Teksty moemy formatowa jak w zwykych edytorach tekstu lub
porednio poprzez zastosowanie styli (podobnie jak w Wordzie).
Formatowanie danych i wynikw
Formatowanie rwna i wynikw uzyskujemy z menu Format/Equation i Format/Result. Za
pomoc tych funkcji moemy ustawi rodzaj i wielko czcionki lub ilo cyfr wywietlanych w
wynikach.
Pozycjonowanie regionw
Przejrzysto tworzonej w Mathcadzie dokumentacji uzyskamy poprzez waciwe rozmieszczenie
regionw, tak aby nie zachodziy na siebie i byy odpowiednio wyrwnane. Pomocne w tym celu s
funkcje z menu Format/Separate_Regions i Format/Align_Regions.
Tematy pominite w niniejszym opracowaniu
W niniejszym przegldzie nie ma miejsca na prezentacj innych funkcji Mathcada. Pominite
zostay takie tematy jak osadzanie obiektw i dynamiczna wymiana danych czy wsppraca z
pakietami pomocniczymi AxumLE i SmartSketch. Zainteresowanych odsyamy jak zwykle do
Resource Center.

MATHCAD 2000

Litery greckie,
klaw. edycyjne

Operatory
macierzowe

Pochodne, caki, granice

Operatory
logiczne

Operatory arytmetyczne

Definicja i
obliczanie

Zacznik 1:

Podstawowe operatory Mathcada


Klawisz

Operacja

: dwukropek
~ tylda
=
Ctrl+. kropka
Ctrl+Shift+.
+
*
/
Ctrl+/
Ctrl+Enter
^
(, ), apostrof
\
Ctrl+\
|
"
!
<
>
Ctrl+9
Ctrl+0
Ctrl+=
Ctrl+3
?
Ctrl+?
&
Ctrl+I
Ctrl+L
Ctrl+A
Ctrl+B
$
Ctrl+4
Ctrl+Shift+4
#
Ctrl+Shift+3
, przecinek
; rednik
. kropka
[
Ctrl+8
Ctrl+1
Ctrl+6
^-1
Ctrl+- minus
Znak + Ctrl+G
Ctrl+Shift+P
Ctrl+Shift+Z
Insert
Spacja
Tab, Shift+Tab
Ctrl+D

:= definicja zmiennej lub funkcji lokalnej


definicja globalna
numeryczne obliczenie wyraenia
symboliczne obliczenie wyraenia
symboliczne obliczanie z kluczem
dodawanie
odejmowanie lub negacja
mnoenie
dzielenie
dzielenie w wierszu
dodawanie z przeniesieniem do nastpnego wiersza
potgowanie
nawiasy: (lewy, )prawy, dwustronny-automatyczny
pierwiastek kwadratowy
pierwiastek dowolnego stopnia
warto bezwzgldna lub wyznacznik macierzy
liczba sprzona zespolona
silnia (n!)
mniejszy
wikszy
mniejszy lub rwny
wikszy lub rwny
rwny
nie rwny
pochodna pierwszego rzdu
pochodna dowolnego rzdu
caka oznaczona
caka nieoznaczona
granica dwustronna
granica prawostronna
granica lewostronna
suma po zmiennej iteracyjnej
suma elementw wektora
suma od..do
iloczyn po zmiennej iteracyjnej
iloczyn od..do
oddzielanie argumentw funkcji lub elementw wektora
definicja zakresu (zmiennej iteracyjnej)
separator liczb dziesitnych lub indeks dolny ozdobny (zwyky)
indeks elementu wektora
iloczyn wektorowy
transpozycja wektora lub macierzy
kolumna macierzy
macierz odwrotna
operator wektoryzacji oblicze
litery greckie (alfa, beta, ...)
liczba pi
znak nieskoczonoci
przeczenie punktu wstawiania (pocztek-koniec)
poszerzenie aktywnego wyraenia
aktywacja kolejnego lub poprzedniego pola
usunicie aktywnego regionu

MATHCAD 2000/2001 - Proste Obliczenia


Inteligentny kalkulator

(i troch o edycji rwna)

wzr

klawiatura

1 + 2 3 = 7

1, +, 2, *, 3, =

( 1 + 2) 3 = 9

1, +, 2, spacja, *, 3, =

1
6
1
6

1
4
1
4

= 0.5

12
1

12

1, /, 6, spacja, +, 1, /, 4, spacja, +, 1, /, 12, =

1, /, 6, spacja, +, 1, /, 4, spacja, +, 1, /, 12, Ctrl+.

6 2

sin

sin(, Ctrl+Shift+P, /, 6, ),Ctrl+.

Definiownie zmiennych i funkcji


wzr

klawiatura

a := 1

b := 5

c := 6

a, : dwukropek, 1

a + b = 4

a, +, b, =

a + b c = 29

a, +, b, *, c, =

(itd))

f ( x) := a x + b x + c

f(x), : dwukropek, a, *, x, ^, 2, spacja, +, b, *, x, +, c

f(1) = 2

f(1)=

f(0) = 6

Rozwizanie rwnania kwadratowego f(x) = 0


2

:= b 4a c
x1 :=

x2 :=

b
2a
b +
2a

=1

D, Ctrl+G, :, b^2, spacja, -4a*c

x1 = 2

x1, :, -, b, -, \, D, Ctrl+G, spacja, spacja, /, 2a,

x2 = 3

jak wyej

Bardziej zaawansowany sposb rozwizania

x1, =

f ( x) = 0 solve , x

2

3

f(x), Ctrl+=, 0, Ctrl+Shift+., solve, przecinek, x, Enter

Tworzenie wykresu funkcji


wykres

opis czynnoci
2

1. z klawiatury Shift+@ lub myszk menu


Insert/Graph/X-Y Plot
2. w pole opisu funkcji wpisa f(x)
3. w pole argumentu wpisa x
4. w polach zakresu argumentu poda 1 i 4
5. sformatowa wykres przez podwjne kliknicie
i wybranie odpowiednich opcji np.:
X-Y Axes / Axes Style / Crossed

1
f ( x)
1

1
x

tan ( x)
sin( x)
cos( x)

Jednostki miar
stosowanie miar

klawiatura

lub z menu

Insert/Unit

1km + 20m + 34cm = 1020.34 m

1, km, +, 20, m, +, 34, cm, =

1ft = 30.48 cm

1, ft, =, cm

(w polu jednostki wyniku)

Przykad: Na ciao o pewnej masie dziaa sia F = 20kN. Oblicz

jego mas jeeli wiadomo, e przyspieszenie wynosi a = 10m/s2.


kN := 1000N

definicja wasnej jadnostki miar

F := 20kN

a := 10

m
2

dane

s
m :=

m = 2000 kg

wynik

Uwaga: Definicja zmiennej o takiej samej nazwie jak jednostka miar zasania jej znaczenie
x := 2km

x = 2000 m

km := 123
x := 2km

tu jest OK
definicja lokalnej zmiennej

x = 246

teraz km ju nie oznacza 1 kilometr a liczb 123

10

MATHCAD 2000/2001 - Obliczenia iteracyjne, macierze i wektory


Zmienne zakresowe 1. Tablicowanie funkcji
Wzr

Opis

a := 0 ,

10

.. 2

a =

a, :, 0, przecinek, Ctrl+Shift+P, /, 10, ;rednik, Ctrl+Shift+P

sin( a) =
0

0.314

0.309

0.628

0.588

0.942

0.809

1.257

0.951

1.571

1.885

0.951

2.199

0.809

2.513

0.588

2.827

0.309

3.142

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 wywietli kolejne elementy tablicy naley j
uaktywni (poprzez kliknicie) i przewin do szukanego elementu.
Mona rwnie zwikszy liczb wywietlanych elementw tablicy
rozcigajc jej doln krawd!!!
Poniej przedstawiamy wykres stablicowanej funkcji

Inny sposb (wektorowy)


n := 10

Tu dla oszczdnoci miejsca rozrzedzono podzia na n=10 odcinkw.

i := 0 .. n
a := 2
i

i
n

definicja wektora poprzez zmienn iterowan


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

11

a=

Teraz wyniki s nie tablicami a wektorami!!!

0.628

0.588

1.257

0.951

1.885

0.951

2.513

0.588

3.142

3.77

6 -0.588

4.398

7 -0.951

5.027

8 -0.951

5.655

10 6.283

sin( a) =

I tak przy okazji doszlimy do naturalnej definicji wektora


poprzez iterowan definicje kolejnych jego elementw.
Dostp do kolejnych elementw wektora uzyskujemy
stosujc operator indeksu "[".

9 -0.588
10

Zmienne zakresowe 2. Sumowanie szeregw


n := 10
i := 0 .. n
a :=
i

1
2

s :=

ai
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 powyszej sumy nie warto definiowa wektora


a, tylko od razu wpisa wzr
n

1
i

= 1.999023

i =0 2

co zaoszczdza zuycie pamici i zwiksza szybko


oblicze. (przedstawiony po lewej sposb oblicze jest
nieefektywny - pokazano go jedynie dla celw
dydaktycznych).

Wektory i macierze
ORIGIN := 1

UWAGA: pocztkowy indeks wektorw i macierzy


to 0 a nie 1. To domylne zachowanie Mathcada
moemy zmieni definiuj zmienn ORIGIN

Rne sposoby definiowania wektorw i macierzy

1. wystarczy okreli kilka wyrazw wektora lub macierzy (pozostae elementy przyjm domylne wartoci zerowe).
Wymiary wektora-macierzy okrelaj maksymalne indeksy uyte do tej pory:

12

V := 1.23

V := 3.5

V, [, :, 1.23

1.23
V= 0

3.5
Dla macierzy drugi indeks oddzielamy przecinkiem
A

:= 1

:= 5

1, 1
2, 3

A=

A, [, 0, przecinek, 0, :, 1
A

2, 2

:= 3

analogicznie

1 0 0

0 3 5

2. mona zastosowa zmienne zakresowe i definicj wektora (macierzy) za pomoc wzoru iteracyjnego (jak

przedstawiono przy omawianiu zmiennych zakresowych) lub podajc bezporednio kolejne elementy wektora
oddzielone przecinkami.

i := 1 .. 3
w := 2 i
i

2
w = 4

6

j := 1 .. 2
B

i, j

lub

z :=
i

1
3
7

1
z = 3

7

:=

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 narzdziowym Matrix.lub w menu Insert
1 2 0

0 3 4

A :=

4. Poprzez generowanie

A, :, Ctrl+M, poda wymiary i wpisa kolejne elementy

13

1 0 0
I = 0 3 0

0 0 7

I := diag( z)

1 0 0
H = 0 1 0

0 0 1

H := identity ( 3 )

Operacje algebraiczne na wektorach i macierzach

1 2
B = 3 4

5 6

1 2 0
A=

0 3 4

C := B

C=

1 3 5

2 4 6

A+ B=

A+ C=

A B =

transpozycja macierzy (Ctrl+1)

BD! niezgodne wymiary macierzy

2 5 5

2 7 10

CA=

7 10

29 36

D := B A

0 1 5

2 1 2

suma i rnica 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

wartoci wasne macierzy

Inne rzadziej uywane funkcje


cols( A) = 3
2 2
A =
3

rows( A) = 2

Ile kolumn i wierszy

wycignicie n-tej kolumny (Ctrl+6)

14

10
w z = 8

2

iloczyn wektorowy (Ctrl+8)

max( B) = 6

min( B) = 1

szukanie elementw o najwikszej lub najmniejszej wartoci

Operacje na blokach
Su do tego specjalne funkcje blokowe:
submatrix() - wycignicie bloku z macierzy
augment() - sklejenie dwch macierzy w poziomie
stack() - sklejenie macierzy w pionie
Opis poszukaj samodzielnie w "Helpie" lub "Recource Center"

Wektory i macierze funkcyjne

przykad

sin( x) x2 2

cos( x) x

M ( x) :=

M( 1) =

0.841 1

0.54 1

1 2
1
2

36
2

1
6 1 3

6
2

15

MATHCAD 2000/2001 - Obliczenia symboliczne


Przeksztacenia algebraiczne
UWAGA: Obliczenia symboliczne mona wywoywa na dwa rne sposoby:
1. poprzez menu Symbolics
2. poprzez przyciski paska narzdziowego Symbolic.
Pierwszy sposb, cho moe troch atwiejszy w uyciu, jest o wiele mniej elastyczny, dlatego w niniejszym
opracowaniu ograniczamy si do podania przykadw z zastosowaniem paska narzdziowego Symbolic (mona te
korzysta z klawiatury ale wygodniejsze w tym przypadku jest uywanie myszy).

Wzr

Opis
3

f ( x) :=

( x i)

definicja funkcji

i=1

f ( x) ( x 1 ) ( x 2 ) ( x 3 )

zwyke obliczenie symboliczne (f(x), Ctrl+.)

UWAGA:
X := 4

jeeli zmienna X zostaa zdefiniowana (tak jak tutaj)

f ( X) 6

to w wyraeniach symbolicznych bdzie niestety uywana jej


warto a nie symbol X

X := X

Aby zapobiec takiej sytuacji naley zastosowa


rekurencyjn definicj zmiennej

f ( X) ( X 1 ) ( X 2 ) ( X 3 )

teraz znw jest OK!!!!

Sowa kluczowe - modyfikatory oblicze symbolicznych


W wielu przypadkach standardowy operator oblicze symbolicznych -> jest niewystarczajcy i musimy
"podpowiedzie" Mathcadowi w jakiej postaci chcemy otrzyma wzr. Poniej przedstawiamy list najczciej
stosowanych modyfikatorw (zob. pasek Symbolic)
expand - rozwinicie na skadniki
3

f ( x) expand x 6 x + 11 x 6
factor - faktoryzacja - rozkad na czynniki
3

x 6 x + 11 x 6 factor ( x 1 ) ( x 2 ) ( x 3 )

16

x2

1
x1

factor

( x 2) ( x 1 )

simplify - upro wyraenie


2

x 1
x1

(x2 1)

Jeeli mog wystpi potencjalne osobliwoci to Mathcad nie


upraszcza wyrae automatycznie

(x 1)

x 1
x1

simplify x + 1

Musimy mu podpowiedzie eby stara si moliwie najlepiej


uproci wyraenie

Materia dodatkowy
Czasami naley pomc jeszcze bardziej poprzez ograniczenie dziedziny
simplify, assume=real - mwi e zmienne s liczbami rzeczywistymi
simplify, assume=RealRange(a,b) - lub ograniczone w pewnym przedziale
1

( 2)

x x

tu nie wie co z tym chcemy zrobi

x simplify csgn( x) x

tu upraszczamy ale otrzymujemy rozwizanie w


dziedzinie zespolonej

x simplify , assume = real signum( x) x

dla liczb rzeczywistych - ju bez kopotw

x simplify , assume = RealRange( 0 , ) x

podpowiadamy, e x jest nieujemne co pozwala


jeszcze lepiej uproci wyraenie

Podobnie, ale bardziej precyzyjnie dziaa klucz assume bo pozwala okrela dziedzin pojedynczej zmiennej. Przykad
podajemy na kocu tego punktu.

Do przeksztace trygonometrycznych przydatny jest modyfikator


simplify, trig - wykorzystaj ogolnie znane tosamoci trygonometryczne
3

sin( x) + sin( x) cos( x) simplify , trig sin( x)


float,m - podaj wynik w postaci liczb rzeczywistych z m cyframi znaczcymi
liczba m moe by z zakresu 1 m 250 !!!
przykad - wyznaczenie 50 cyfry po przecinku liczby
float , 51 3.1415926535897932385

17

Materia dodatkowy
coeffs - podaj wspczynniki wielomianu
f ( x) ( x 1 ) ( x 2 ) ( x 3 )
porwnaj wspczynniki poniej

6
11
f ( x) coeffs , x
6
1

f ( x) expand , x x 6 x + 11 x 6

Pozostae modyfikatory stosowane s w bardziej zaawansowanych obliczeniach. Cz z nich poznamy w dalszej


czci materiau.
Przydatnym skrtem klawiaturowym jest Ctrl+Shift+. (drugi przycisk), ktry pozwala na wprowadzanie dowolnych
modyfikatorw z klawiatury - trzeba jednak wiedze co wpisa.
UWAGA: w jednym regionie mona zrealizowa seri oblicze symbolicznych po kolei lub poprzez grupowanie
modyfikatorw

x factor ( x ) ( x + ) float , 3 ( x 3.14) ( x + 3.14)

grupowanie - klikaj kolejne modyfikatory i


dopiero potem je redaguj

factor

( x 3.14) ( x + 3.14)
float , 3

Materia dodatkowy
assume X=real - X jest liczb rzeczywist
assume X=RealRange(a,b) - X jest liczb rzeczywist z przedziau (a,b)

assume , x = RealRange( , 0 )
x
simplify

upro wyraenie przy zaoeniu e x 0

Granice, pochodne i caki


Wzr
lim
x0

Opis
sin( x)

2
d 3
x + sin( x) 3 x + cos( x)
dx

Ctrl+L, sin(x)/x, tab, x, tab, 0, Ctrl+.

Shift+/, 'apostrof, x^3, spacja, +, sin(x), tab, x, Ctrl+.

18

dx

1
2

Shift+7, e^-x^2, tab, x, tab, 0, tab, Ctrl+Shift+Z, Ctrl+.

series,X=x0,N - rozwi funkcj w szereg Taylora


N

rozwinicie wzgldem X w otoczeniu punktu x0 do rzdu X

sin( x) series , x , 10 x

1 3
1
1
1
5
7
9
x +
x
x +
x
6
120
5040
362880

Poniewa temat jest dobrze znany a caa zabawa polega na wywoywaniu odpowiednich symboli z paska
narzdziowego "Calculus" lub uywaniu odpowiednich skrtw klawiaturowych przechodzimy do wicze.

Obliczenia symboliczne na macierzach


ORIGIN := 1
d
b

(
a
d
b
c
)
(
a
d

b c)
1
A

a
c

( a d b c) ( a d b c)

a b

A :=

c d

A a d b c
Przy okazji pokazujemy przykad zastosowania modyfikatora substitute
subtitute,wyr1=wyr2 - podstaw wyr2 zamiast wyr1

b
d

DET
DET
1
A
substitute , a d b c = DET

a
c

DET DET
inny przykad

cos( x) sin( x)

sin( x) cos( x)

C( x) :=

C ( x) cos( x) + sin( x)

C ( x) simplify 1

macierz funkcyjna

tu te czsto trzeba dopomc w upraszczaniu wyrae

teraz OK

19

C( x)

simplify

cos( x) sin( x)

sin( x) cos( x)

C( )
T

cos( ) sin( )

sin( ) cos( )

Jeeli potrafimy obliczy symbolicznie macierz odwrotn, to tym samym potrafimy symbolicznie rozwizywa liniowe
ukady rwna.

Rozwizywanie rwna z jedn niewiadom


solve, x - znajd rozwizanie rwnania wzgldem zmiennej x
UWAGA: w rwnaniach nie uywamy zwykago znaku = tylko Ctrl+=. Mona nie podawa prawej strony jeli jest
=0 ale zmniejsza to czytelno zapisu, dlatego nie polecamy tego uproszczenia

1 b + b 2 4 a c
2 a
2
a x + b x + c = 0 solve , x

1
2
2 a b b 4 a c

Czsto wynik jest na tyle skomplikowany, e mathcad nie potrafi poda rozwizania w zwizej postaci, jeli wynik
zaley od kilku parametrw. Na przykad, jeeli podobn do opisanej wyej metody zastosujemy do oglnego
rwnania 3-go stopnia to natrafimy na problem!!! Duo atwiej otrzyma rozwizanie, gdy operujemy na konkretnych
liczbach, ale wynik te moe by bardzo "rozlazy".

a x + b x + c x + d = 0 solve , x

20

3
5
1
2

( 35 + 15 6 ) +

3
3
1

3
3 ( 35 + 15 6 )

1
1

3
3
5
2
1
1
3
2
+ i 3 ( 35 + 15 6 )
x + 2x + 3x + 4 = 0 solve , x 6 ( 35 + 15 6 )
3
2
1

3
3

6 ( 35 + 15 6 )
3 ( 35 +

1
1

1
3
3
5
2
1
1
i 3 ( 35 + 15 6 )
( 35 + 15 6 )
3
2
1
3
6
3

6 ( 35 + 15 6 )
3 ( 35 +

Jeeli wystarczaj nam konkretne wartoci liczbowe, to warto dodatkowo zastosowa modyfikator float,N

x + 2x + 3x + 4 = 0

1.65062

solve , x

.174686 1.54687 i
float , 6

.174686 + 1.54687 i

Gdy mamy rwnanie przestpne to nie jest mozliwe otrzymanie zwizego rozwizania w postaci wzoru. W takich
sytuacjach Mathcad podaje rozwizanie numeryczne z 20 cyframi znaczcymi. Jeeli nie potrzebujemy a takiej
dokadnoci to znw przydatny jest modyfikator float,N

Przykad: Znale punkty przecicia wykresw


y = cos(x) i y = x

graficzna ilustracja do tego przykadu


5

cos( x) = x solve , x .73908513321516064166

cos( x)
x

cos( x) = x

solve , x
.739085
float , 6

5
x

Niestety dla rwna przestpnych (nawet najprostszych) Mathcad podaje pierwsze znalezione rozwizanie.

21

Nieco zmodyfikowane zadanie ma trzy


pierwiastki, ale Mathcad podaje tylko jedno

graficzna ilustracja do tego przykadu

cos( x)

cos( x) = 0.3x solve , x 1.2019131636661846248

0.3x

podobnie nie ma co liczy aby Mathcad poda


nam rodzin rozwiza np. dla funkcji okresowych

cos( x) = 0 solve , x

1
2

a nie

+ k

WNIOSEK: Nie wszystko rozwie za nas Mathcad automatycznie. W wielu przypadkach musimy mu umiejtnie
pomaga, co wymaga od nas dostatecznego rozumienia zagadnienia i znajomoci matematyki w tym zakresie. Musimy
te pozna nieco bardziej zaawansowane techniki w Mathcadzie. Do problemu wrcimy w kolejnych wiczeniach.
Aby liczy na sukces to niestety trzeba matm cho troch zna.

Rozwizywanie nierwnoci - przykad


x1
x2

>

x+ 3
x+ 1

solve , x

14

x 1

To rozwizanie czytamy nastpujco:

x < 1

( 2 < x) ( x < 5 )

x ( , 1) ( 2, 5)

Jak wida z przedstawionych wykresw


Mathcad dobrze wywiza si z tego zadania.

x 2
x+ 3
x+ 1

Na piechot mielibymy troch liczenia: 3


rne rwnania kwadratowe (tu akurat dwa z
nich s tylko liniowe) dla rnych zakresw
zmiennej x, a po rozwiazaniu jeszcze
weryfikacja pierwiastkw, czy zawieraj si w
zaoonym przedziale - w sumie mudne i
podatne na bedy rachunki, ktrych mona
unikn stosujc Mathcada.

22

MATHCAD 2000/2001 - Rozwizywanie rwna,


optymalizacja, wykresy 3D
Wprowadzenie
Jak zauwaylimy w poprzednich wiczeniach Mathcad dysponuje do silnym "solverem" symbo- licznym. Tym
niemniej przy rozwizywaniu zoonych problemw, szczeglnie przy rozwizywaniu rwna przestpnych, musimy
zastosowa bardziej zaawansowane techniki obliczeniowe i umiejtnie podpowiada Mathcadowi poprzez wybranie
odpowiedniej do danej klasy zagadnie metody. Wymaga to oczywicie pewnego dowiadczenia w posugiwaniu si
Mathcadem jak rwnie elementarnej wiedzy z metod numerycznych. Rozwizania rwna (lub ukadw rwna)
przestpnych w oglnym przypadku nie da si przedstawi w postaci zwartego wzoru matematycznego i musimy
zadowoli si wynikiem numerycznym.
W zalenoci od klasy problemu stosujemy rne metody rozwizywania rwna. Czsto te stosujemy rne metody
zamiennie lub rwnolegle co pozwala na weryfikacj uzyskanego rozwizania. Poniej przedstawiono moliwe
strategie oblicze:
1. Realizacja wasnego algorytmu - warto wspomnie o tym, gdy jeli wiemy co i jak policzy to nie musimy polega
na zawiych algorytmach wbudowanych w Mathcada, ponadto w wyjtkowych sytuacjach moe to by jedyna
lub najskuteczniejsza metoda oblicze.
2. Metoda graficzna - stosowana gwnie jako weryfikator wynikw i podpowiadacz tzw. punktw startowych w
metodach numerycznych. Stanowi ogromn pomoc i jest zawsze zalecana.
3. Solver symboliczny (solve, x ->) - bardzo wygodny i prosty w uyciu, pozwalajcy na uzyskanie rozwizania w
postaci parametrycznej (wzr a nie liczba), jednak nie zawsze prowadzi do poszu- kiwanego rozwizania. Tym
niemniej jest to podstawowe narzdzie, od ktrego zawsze moemy rozpocz nasze poszukiwania i dopiero w
razie niepowodze zastosowa inne metody.
4. Blok "Given" - to najbardziej wszechstronny sposb rozwizywania rwna, a przede wszystkim ukadw rwna
nieliniowych z kilkoma niewiadomymi. Blok given stosuje si rwnie w rozwi- zywaniu rwna rniczkowych
(zwyczajnych lub czstkowych) oraz zagadnie optymalizacji.
5. Zastosowanie specjalizowanych procedur numerycznych - najbardziej efektywny sposb rozwizania, pod
warunkiem zastosowania waciwej procedury do danej klasy problemu.
Solver symboliczny (solve, x ->) z p.3 poznalimy ju na poprzednich wiczeniach. Nadaje si przede wszystkim do
rozwizywania rwna z jedn niewiadom, ale mona go rwnie wykorzysta w bardziej zoonych zagadnieniach i
przy pewnych "sztuczkach" usprawni proces przetwarzania danych. Dzisiejsze zajcia powicone jednak bd
przede wszystkim metodom z punktw 4 i 5.
Warto zauway, e z problematyk rozwizywania rwna zetknlimy si ju w poprzednich wiczeniach a pewne
tematy zostan tu powtrzone dla usystematyzowania wiedzy. Ju od pierwszych zaj zaczynalimy rozwizywa
proste rwnania algebraiczne lub ukady rwna liniowych i stosowalimy a) wasne algorytmy, b) solver
symboliczny lub c) specjalizowan procedur lsolve(A,B). Teraz nadszed waciwy moment aby to wszystko
uporzdkowa. Podzielimy tematyk na kategorie w zalenoci od rodzaju zagadnienia.

23

Rwnania z jedn niewiadom


Rwnania algebraiczne, wielomiany
Tu wystarczajco skutecznym narzdziem jest solver symboliczny (solve, x->) ale dla wielomianw mamy alternatyw
w postaci specjalnej funkcji polyroots(v), szczeglnie zalecana dla wielomianw wyszego stopnia. Ponadto atwiej
przechowa rozwizanie do dalszych przelicze.

n := 5
n

W( x) :=

wiadomie wybieramy prosty wielomian, dla ktrego znamy pierwiastki


aby atwiej przeledzi dalsze obliczenia

( x i)

i =1

W( x) ( x 1 ) ( x 2 ) ( x 3 ) ( x 4 ) ( x 5 )
5

W( x) expand x 15 x + 85 x 225 x + 274 x 120

1
2

W( x) = 0 solve , x 3
4

5

Solver bez problemu znajduje rozwizanie.


Ale jak przechowa je do dalszych oblicze?
(dla krtkich jednorazowych oblicze moemy ratowa si
skopiowaniem wyniku poprzez schowek Windows ale na dusz met
jest to niewygodne, bo przy kadej zmianie wyniku musimy od nowa
kopiowa!!!)

Moemy zastosowa nastpujc sztuczk: przed wpisaniem rwnania definiujemy zmienn, w ktrej przechowamy
rozwizanie (tu bdzie to wektor p). Potem ju atwo moemy wyciga poszczeglne pierwiastki do dalszych
oblicze.

1
2

p := ( W( x) = 0 ) solve , x 3
4

5

p =2
1

( 1) = 0

Wp

1
2

p = 3
4

5

tu ORIGIN=0 dlatego p1 to drugi element wektora

Aby zastosowa funkcj polyroots(v) musimy mie wektor wspczynnikw wielomianu - moemy go oczywicie
policzy odpowiednim algorytmem, ale na razie aby nie zaciemnia istoty tematu wpiszemy go rcznie.

24

wpisujemy dla wygody wektor wierszowy i


transponujemy go do kolumny

v := ( 120 274 225 85 15 1 )


n

Y( x) :=

wielomianu nie trzeba nawet wcale definiowa


tu robimy to tylko dla sprawdzenia

v x
i

i=0
5

Y( x) x 15 x + 85 x 225 x + 274 x 120


p := polyroots( v)
UWAGA: wynik numeryczny szukamy zawsze z pewnym
dopuszczalnym (z gry ustalonym) bdem. Tu rwnie wektor p
zawiera bdy, o czym przekona si mona po wywietleniu
wyniku z 15 cyframi znaczcymi.

1
2

p = 3
4

5

Powstaje naturalne pytanie - po co uywa polyroots() jeli (solve, x) robi to dokadniej? Owszem, ale dla
wielomianw stopnia > 10 rozwizanie symboliczne moe zaj od kilku sekund do nawet kilku minut na wolnym
komputerze, podczas gdy obliczenia numeryczne z uyciem polyroots trwaj zaledwie uamek sekundy. Oczywicie
fakt ten nabiera na znaczeniu dopiero w wikszych projektach, szczeglnie jeeli due wielomiany musimy
wielokrotnie rozwizywa.
Podobna uwaga dotyczy zreszt i pozostaych procedur numerycznych omawianych poniej.
- w skrcie - zyskujemy ogromn szybko oblicze kosztem minimalnych bdw
(w typowych zastosowaniach inynierskich pomijalnie maych)

Rwnania przestpne
Wracamy do przykadu z poprzednich wicze: cos( x) = 0.3x, Tu dla wygody przejdziemy do
standardowej postaci f ( x) = 0 gdzie: f ( x) := cos( x) 0.3x. Jak pamitamy "solve, x" potrafi

znale
tylko jedno rozwizanie. Poniej pokaemy jak mona znale pozostae pierwiastki. Jak
zwykle bardzo przydatny bdzie wykres badanej funkcji i ewentualnie technika "zoomowania"
do precyzyjniejszej lokalizacji pierwiastkw.
a := 0.3

f ( x) := cos( x) a x

Pierwszy - zgrubny wykres

f ( x) = 0 solve , x 1.2019131636661846248
Drugi wykres - zawony do przedziau (-4,2)

25

f ( x)

10

10

f ( x)

1
x
x

Korzystajc z techniki zoomowania mona stwierdzi, e dwa pozostae pierwiastki wynosz okoo:
x2 = -3.3 i x3 = -2.4. Dokadniejsze przyblienia moemy znale przy pomocy funkcji:
tu musimy wczeniej okreli punkt startowy
root( f(x), x)
tu zamiast punktu startowego podajemy przedzia (a,b)
root( f(x), x, a, b)
lub za pomoc bloku given i funkcji find(x)

UWAGA: Omawiane funkcje - jako oglniejsze - mona rwnie z powodzeniem stosowa do


rwna wielomianowych - "tylko po co wyciga armat do zabicia muchy".

f ( x) cos( x) .3 x

sprawdzamy wzr (czy wszystko OK?)

x2 := 3.3

definiujemy pocztkowe przyblienie

root( f ( x2) , x2) = 3.295

i rozwiazujemy

root( f ( x3) , x3 , 2.5 , 2 ) = 2.356

tu podajemy przedzia (a,b) tak aby na jego


kocach funkcja miaa rne znaki

Drugi sposb jest bezpieczniejszy gdy zmniejsza ryzyko rozbienoci procesu iteracyjnego. Nie ma tu jednak
miejsca na dokadniejsze omwienie tego problemu bo nie jest to kurs matematyki czy metod numerycznych.
Naszym celem jest zapoznanie si z moliwociami jakie oferuje Mathcad. Pokaemy wic poniej jak otrzyma
wszystkie trzy pierwiastki od razu oraz jak kontrolowa dokadno.
p := 0

niszczymy star definicje wektora p - to zabieg typowo kosmetyczny

5
a := 3

0

3
b := 2

2

p := root f ( x) , x , a , b
i

i := 0 .. 2

definiujemy pocztki i koce przedziaw jako


wektory, a nastepnie poprzez zmienn zakresow
wykonamy kolejne obliczenia cyklicznie

Wywietlimy wyniki i sprawdzimy ewentualne bdy podstawiajc do oryginalnego rwnania


tu szczliwie udao si rozwiza problem

26

3.294
p = 2.356

1.202

0
f(p) = 0

0

super dokadnie ale na og powstaj pewne


bdy. Ich wielko moemy kontrolowa
poprzez globalne zmienne TOL i CTOL.

Zmienne TOL i CTOL uywane s przede wszystkim przy rozwizywaniu rwna w bloku Given.
TOL okrela dopuszczalny bd wzgldny rozwizania
CTOL okrela dopuszczalny bd wzgldny niespenienia warunkw ograniczajcych
Domylnie wartoci te ustawione s na 10-3 ale moemy je definiowa wg wasnych potrzeb. Warto jednak pamita,
e zmniejszajc dopuszczalny bd zmuszamy Mathcada do ciszej pracy
Blok Given + funkcja find(x)
x0 := 1.5

0. przed uyciem bloku given naley poda punkt startowy

Given

1. wpisujemy sowo kluczowe "Given"

f ( x0) = 0

2. poniej okrelamy rwnanie (lub kilka rwna)

r := Find( x0)

3. i rozwizujemy funkcj find(var1,var2,...)

--------------------------------------------r = 1.202
f ( r) = 1.099 10

jak wida rozwizanie jest mniej dokadne ni z funkcji root co


wynika z zastosowania innego algorytmu numerycznego. Moemy
jednak sterowa dokadnoci oblicze, a prawdziwe zalety bloku
Given, bdziemy mogli doceni dopiero dla ukadw rwna z
kilkoma niewiadomymi.

p = 1.202
2

( 2) = 0

f p

Powtrzymy teraz powysze obliczenia przy zmniejszonej tolerancji na bdy


TOL = 1 10
TOL := 10

CTOL = 1 10

10

10

CTOL := 10

Given

tak byo do tej pory

podajemy nowe wartoci (10-10 to naprawd bardzo


may bd) - przewanie rozwizanie bdzie i tak
dokadniejsze o kilka rzdw

f ( x0) = 0
r := Find( x0)
--------------------r = 1.202

f ( r) = 0

teraz jest OK

W bloku Given te moemy obliczy wszystkie pierwiastki za jednym razem jeeli za punkt startowy podamy wektor a
nie pojedyncz warto

5
z := 2

1

Given
f ( z) = 0

3.294
Find( z) = 2.356

1.202

27

Ukady rwna z wieloma niewiadomymi


Ukady rwna liniowych
Temat ten szczegowo omwilimy w w. 2 (zajrzyj do pliku mcad_2.mcd). Przypomnijmy jedynie, e obliczenia
moemy przeprowadzi z zastosowaniem funkcji lsolve(A,B) lub poprzez macierz odwrotn.

Nieliniowe ukady rwna


Rozwizywanie nieliniowych ukadw rwna jest skomplikowanym zagadnieniem. Klasyczne podejcie
analityczne jest na og z gry skazane na niepowodzenie, gdy eliminacja kolejnych zmiennych (nawet gdy
moliwa) jest czasochonna i prowadzi na og do skomplikowanego rwnania przestpnego. Mathcad pozwala w
do atwy sposb przezwyciy te trudnoci na drodze numerycznej. Najbardziej uniwersalne jest w tym
przypadku zastosowanie bloku Given, ale w niektrych szczeglnych przypadkach moliwe jest nawet uzyskanie
rozwizania symbolicznego (solve, vec(x,y,z) ->).Aby nie zagbia si dalej w zawioci teoretyczne przejdziemy
od razu do przykadu.

Przykad: Wyznacz okrg przecinajcy punkty (x,y) = (2,-4), (-3,1), (5,5)


Zadanie to mona atwo rozwiza wykonujc proste obliczenia geometrii analitycznej. Na wstpie naley wyznaczy
dwie proste prostopade do bokw np. 12 i 23 i przechodzce przez ich rodki. Nastpnie z ukadu 2 rwna liniowych
(rwna tych prostych) znale mona rodek okrgu (x0,y0) a na koniec wyznaczy promie jako odlego (x0,y0)
do np. (x1,y1). Opisany tu algorytm wymaga jednak troch "rcznej" pracy aby wpisa odpowiednie wzory i
rwnania.
Czy nie moemy wykona oblicze prociej? Sprbujmy zapisa w bezporedniej postaci odpowiedni ukad rwna i
zleci jego rozwizanie Mathcadowi.
Poniej podajemy rne sposoby zapisu i rozwizania problemu.

28

=======================================================================
x1 := 2

y1 := 4

x2 := 3

y2 := 1

x3 := 5

y3 := 5

x0 := 0

y0 := 0

definiujemy parametry zadania (tu wsprzdne punktw)

r := 4

podajemy punkt startowy do rozwizania

definiujemy blok Given

Given
2

( x1 x0) + ( y1 y0) = r
( x2 x0) + ( y2 y0) = r

punkty musz spenia to samo rwnanie okrgu


mamy 3 rwnania z 3-ma niewiadomymi x0, y0, r

( x3 x0) + ( y3 y0) = r

2
Find( x0 , y0 , r) = 1

5

otrzymalimy okrg o promieniu 5 i rodku (2,1)

=======================================================================

Rozpatrywany ukad rwna jest na tyle prosty, e mona go nawet rozwiza symbolicznie

( x1 xs ) 2 + ( y1 ys) 2 = rs2

xs
2 1 5

2
2
2 solve , ys

(
y2
ys
)
(
x2
xs
)
rs


2 1 5
rs

( x3 xs ) 2 + ( y3 ys) 2 = rs2

Tu rwnie moemy poda dodatkowe ograniczenia nierwnociowe

( x1 xs ) 2 + ( y1 ys) 2 = rs2

xs
( x2 xs ) 2 + ( y2 ys) 2 = rs2

solve , ys ( 2 1 5 )
( x3 xs ) 2 + ( y3 ys) 2 = rs2
rs

rs > 0

=======================================================================
W bloku Given mona rwnie uzyska rozwizanie symboliczne (po find() wciskamy Ctrl+. anie =).
Given

29

( x1 xx) + ( y1 yy) = rr
( x2 xx) + ( y2 yy) = rr
( x3 xx) + ( y3 yy) = rr

Ale z niewiadomych przyczyn nie mona tu poda ogranicze


typu rr > 0 (Mathcad protestuje).

2 2
Find( xx , yy , rr ) 1 1

5 5

2
xp := 3

5

4
yp := 1

5
2

5
5 sin( t) + 1

Na zakoczenie omawianego przykadu


zilustrujemy rozwizanie graficznie.
1. tworzymy parametryczny wykres
znalezionego okrgu
2. dodajemy serie punktw xp i yp
3. oraz pojedynczy punkt (2,1)
Aby uzyska kocowy efekt jak na wykresie
obok musimy go jeszcze odpowiednio
sformatowa.

yp
1

5
5 cos( t) + 2 , xp , 2

Wprowadzenie do optymalizacji
Tematyka optymalizacji jest na tyle bogata, e nie sposb tu poda nawet fragmentarycznych wiadomoci. Punkt
niniejszy prosz wic traktowa czysto technicznie - czyli jak znale optimum pewnej funkcji (tzw. funkcji celu) w
Mathcadzie. Ot rozwizanie problemu zapisujemy praktycznie zawsze w podobny do opisanego niej algorytmu. Z
formalnego punktu widzenia nie jest istotne czy rozwizujemy zadanie z jedn lub wieloma zmiennymi decyzyjnymi, z
ograniczeniami lub bez, oraz czy zadanie jest liniowe lub nieliniowe. Zapis w Mathcadzie bdzie zawsze podobny a

30

solver sam bdzie prbowa sklasyfikowa problem i zastosowa odpowiedni procedur numeryczn. Podobnie jak
wczeniej, przejdziemy do konkretnego przykadu.

Przykad: Obliczy odlego dwch krzywych y = e

2
i y = x.

Dla uatwienia parametryzujemy obydwie krzywe - dla


pierwszej krzywej przyjmujemy parametr a= x, a dla drugiej
b=y. Musimy teraz zdefiniowa funkcj odlegoci dla
tych parametrw i obliczy kiedy osignie minimaln
warto. Dla uproszczenia moemy wzi kwadrat
odlegoci - unikniemy pierwiastkowania i zmniejszymy
stopie nieliniowoci naszej funkcji celu

2
t

e
t

0
2
2

t, t

f ( a , b ) := a b

) + ( ea b )

definiujemy funkcj celu

f ( 0 , 0) = 1
a := 0

to tylko dla sprawdzenia czy OK


b := 0

punkty startowe - musimy zawsze poda


pusty blok given bo nie mamy ogranicze

Given

tu ew. mog by zapisane ograniczenia


r := Minimize( f , a , b )

r=

0.074

0.538

Ostatecznie odlego jest rwna

obliczenie (a,b) => min f(a,b)

a := r

L := f ( a , b )

b := r

L = 0.534

31

Na koniec przedstawiamy wykres z zaznaczeniem znalezionych (najbliszych) punktw na wykresie.

rx := a b

( a b)

ry := e

0.0735622

0.2896245

rx =

1.5
1
t

0.5

t
ry

0.5

0.5

0.5
1
2

t , t , rx

1.5

UWAGA: Aby prawidowo pokaza odlego


musimy zadba aby skale osi x i y byy takie
same. W innym razie wykres bdzie
znieksztacony i trudno bdzie oceni czy
rozwizanie jest OK.

32

MATHCAD 2000/2001 - wykresy 3D


Wykresy 3D
Poniej przedstawiamy wykresy funkcji f(x,y) omawianej przy zagadnieniu optymalizacji w pliku mcad4.mcd.
Formatowanie wykresu dokonujemy po jego dwukrotnym klikniciu i ustawieniu adanych opcji.

f ( x , y) := x y

) + (ex y)
2

Wykresy warstwicowe cho mniej efektowne od powierzchniowych s pomocne przy graficznym szukaniu ekstremw
funkcji. Nie mamy tutaj tak wygodnych narzdzi jak przy zwykych wykresach 2D, takich jak zoom - powikszanie lub
trace - ledzenie punktw wykresu. Jednak przy niewielkiej dodatkowej pracy moemy atwo przeskalowa dziedzin
(x,y) do interesujcego nas obszaru co pozwoli na lepsze dobranie punktu startowego do bloku Given.

33

MATHCAD 2000/2001 - elementy programowania


Obliczenia warunkowe
Funkcja if()
Funkcja if() umoliwia warunkowe obliczanie wyraenia w zalenoci od spenienia okrelonego kryte- rium (testu)
logicznego. Przydatna jest przede wszystkim do definiowania tzw. funkcji warunkowych (zwanych te sklejanymi).
Funkcje te charakteryzuj si tym, e nie daj si zapisa w postaci jednego wzoru obowizujcego w caej dziedzinie i
z reguy s niecige lub maj niecige pochodne w punktach zszycia. Definicja takiej funkcji skada si z dwch lub
wicej wzorw obowizujcych w rozcznych podzbiorach dziedziny. Skadnia funkcji if() jest nastpujca:
if( test_logiczny, warto_gdy_prawda, warto_gdy_fasz)
Przykady jej zastosowa prezentujemy poniej.

Przykad 1
Dana jest nastpujca funkcja:

dla x 0
dla x > 0

x
f ( x) =
sin x

Odpowiednia definicja w Mathadzie


ma posta:
f ( x) := if ( x 0 , x , sin( x) )

10

f ( x)

|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|

Przykad 2
Dla 3 przedziaw:

dla x / 2
dla / 2 x < x < / 2
dla x / 2

g ( x) = sin x
+1

naley zastosowa zagniedon funkcj if()


p :=

to tylko dla wygody

g( x) := if ( x p , 1 , if ( x p , 1 , sin( x) ) )

g( x)

5
x
x

Funkcje max(), min() i mod()


Przy definicji pewnych klas funkcji warunkowych przydatne mog by funkcje min(), max() i mod() - pierwsze dwie
uywamy w sytuacjach gdy chcemy ograniczy (obci) zakresy wartoci a ostatnia jest przydatna do definicji funkcji
okresowych.

34

max( cos( x) , 0.3)

mod( x , 2 )

10

10

UWAGA: funkcje warunkowe definiowane przy pomocy if() mona bez ogranicze stosowa w obliczeniach
numerycznych i rysowa ich wykresy nawet gdy s niecige. Nie mona ich jednak uywa w obliczeniach
symbolicznych:
d
f ( x)
f ( x)
bd
dx
Ograniczenie to mona pokona stosujc odpowiednie funkcje z grupy "piecewise continuous", w szczeglnoci
przydatna jest funkcja Heaviside'a. Na przykad omawian powyej funkcj f(x) mona zapisa nastpujco:
f ( x) := ( x) sin ( x) + ( x) x

co pozwoli na poprawne operowanie w obliczeniach symbolicznych:


f ( x) ( x) sin ( x) + ( x) x
d
f ( x) simplify 1 + ( x) cos ( x) ( x)
dx
Temat ten wykracza jednak poza ramy niniejszego opracowania, gdy wymaga elementarnej wiedzy z dziedziny
dystrybucji

Materia dodatkowy

Funkcja until()
Funkcja until() suy do iteracyjnego (cyklicznego) wykonywania oblicze a do spenienia okrelonego warunku
logicznego. Typowe jej zastosowanie to obliczanie kolejnych wyrazw cigu lub sumy szeregu dla z gry zadanej
dokadnoci (zob. przykady poniej). Pierwszy parametr funkcji until okrela tzw. kryterium stopu. Obliczenia trwaj
tak dugo a parametr ten przyjmie ujemn warto. Nie podajemy wic warunku logicznego w bezporedniej postaci
a jego odpowiednik liczbowy, tzn. zamiast wyraenia typu x < a podajemy x-a (<0 ju nie piszemy). Drugi parametr
okrela zwracan warto. Aby cay cykl oblicze mia sens naley dynamicznie zmienia wartoci obydwu
parametrw z wykorzystaniem zmiennych zakresowych (iterowanych). Wyjanimy to na konkretnym przykadzie
poniej.
UWAGA 1: niewaciwe uycie funkcji until moe doprowadzi do bardzo dugiego cyklu oblicze. Co prawda - ze
wzgldu na ograniczenia jakie s naoone na zmiennne zakresowe - nie grozi nam ptla nieskoczona (tzw.
"zaptlenie"), ale i tak naley definiowa testowy warunek logiczny ze szczegln uwag, tak aby zapewni jego
spenienie w skoczonej liczbie iteracji.
UWAGA 2: funkcja until jest przeytkiem i od Mathcada w wersji 2000 obsugiwana jest tylko dla zgodnoci z
wczeniejszymi wersjami programu. Obecnie zalecan metod oblicze iteracyjnych jest zdefiniowanie wasnej
funkcji-programu, wykorzystujcej instrukcj while. Temat ten zostanie przedstawiony w dalszej czci materiau.

35

Elementy programowania

Materia dodatkowy

Wprowadzenie
Mathcad oferuje pewne narzdzia do programowania wasnych funkcji. Naley podkreli, e ich moliwoci s
bardzo skromne w porwnaniu do klasycznych jzykw programowania, z ktrych zapoyczono na przykad
podstawowe instrukcje sterujce (takie jak if, for i while), jednak ich skadnia jest inna i mao intuicyjna (szczeglnie
dla osb majcych ju jakie dowiadczenie z programowaniem i przyzwyczajonych do innych ni Mathcad
standardw). Kod programu moe by realizowany jedynie wewntrz definicji funkcji, co ogranicza zakres jego
zastosowa. Najwiksz wad jest jednak brak jawnych deklaracji zmiennych i kontroli poprawnoci typw co
utrudnia znalezienie bdw w wikszych programach.
Pomimo wspomnianych wad warto jednak zapozna si z elementami programowania oferowanymi w
Mathcadzie, poniewa s sytuacje, w ktrych programowanie (nawet prymitywne) jest wrcz niezbdne lub bardzo
upraszcza skomplikowane obliczenia. Materia prezentowany poniej jest krtkim przegldem moliwoci Mathcada w
tym zakresie a nie kursem programowania. Dlatego ograniczono si do podania podstawowych instrukcji sterujcych
i kilku prostych przykadw bez wnikania w tajniki algorytmiki i sztuki programowania. Dalsze informacje i ciekawe
przykady mona znale w "Resource Center".
Uwaga: Osobom nie majcym adnego dowiadczenia z programowaniem proponuj - a nawet zalecam przestudiowanie poniszego materiau dopiero pod koniec sem. 2.
Wskazwka: Aby zacz programowanie funkcji, naley po wpisaniu pocztkowej definicji funkcji f(x) := klikn
przycisk "Add Line" z paska narzdziowego "Programming". W kolejnych liniach (Add Line) wpisujemy kod
programu, ale sw kluczowych nie mona wpisywa bezporednio z klawiatury - naley je wywoywa poprzez
odpowiednie przyciski paska "Programming" (lub ew. skrty klawiaturowe).

- definicja lokalnej zmiennej wewntrz bloku (operator przypisania)


Skadnia:

Akcja

var value

przypisz zmiennej var warto value

xx+ 1

zwiksz x o jeden

if ... if ... otherwise - warunkowe obliczenie wyraenia


Skadnia:

Akcja = podaj warto:

wart1 if warunek1

wart1 gdy speniony jest warunek1

wart2 if warunek2

wart2 gdy speniony jest warunek2

"......."
wartX otherwise

itd.
wartX we wszystkich pozostaych przypadkach

36

Przykad 1

Przykad 2

funkcj f(x) omawian na pocztku tego


dokumentu mona zapisa nastpujco

podobna lecz troch bardziej rozbudowana bdzie


definicja funkcji g(x) - tu dla wygody definiujemy
robocz-lokaln zmienn p; jest ona widoczna jedynie
wewntrz bloku reprezento- wanego przez pionow
kresk

f ( x) :=

x if x 0
sin( x) otherwise

g( x) :=
0

1 if x p

10

1 if x p
sin( x) otherwise

2
4

for - ptla "od-do-co" (cykliczne wykonanie instrukcji dla zmiennej zakresowej)


Skadnia:

Akcja = wykonaj-powtrz N razy

for i 1 .. N

dla i rwne od 1 do N

instrukcja

wykonaj podan instrukcj

lub
for i 1 , 3 .. N
lub

instr_1

(tu z krokiem 2)

"....."
instr_K

cig instrukcji w bloku

Ptla for ma zastosowanie gdy z gry wiemy ile razy dana ptla bdzie powtrzona. Szczeglnie przydatna jest
przy operacjach na wektorach i macierzach

Przykad 3
silnia( n ) :=

s1

sum( n ) :=

for i 2 .. n

s0
for i 1 .. n

s s i

ss+i

silnia( 10) = 3.629 10

11

sum( 11) = 506


6

10! = 3.629 10

suma: 1 + 2 + 3 + .. + N

Przykad 4

i =1

i = 506

37

znalezienie maksymalnego elementu wektora

Przykad 5

tu w odrnieniu od standardowej funkcji max() chcemy znale numer maksymalnego elementu, przy okazji
zwrcimy te warto tego elementu. Nasza funkcja bdzie wic zwraca od razu dwie wartoci (w postaci
wektora dwuelementowego). Dla przejrzystoci pomijamy w poniszym przykadzie sprawdzenie czy dane
wejciowe s wektorem (zakadamy, e tak jest).

ix ORIGIN

imax( v) :=

Zmienna ix przechowuje dotychczasowy-najlepszy-znaleziony indeks.

for i ORIGIN .. last( v)


ix i if v > v
i

Aby program by uniwersalny nie moemy


zaczyna od 0 lub 1 tylko od ORIGIN i koczy
ptl dla last(v).

ix

ix
v
ix
Testujemy nasz funkcj
i := 0 .. 9

v := rnd( 10)

generujemy losowy wektor

v = ( 0.013 1.933 5.85 3.503 8.228 1.741 7.105 3.04 0.914 1.473 )
nasza funkcja
imax( v) =

dla porwnania funkcja max()

8.228

max( v) = 8.228

OK

while - ptla "tak dugo jak"


Skadnia:
while war_log
instrukcja
lub
while x < Xmax
instr_1

Akcja = wykonaj-powtrz obliczenia


tak dugo jak speniony jest warunek logiczny war_log
wykonaj podan instrukcj
lub
(tu konkretny przykad na war_log).

"....."
instr_K

wykonaj cig instrukcji w bloku

Ptl while stosujemy wtedy gdy nie wiemy z gry ile iteracji trzeba wykona do osignicia danego celu. Jest
oglniejsza i bardziej wszechstronna od ptli for (na przykad t ostatni mona bez trudu zapisa w formie while),
ale te wymaga wikszej uwagi, gdy atwo przez prost pomyk doprowadzi do tzw. ptli nieskoczonej.
Naley wic bardzo starannie programowa warunek logiczny (i wewntrzne instrukcje ptli), tak aby
zagwarantowa osignicie wartoci fasz w skoczonej liczbie krokw.

38

Obliczenie pierwiastka kwadratowego

Przykad 6
sqrt( a , ) :=

a metod iteracyjn p

p1

a
p +

i
2
p
i

pierwsze przyblienie
2

tak dugo jak bd >

while p a >
p

i+ 1

1
2

p +

licz kolejne przyblienia

Testujemy nasz funkcj


sqrt ( 4 , 0.01) = 2.00060975609756

sqrt 4 , 10

sqrt ( 4 , 0.001) = 2.00000009292229

) = 2.00000009292229

sqrt 4 , 10

)=2

Gdybymy chcieli dowiedze si ile iteracji zostao przeprowadzonych wystarczy nieco zmodyfikowa nasz
funkcj
sqrt( a , ) :=

x1
i0
2

while x a >
x

1
2

x +

ii+1
(x i )

|
|
|
|
|
|
|
|
|
|

sqrt ( 9 , 0.1) = ( 3.00009155413138 4 )


sqrt( 9 , 0.0001) = ( 3.00000000139698 5 )

sqrt 9 , 10

) = (3

12

6)

Podobnie - drobna korekta - gdybymy chcieli przeledzi histori zbienoci naszego algorytmu:
sqrt( a , ) :=

x1
i0
v x
i

while x a >
x

1
2

x +

ii+1
v x
i

|
|
|
|
|
|
|
|
|
|
|
|
|
|

sqrt 17 , 10

12

145

73.4965517241379
38.7143544958308

23.0896429413719

=
17.8030386448063
17.0181112639791

17.0000096373175
17.0000000000027

17

39

Sumowanie szeregw z ustalon dokadnoci

Przykad 7

Jak zauwaylimy uywanie funkcji until() jest niewygodne i mao efektywne gdy wymaga tworzenia wektorw
(czasami o duych rozmiarach) tylko po to aby wycign jego ostatni element. W takich przypadkach idealnym
wrcz rozwizaniem jest zastosowanie wasnej funkcji zaprogramowanej z uyciem ptli while.

Napiszemy wasn funkcj sinus(x,), ktra liczy warto sin(x) z ustalon dokadnoci
Na pocztek troch teorii
rozwijamy sin(x) w szereg Taylora
sin( x) series , x , 10 x

1 3
1
1
1
5
7
9
x +
x
x +
x
6
120
5040
362880
3

Ten szereg potgowy moemy przedstawi w postaci: x

3!

5!

..

Sum okrelonej liczby wyrazw takiego szeregu mona zapisa bez programowania:
N

sinN ( x , N) :=

2 i+ 1

( 1 )

i =0

sinN ( 1 , 4 ) = 0.841471009700176

( 2 i + 1 )!

sin( 1 ) = 0.841470984807897
Ale ile wyrazw trzeba zsumowa aby osign ustalon dokadno???
Aby nie wnika za gboko w tajniki szeregw funkcyjnych podajemy gotowe rozwizanie.
Reszta rozpatrywanego szeregu jest nie wiksza ni
k+ 1

R <

dla k = 2i+1 nieparzyste

( k + 1 )!
Trzeba po prostu sumowa szereg tak dugo jak (ang. while) bd okrelony powyszym wzorem jest wikszy od
ustalonego z gry, dopuszczalnego bdu .

Jeszcze kilka uwag zanim zaczniemy programowa!!!


2

kolejne elementy szeregu mona liczy efektywnie z rekurencyjnej formuy: a = a


i

i 2 i ( i 1 )

podobnie mona postpi dla oszacowania biecego bdu (reszty) szeregu


dla duych x szereg moe by na pocztku wolno zbieny dlatego warto policzy jego reszt z
dzielenia przez 2 (modulo), aby unikn niepotrzebnej pracy procesora - mona tu zapewni jeszcze lepsz
(szybsz) zbieno ale... (pomyl sam).

40

Definicja naszej funkcji sinus


sinus( x , ) :=

x mod( x , 2 )
i1
ax
sa
2

r x 2
xx x x
while r >
ii+2
a a

xx
i ( i 1 )

ss+a
r

s

i

a x
i+1

|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|

Testowe zadanie
8

x := 1

e := 10

sin( x) = 0.841470984807897

0.841470984648068

11

sinus( x , e) =

trzeba byo obliczy szereg do wyrazu x11

err := sin( 10) sinus( 10 , e)

10

err = 4.915 10

rzeczywisty bd jest duo mniejszy, gdy


zastosowane oszacowanie bdu jest pesymistyczne
(gwarantowane) - w typowych sytuacjach bd jest
o 1 lub 2 rzdy niszy.

dodano "i" do wyniku dla celw testowych

You might also like