Professional Documents
Culture Documents
Mathcad 2000 PL PDF
Mathcad 2000 PL PDF
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 2
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 matema-
tycznych 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).
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 3
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.
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 5
4
Wykresy funkcji 4
Wykresy w Mathcadzie tworzymy z menu 2 2
Insert/Graph lub z paska narzdziowego Graph. 2
Na jednym wykresie mona przedstawi kilka
tan( x)
funkcji oraz dodawa punkty kontrolne lub
asymptoty (rys. obok). Kolejne funkcje dodajemy sin( x)
2 0 2
poprzez wpisanie przecinka w polu opisu funkcji, cos( x)
mog by one zalene od jednej wsplnej zmiennej
lub kada z funkcji moe mie swj niezaleny 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).
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.
/ dzielenie
Ctrl+/ dzielenie w wierszu
Ctrl+Enter dodawanie z przeniesieniem do nastpnego wiersza
^ potgowanie
(, ), apostrof nawiasy: (lewy, )prawy, dwustronny-automatyczny
\ pierwiastek kwadratowy
Ctrl+\ pierwiastek dowolnego stopnia
| warto bezwzgldna lub wyznacznik macierzy
" liczba sprzona zespolona
! silnia (n!)
< mniejszy
> wikszy
Operatory
logiczne
Ctrl+Shift+P liczba pi
Ctrl+Shift+Z znak nieskoczonoci
Insert przeczenie punktu wstawiania (pocztek-koniec)
Spacja poszerzenie aktywnego wyraenia
Tab, Shift+Tab aktywacja kolejnego lub poprzedniego pola
Ctrl+D usunicie aktywnego regionu
7
wzr klawiatura
1 + 2 3 = 7 1, +, 2, *, 3, =
( 1 + 2) 3 = 9 1, +, 2, spacja, *, 3, =
1 1 1
+ + = 0.5 1, /, 6, spacja, +, 1, /, 4, spacja, +, 1, /, 12, =
6 4 12
1 1 1 1
+ + 1, /, 6, spacja, +, 1, /, 4, spacja, +, 1, /, 12, Ctrl+.
6 4 12 2
sin
1
sin(, Ctrl+Shift+P, /, 6, ),Ctrl+.
6 2
wzr klawiatura
a := 1 b := 5 c := 6 a, : dwukropek, 1 (itd))
a + b = 4 a, +, b, =
a + b c = 29 a, +, b, *, c, =
2
f ( x) := a x + b x + c f(x), : dwukropek, a, *, x, ^, 2, spacja, +, b, *, x, +, c
2
:= b 4a c =1 D, Ctrl+G, :, b^2, spacja, -4a*c
b
x1 := x1 = 2 x1, :, -, b, -, \, D, Ctrl+G, spacja, spacja, /, 2a, x1, =
2a
b +
x2 := x2 = 3 jak wyej
2a
2
f ( x) = 0 solve , x f(x), Ctrl+=, 0, Ctrl+Shift+., solve, przecinek, x, Enter
3
2 2
2
tan ( x)
sin( x)
3 2 1 0 1 2 3
cos( x)
Jednostki miar
m
F := 20kN a := 10 dane
2
s
F
m := m = 2000 kg wynik
a
Uwaga: Definicja zmiennej o takiej samej nazwie jak jednostka miar zasania jej znaczenie
Wzr Opis
a := 0 , .. 2 a, :, 0, przecinek, Ctrl+Shift+P, /, 10, ;rednik, Ctrl+Shift+P
10
a = sin( a) = a, = sin, (, a, ), =
0 0
0.314 0.309 Wyniki prezentowane po lewej s tablicami, a nie - jak dotychczas -
0.628 0.588
skalarem. Aby wywietli kolejne elementy tablicy naley j
uaktywni (poprzez kliknicie) i przewin do szukanego elementu.
0.942 0.809 Mona rwnie zwikszy liczb wywietlanych elementw tablicy
1.257 0.951 rozcigajc jej doln krawd!!!
1.571 1
Poniej przedstawiamy wykres stablicowanej funkcji
1.885 0.951
2.199 0.809
2.513 0.588
2.827 0.309
1
3.142 0
3.456 -0.309
3.77 -0.588
4.084 -0.809 0 2 4 6 8
4.398 -0.951
4.712 -1
1
i := 0 .. n
n := 10
0.0625 i =0 2
s :=
ai a = 0.03125
co zaoszczdza zuycie pamici i zwiksza szybko
oblicze. (przedstawiony po lewej sposb oblicze jest
i 0.01563 nieefektywny - pokazano go jedynie dla celw
s = 1.999023 0.00781 dydaktycznych).
0.00391
0.00195
0.00098
Wektory i macierze
UWAGA: pocztkowy indeks wektorw i macierzy
to 0 a nie 1. To domylne zachowanie Mathcada
moemy zmieni definiuj zmienn ORIGIN
ORIGIN := 1
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
1.23
V= 0
3.5
A := 1 A, [, 0, przecinek, 0, :, 1
1, 1
A := 5 A := 3 analogicznie
2, 3 2, 2
1 0 0
A=
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
2 z :=
w := 2 i w = 4 lub i
i
6 1 1
3 z = 3
j := 1 .. 2
7
7
B :=
i, j
1
2 1 2
3 B = 3 4 dla macierzy dane czytane s wierszami!!!
4 5 6
5
6
3. Ctrl+M lub przycisk Insert Matrix na pasku narzdziowym Matrix.lub w menu Insert
A :=
1 2 0
A, :, Ctrl+M, poda wymiary i wpisa kolejne elementy
0 3 4
4. Poprzez generowanie
13
1 0 0 1 0 0
I := diag( z) I = 0 3 0 H := identity ( 3 ) H = 0 1 0
0 0 7 0 0 1
1 2
1 2 0
A= B = 3 4
0 3 4
5 6
T 1 3 5
C := B C= transpozycja macierzy (Ctrl+1)
2 4 6
2 5 5 0 1 5
A+ C= CA= suma i rnica macierzy
2 7 10 2 1 2
7 10
A B = iloczyn macierzowy
29 36
1 8 8
D := B A D = 3 18 16
5 28 24
43.866
eigenvals( D) = 0.866 wartoci wasne macierzy
0
2 2
A = wycignicie n-tej kolumny (Ctrl+6)
3
14
10
w z = 8 iloczyn wektorowy (Ctrl+8)
2
Operacje na blokach
sin( x) x2 2
M ( x) :=
cos( x) x
1 1 2
2
0.841 1
M
2 36
M( 1) =
0.54 1 6 1 3 1
2 6
15
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
UWAGA:
X := 4 jeeli zmienna X zostaa zdefiniowana (tak jak tutaj)
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)
1 1 1
factor
x2 x1 ( x 2) ( x 1 )
2
x 1
(x2 1) Jeeli mog wystpi potencjalne osobliwoci to Mathcad nie
x1 (x 1) upraszcza wyrae automatycznie
2
x 1 Musimy mu podpowiedzie eby stara si moliwie najlepiej
simplify x + 1 uproci wyraenie
x1
Materia dodatkowy
Czasami naley pomc jeszcze bardziej poprzez ograniczenie dziedziny
( 2)
2
2
x x tu nie wie co z tym chcemy zrobi
2
x simplify , assume = real signum( x) x dla liczb rzeczywistych - ju bez kopotw
Podobnie, ale bardziej precyzyjnie dziaa klucz assume bo pozwala okrela dziedzin pojedynczej zmiennej. Przykad
podajemy na kocu tego punktu.
float , 51 3.1415926535897932385
17
Materia dodatkowy
f ( x) ( x 1 ) ( x 2 ) ( x 3 )
2
x factor ( x ) ( x + ) float , 3 ( x 3.14) ( x + 3.14)
2
Materia dodatkowy
2 assume , x = RealRange( , 0 )
x x upro wyraenie przy zaoeniu e x 0
simplify
sin( x)
lim 1 Ctrl+L, sin(x)/x, tab, x, tab, 0, Ctrl+.
x0 x
d 3 ( 2
)
x + sin( x) 3 x + cos( x) Shift+/, 'apostrof, x^3, spacja, +, sin(x), tab, x, Ctrl+.
dx
18
2
x 1 2
e dx Shift+7, e^-x^2, tab, x, tab, 0, tab, Ctrl+Shift+Z, Ctrl+.
2
0
1 3 1 5 1 7 1 9
sin( x) series , x , 10 x 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.
d b
a b 1 ( a d b c ) ( a d b c)
A := A
c d c a
( a d b c) ( a d b c)
A a d b c
d b
1 DET DET
A substitute , a d b c = DET
c a
DET DET
inny przykad
C( x) :=
cos( x) sin( x)
macierz funkcyjna
sin( x) cos( x)
2 2
C ( x) cos( x) + sin( x) tu te czsto trzeba dopomc w upraszczaniu wyrae
C ( x) simplify 1 teraz OK
19
Jeeli potrafimy obliczy symbolicznie macierz odwrotn, to tym samym potrafimy symbolicznie rozwizywa liniowe
ukady rwna.
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
( )
2
1 b + b 2 4 a c
2 2 a
a x + b x + c = 0 solve , x
1
1 2
(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".
3 2
a x + b x + c x + d = 0 solve , x
20
1 3 5 2
( 35 + 15 6 ) +
3 1 3
3
3 ( 35 + 15 6 )
1 1
1 3 5 2 1
1 3
x + 2x + 3x + 4 = 0 solve , x 6 ( 35 + 15 6 ) + i 3 ( 35 + 15 6 )
3 2
1 3 2 3
3
6 ( 35 + 15 6 ) 3 ( 35 +
1 1
1 3 5 2 1
1 3
( 35 + 15 6 ) i 3 ( 35 + 15 6 )
6 1 3 2 3
3
6 ( 35 + 15 6 ) 3 ( 35 +
Jeeli wystarczaj nam konkretne wartoci liczbowe, to warto dodatkowo zastosowa modyfikator float,N
solve , x
1.65062
.174686 1.54687 i
3 2
x + 2x + 3x + 4 = 0
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
x 5 0 5
solve , x
cos( x) = x .739085
float , 6 5
Niestety dla rwna przestpnych (nawet najprostszych) Mathcad podaje pierwsze znalezione rozwizanie.
21
cos( x)
cos( x) = 0.3x solve , x 1.2019131636661846248
0.3x 5 0 5
x
1
cos( x) = 0 solve , x a nie + k
2 2
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.
x
22
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.
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
wiadomie wybieramy prosty wielomian, dla ktrego znamy pierwiastki
W( x) :=
( x i) aby atwiej przeledzi dalsze obliczenia
i =1
W( x) ( x 1 ) ( x 2 ) ( x 3 ) ( x 4 ) ( x 5 )
5 4 3 2
W( x) expand x 15 x + 85 x 225 x + 274 x 120
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 1
2 2
p := ( W( x) = 0 ) solve , x 3 p = 3
4 4
5 5
p =2
1
Wp ( 1) = 0 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
n
wielomianu nie trzeba nawet wcale definiowa
i
Y( x) := v x tu robimy to tylko dla sprawdzenia
i
i=0
5 4 3 2
Y( x) x 15 x + 85 x 225 x + 274 x 120
p := polyroots( v)
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.
Rwnania przestpne
f ( x) 10 0 10
f ( x)
4 2 0 2
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:
root( f(x), x) tu musimy wczeniej okreli punkt startowy
root( f(x), x, a, b) tu zamiast punktu startowego podajemy przedzia (a,b)
lub za pomoc bloku given i funkcji find(x)
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.
i (
p := root f ( x) , x , a , b
i )
i
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
( 2) = 0
f p
10 10
TOL := 10 CTOL := 10 podajemy nowe wartoci (10-10 to naprawd bardzo
may bd) - przewanie rozwizanie bdzie i tak
dokadniejsze o kilka rzdw
Given
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
Given
1 3.294
f ( z) = 0 Find( z) = 2.356
1.202
27
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.
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
x3 := 5 y3 := 5
2
Find( x0 , y0 , r) = 1 otrzymalimy okrg o promieniu 5 i rodku (2,1)
5
=======================================================================
Rozpatrywany ukad rwna jest na tyle prosty, e mona go nawet rozwiza symbolicznie
( x1 xs ) 2 + ( y1 ys) 2 = rs2
xs
2 solve , ys
2 1 5
2 2
( x2 xs ) + ( y2 ys) = rs
2 1 5
( x3 xs ) 2 + ( y3 ys) 2 = rs2
rs
( x1 xs ) 2 + ( y1 ys) 2 = rs2
( x2 xs ) 2 + ( y2 ys) 2 = rs2 xs
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
2 2 2
( x1 xx) + ( y1 yy) = rr
2 2 2
( x2 xx) + ( y2 yy) = rr
2 2 2
( 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 4
xp := 3 yp := 1
5 5
2
5
5 cos( t) + 2 , xp , 2
2 0 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.
x 2
Przykad: Obliczy odlego dwch krzywych y = e i y = x.
2
t, t
( ) + ( ea b )
2 2
2
f ( a , b ) := a b definiujemy funkcj celu
0.074
r= a := r
0
b := r
1
0.538
( ) ( a b)
T T
2
rx =
0.0735622
rx := a b ry := e
0.2896245
1.5
t
e UWAGA: Aby prawidowo pokaza odlego
0.5
musimy zadba aby skale osi x i y byy takie
t same. W innym razie wykres bdzie
ry
znieksztacony i trudno bdzie oceni czy
1 0.5 0 0.5 1 1.5 rozwizanie jest OK.
0.5
2
t , t , rx
32
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.
( ) + (ex y)
2 2
2
f ( x , y) := x y
f f
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.
f f
33
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 | Przykad 2
|
Dana jest nastpujca funkcja: | Dla 3 przedziaw:
|
| 1 dla x / 2
x dla x 0 |
f ( x) = |
g ( x) = sin x dla / 2 x < x < / 2
sin x dla x > 0 +1
| dla x / 2
|
|
Odpowiednia definicja w Mathadzie | naley zastosowa zagniedon funkcj if()
ma posta: |
| p := to tylko dla wygody
2
f ( x) := if ( x 0 , x , sin( x) ) |
|
g( x) := if ( x p , 1 , if ( x p , 1 , sin( x) ) )
|
|
|
|
5 0 5 10 |
f ( x) |
| g( x)
2 0 2
x
x
0 1
1 0
10 0 10 0 2 4 6
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
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).
Skadnia: Akcja
Przykad 1 Przykad 2
funkcj f(x) omawian na pocztku tego podobna lecz troch bardziej rozbudowana bdzie
dokumentu mona zapisa nastpujco definicja funkcji g(x) - tu dla wygody definiujemy
robocz-lokaln zmienn p; jest ona widoczna jedynie
wewntrz bloku reprezento- wanego przez pionow
f ( x) := x if x 0 kresk
sin( x) otherwise
2
g( x) := p
2
1 if x p
0 5 10
1 if x p
2 sin( x) otherwise
"....."
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
2 2 2 2
Przykad 3 Przykad 4 suma: 1 + 2 + 3 + .. + N
silnia( n ) := s1 sum( n ) := s0
for i 2 .. n for i 1 .. n
s s i 2
ss+i
s
s
6
silnia( 10) = 3.629 10 11
2
sum( 11) = 506 i = 506
6
10! = 3.629 10 i =1
37
T
v = ( 0.013 1.933 5.85 3.503 8.228 1.741 7.105 3.04 0.914 1.473 )
4
imax( v) = max( v) = 8.228 OK
8.228
while war_log tak dugo jak speniony jest warunek logiczny war_log
instrukcja wykonaj podan instrukcj
lub
lub
while x < Xmax
instr_1 (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
1
p +
a
Przykad 6 Obliczenie pierwiastka kwadratowego a metod iteracyjn p =
i+ 1 2 i p
i
sqrt( a , ) := p1 pierwsze przyblienie
2
while p a > tak dugo jak bd >
p +
1 a
p
2 p licz kolejne przyblienia
(
sqrt 4 , 10
5
) = 2.00000009292229 (
sqrt 4 , 10
7
)=2
Gdybymy chcieli dowiedze si ile iteracji zostao przeprowadzonych wystarczy nieco zmodyfikowa nasz
funkcj
sqrt( a , ) := x1 |
| sqrt ( 9 , 0.1) = ( 3.00009155413138 4 )
i0
|
2 |
while x a >
| sqrt( 9 , 0.0001) = ( 3.00000000139698 5 )
x +
1 a |
x |
2 x
ii+1
|
|
(
sqrt 9 , 10
12
) = (3 6)
(x i ) |
Podobnie - drobna korekta - gdybymy chcieli przeledzi histori zbienoci naszego algorytmu:
sqrt( a , ) := x1 |
|
i0
| 1
v x |
i 145
|
while x a >
2 | 73.4965517241379
| 38.7143544958308
x +
1 a |
x
2 x |
|
(
sqrt 17 , 10
2 12
) = 23.0896429413719
17.8030386448063
ii+1 | 17.0181112639791
|
v x
i
|
|
17.0000096373175
v
17.0000000000027
17
39
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
1 3 1 5 1 7 1 9
sin( x) series , x , 10 x x + x x + x
6 120 5040 362880
3 5
x x
Ten szereg potgowy moemy przedstawi w postaci: x + ..
3! 5!
Sum okrelonej liczby wyrazw takiego szeregu mona zapisa bez programowania:
N 2 i+ 1
x
i
sinN ( x , N) := ( 1 ) sinN ( 1 , 4 ) = 0.841471009700176
( 2 i + 1 )!
i =0
sin( 1 ) = 0.841470984807897
2
x
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