7 Elementy programowania 16 8 Podsumowanie 17 3 1 Wprowadzenie Popularność programów typuCADw ostatnich czasach zmotywowa nas, aby pokazać la to narzedzie jako bardzo poroste a zarazem niezwykle użyteczne w obliczeniach mate-
matycznych. ZaprezentujemyMATHCADa jako dużo tańsza alternatywe w stosunku co do tak wyrafinowanych narzedzi jakimi sa Mathematica oraz Matlab. Poprzez kolejne
rozdzia ukażemy możliwości tego narzedzia, od podstaw algebry, operacji na macier- ly
zach, wizualizacji wynikó do program w jezykuMATHCADa. Rozmiar opracowania nie pozwala na zaprezentowanie wszystkich możliwości, materialu starczy by nawet na lo pokazna ksia żke dlatego też nie bedziemy wnikać w szczegu techniczne edycji tekstu ly
w edytorzeMATHCADa. Skupimy sie na prezentacji tego co najważniejsze. Na wstepie
należy wspomneć że pole edycji wMATHCADe jest dużo bardziej intuicyjne aniżeli w innych tego typu programach, dysponujemy ,,czysta kartka na której piszemy wzory
i definicje w analogiczny jak w rzeczywistości sposób. Wieksza cześć pracy bedzie
opiera sie na praktycznych przyk wykorzystania funkcji i możliościMATHCADa. la ladach
W pracy beda pojawia sie równani i wzory podawane w sposób jawny, co bedzie ly
sygnalizowane, których nie należy wpisywać do edytora. Należy pamietać że znak
mnożenia zawsze musi być użyty w miejscu w którym wystepuje, uchroni nas to
wielokrotnie przed b które pojawiaja sie ,,znikad .3 ledami
2 Prosta algebra 2.1 Operacje na liczbach WMATHCADe definujemy zmiene w nastepujacy sposób a := 12.6, b := 3 na tak zdefi-
nowanych liczbach możemy przeprowadzić do wolne operacje matematyczne. W tak intuicyjny sposób jak na zwyk kartce a + b = 15.6 itd. Należy wpisać dzia lej lanie zank = i wcisna ćEnter. Jeżeli wykonujemy naprzyk dzielenie i wynikiem jest lad liczba niewymierna to zostaje ona wyświetlona z domyślnie ustawiona dok ladnościa,
która możemy zmienić w meni programu. W takiej stytuacji możemy także użyć po- lecenia Ąfloat, 10 3.141592654 liczba po przecinku informuje ile cyfr ma zostać wyświetlonych. 2.2 Funkcje trygonometryczne Nie mog zabraknac także funkcji trygonometrycznych. Musimy pamietać że argu- lo
mentami funkcji trygonometrycznych sa radiany. W przypadku wyrażania katów w
stopniach należy pamietać o dokonaniu stosownej transformacji (ą), dopiero wtedy Ą uzywać ich jako argumentów. W ustawieniach można ta kze zmienić radiany na stop- 1 nie. Zdefiniujmy z := 3.34 i kolejno sin(z) = -0.197, csc(z) := = -5.073, sin(z) 1 cos(z) = -0.98, sec(z) := , tan(z) = 0.201, cot(z) = 4.97. Wiekszośc podstawo- cos(z) wych funkcji mamy dostepna bezpośrednio na palecie bocznej.
2.3 Liczby zespolone Zmienna zespolona istnieje w tym programie w sposób ,,naturalny . I mozemy na niej wykonywać wszystkie znane z algebry operacje, w ten sam intuicyjny sposób jak reszte
3 W odrużnieniu od Mathematica gdzie znak mnożenia zastepuje sie spacja
4 2 PROSTA ALGEBRA operacji. Domyślnym oznaczeniem liczby urojonej jest i lecz w ustawieniach możemy zmienić na j. Zadeklarujmy rl := 45, im = 16.67, i zdefiniujmy liczbe zespolona c := rl + im i. Co daje c = 45 + 16.67i, c = 45 - 16.67i, | c |= 47.988. W przestrzeni zespolonej mamy. 2.4 Definowanie funkcji Jak wspomina na poczatku funkcje i zmienne definiujemy w sposób bardzo intu- lem
icyjny. Oto prosty przyk lad. k n - i + 1 C(n, k) := ( ) i i=1 Niech n := 23, k := 13 co daje C(n, k) = 1.144 106 w przypadku użycia znaku = wartość jest obliczana numerycznie i wyświetlana w przybliżony sposób. Zdefiniujmy sobie ta sama funkcje tylko w inny sposób. n! C(n, k) := k!(n - k)! Nowa definicja przys stara. Wywo funkcje C(n, k) 144066 otrzymujemy lania lujac
wynik dok Użycie zamiast znaku = powoduje że obliczenia przeprowadzane ladny. sa w sposób symboliczny, na co zwróce jeszcze uwage w dalszej cześci pracy.
2.5 Polecenia simplify, expand, factor W tym podrozdziale omówie trzy bardzo ciekawe i przydatne polecenia. Wszystkie znajduja sie na panelu bocznym programu. Pierwsze z nich simplyify uprzaszcza
dane wyrażenie. " 1125 d2 fsimplify 15 5d f x2 - 3x - 4 + 2x - 5simplify 3x - 4 x - 4 2.6 Operacje na macierzach 5 Polecenie expand rozwija dane wyrażenie. (x + y)4expand x4 + 4x3y + 6x2y2 + 4xy3 + y4 cos(5x)expand 16cos5(x) - 20cos3(x) + 5cos(x) Polecenie factor rozk dane wyrażenie na czynniki. lada -5xyz + 2xz2 - x2y - 2x2z + 3y2z + 6yz2 - 3xy2factor -(y + 2z)(-z + x)(x + 3y) int := 9!, int 362880, int = 3.628 105, intfactor (2)7(3)4(5)(7) 2.6 Operacje na macierzach WMATHCADe macierze definujemy dok tak samo jak zwyk zmiene lub funkcje. ladnie le Wybierajac z poanelu bocznego symbol macierzy, określamy ilość kolumn i wierszy.
wype macierz tak jak w rzeczywistości ona wyglada. lniamy
|M| = 5.361103, maksymalna i minimalna wartość macierzy max(M) = 9, min(M) = -5. 2.6.2 Wartości i wektory w lasne Do wyznaczania wartości w s polecenie, lasnych luża ł łł -3.994 ł śł 8.268 ł śł eigenvals(M) = ł śł ł 13.634 ł -11.908 6 2 PROSTA ALGEBRA natomiast do wyznaczania wektorów w s polecenie. lasnych luży ł łł -0.495 -0.385 0.766 0.144 ł śł 0.838 0.026 0.536 0.098 ł śł eigenvecs(M) = ł śł ł -0.142 0.576 0.047 0.804 ł -0.181 0.721 0.352 -0.569 Kolejne kolumny powsta macieży sa wektorami w lej lasnymi.
2.6.3 Dekompozycje W tym podpunkcie pokaże w jaki sposób wykonać dekompozycje macierzy. Cholesky
decomposition wykonujemy poleceniem cholesky(B). Zadeklarujmy. ł łł 13 4 4 ł śł B := 4 9 -3 ł ł 4 -3 57 W wydajac polecenie L := cholesky(B) dokonujemy dekompozycji która w tym przy-
padku polega na wyznaczeniu macierzy L takiej że L LT = B. Gdzie L jest macierza poddiagonalna. ł łł 3.605 0 0 ł śł L = 1.109 2.787 0 ł ł 1.109 -1.517 7.312 LU decomposition. Zadeklarujmy macierz. ł łł 3 -1 2 ł śł C := 1 2 3 ł ł 2 -2 -1 Wydajac polecenie M := lu(C) dokonujemy dekompozycji LU macierzy C wynik
przypisujac jednocześnie do macierzy M.
ł łł 0 0 1 1 0 0 2 -2 -1 ł śł M = 0 1 0 0.5 1 0 0 3 3.5 ł ł 1 0 0 1.5 0.666 1 0 0 1.166 Jak widać macierz M zawiera kolejo macierz P , L, U. submatrix(A,br,er,bc,ec) s luży do ,,wyciagania podmacierzy A, gdzie (br, er) zakres wierszy, a (bc, ec) zakres kolumn.
Przyk L := submatrix(M, 0, 2, 3, 5), P := submatrix(M, 0, 2, 0, 2) ladowo ł łł ł łł 0 0 1 0 0 0 ł śł ł śł P = 0 1 0 L = 0.5 1 0 ł ł ł ł 1 0 0 1.5 0.666 1 Także przy obliczeniach na macierzach należy pamietać o różnicy pomiedzy oblicze-
niami wykonywanymi po znaku = a po znaku . Zwracam na to szczególna uwage ponieważ nie wszystkie operacje moga być wykonane ,,symbolicznie przez program. Przyk przy liczeniu macierzy odwrotnej M-1 dostaniemy wynik w postaci ladowo macierzy której elemententy sa w postaci ilorazu dwuch liczb wymiernych. 7 3 Równania Problem rozwiazywani zwyk równań liniowych, jako problem ma interesujacy nie lych lo
zostanie tutaj poruszony. 3.1 Uk równań linowych lad Najlepsza ilustracja tego problemu bedzie przyk Mamy uk równań linowych. lad. lad
wych. Za óżmy że mamy równanie postaci h(x) = 0 gdzie h(x) := x3 - 10x + 2 l zilustrujmy nasz problem. Wstepnie musimy znać po zer tego wielomianu np. x1 := -2, x2 := 0, x3 := 3 lożenie
Nastepnie poprzez polecienie root(W (x), xi), gdzie W (x) to wielomian którego zer
8 3 RÓWNANIA szukamy a xi to punkt w okolicy którego zlokalizowane jest zero. W naszym przypadku bedzie to XL := root(x3 - 10x + 2, x1), XM := root(x3 - 10x + 2, X2), XR :=
root(x3 - 10x + 2, x3) co w ostateczności daje XL = -3.257, XM = 0.2, XR = 3.057. Rozażmy drugi przypadek kiedy mamy dane dwie funkcje f(x) := ln(x+1), g(x) := sin(x). Szukamy takiego x dla którego f(x) = g(x). Jak widzimy rozwiazanie zlokalizowane jest w okolicach x := 2.Wykonujemy polecenie
X := root(f(x) - g(x), x). Otrzymujemy X = 1.697. 3.3 Parametr TOL Parametrem okreslajacym tolerancje z jaka sa wykonywane obliczenia jest w laśnie
TOL. Jest to parametr znany z wielu procedur używanych w Numerical Recipes. W polu edycjiMATHCADa należy zadeklarować go wcześniej aniżeli polecenie które wyko- nuje obliczenia numeryczne. Zagadnienie zilustruje na przyk wcześniejszym.4 ladzie TOL := 1 10-3 TOL := 1 10-9 X := root(f(x) - g(x), x) X := root(f(x) - g(x), x) lub f(X) - g(X) = 2.084933399 10-4 f(X) - g(X) = 6.2262006661 10-10 X = 1.697232169 X = 1.6968123881 Parametr TOL jest domyślnie ustawiony na TOL := 10-3 należy o tym bezwzglednie
pamietać jeżeli chcemy przeprowadzć bardzo dok obliczenia. ladne
4 W edytorzeMATHCADa uk poleceń bedzie wyglada inaczej, tego typu polecenia powinny być lad l
umieszczane w ,,dó l 9 4 Wizualizacja Każdy problem matematyczny czy fizyczny jest z pewnościa lepiej zrozumiany kiedy możemy zobaczyć na rysunku badz animacji.MATHCADe mozremy przedstawić rezultaty
naszej pracy w przktycznie dowolny sposób od jednowymiarowych wykresów, przez wy- kresy parametryczne, wykresy 3D, zkończywszy na animacjach. Te ostatnie nie zostana zaprezetowane z racji formy maszej pracy. Zwyk wykresy 2D zosta zaprezentowane le ly
juz wcześniej, wiec nie zostana tutaj przedstawione.
4.1 Wykresy parametryczne - krzywe Lissajous Na tym przyk przedstawie sposób konstukcji takiego wykresu. Deklaryjemy ladzie x(t) := sin(2t), y(t) := sin(3t). Z panelu bocznego wybieramy odpawiednia ikone wykresu. W miejscu argumentu na wykresie wstamiamy jedna funkcje a w miejsće wartości druga.
10 4 WIZUALIZACJA 4.2 Wykresy 3D Rozwarzmy problem czastki wpadajacej w pole magnetyczne z pr dkościa prostopad a l
do kierunku dzia tego pola.5 Cześć teoretyczna tego zagadniennia pominiemy, lania
albowiem wiemy że czastka bedzie porusza sie po krzywej ,,śrubowej . Zadeklarujmy l
N := 100 - ilość punktów uwzglednionych na wykresie, i := 0..N 1 gzdie i zmienia
sie od 0 do N co 1. Oraz deklarujemy wektory które bedziemy wykorzystywali do
i i i sporzadzenia wykresu Xi := cos(N 6Ą), Yi := sin(N 6Ą), Zi := 6Ą Nastepnie z panelu N bocznego wybieramy dopowiedni typ wykresu i wstawiamy wcześniej przygotowane wektory. Nastepnym przyk na wykorzystanie wykresów 3D bedzie rysunek sfery. ladem
5 pole dzia w kierunku osi z. la 4.3 Pola wektorowe 11 Z powodu oszczedności miejsca rysunek zosta wstawiony wcześniej aniżeli opis ego l
Ą powstania. Zaczynajac deklarujemy N := 25, i := 0..N, j := 0..N, Ći := iN , Śj :=
Ą j2N , oraz wektory wykorzystane do rysowania sfery. Xi,j := sin(Ći)cos(Śj), Yi,j := sin(Ći)sin(Śj), Zi,j := cos(Ći). 4.3 Pola wektorowe Mamy dana funkcje dwóch zmiennych f(x, y) := sin(x)cos(x) i chcemy narysować powierzchnie tworzona przez nasza funkcje oraz gradient tej powierzchni w postaci wykresu z wektorami przedstawiajacymi gradient. Na poczatku deklarujemy przedzi ly
w jakich beda sie zmieniać nasz x, y, xlow := -2, xhigh := 2, ylow := -4, yhigh := 4,
oraz podzia przedzia ów xn := 20, yn := 20. Zdefiniujmy funkcje przedstawiajaca l l
gradient. Fi,j macierz obrazujaca powierzchnie.
d f(x, y) dx grad(x, y) := i := 0..xn - 1 j := 0..yn - 1 d f(x, y) dy xhigh - xlow yhigh - ylow xindi := xlow + i yindj := ylow + j xn - 1 yn - 1 Vi,j := grad(xindi, yindj) Mi,j := (Vi,j)0 Ni,j := (Vi,j)1 Fi,j := f(xindi, yindj) 12 5 ANALIZA JUŻ BARDZIEJ ZAAWANSOWANA 5 Analiza już bardziej zaawansowana 5.1 Ca lkowanie i różniczkowanie symboliczne Jak wielokrotnie wspomina edytor wMATHCADe jest poprostu zwyk a kartka. Praca lem l tutaj wyglada zupe jak w rzeczywistości. Piszemy f(x) := 5x + 1 + cos(x)2. Jeżeli lnie
chcemy policzyć pochodna lub ca to piszac wprost. lke
d 5 3 1 f(x) 5 - 2cos(x)sin(x) f(x)dx x2 + x + cos(x)sin(x) dx 2 2 2 Otrzymujemy wyniki. Jeżeli chcemy policzyć pochodna wyższego rzedu to piszemy.
dn d5 n := 5 -32cos(x)sin(x) lub -32cos(x)sin(x) dxn dx5 5.2 Rozwijanie funkcji w szereg potegowy
Polecenie jakie warto znać jest series, rozwija funkcje w szereg potegowy. Jego
sk jest nastepjaca. f(x)series, x=x0, k gdzie f(x) to funkcja która rozwijamy ladnia
w szereg potegowy, x zmienna po ktżej rozwijay. Nasza funkcja nie koniecznie musi
zależeć od jednej zmiennej, x0 punkt wokól którego rozwijamy funkcje w szereg, k mówi do której potegi (k - 1) ma być rozwijany szereg. Przyk lady.
W numerycznym wydaniu tego problemu sprowadza sie to wyznaczenia kolejnych
punktó na wykresie y(t). Metode rozwiazywania tego problemu przedstawie na pro-
stym przyk WMATHCADe przyjmujemy dwie rzeczy o których musimy pamietać ladzie.
d =f(t, y) oraz y(t0)=y0. Specyfikujemy problem podajac nasze równanie oraz wa- dt runki poczatkowe.
1 f(t, y) := sin(t) + t0 := 0 y0 := 1 y Podajemy parametry potrzebne do rozwiazania równania. t1 := 8Ą punkt końcowy
naszego rozwiazania oraz N := 1000 liczbe iteracji. Musimy także zdefinować wek-
tor inicjujacy nasze rozwiazanie który w tym przypadku jest ma ciekawy ic0 := y0. lo
Musimy także zadektarować funkcje pochodnej D(t, Y ) := f(t, Y0)6 drugi argument musi być definowany jako wektor. Po tak poczynionych staraniach możemy rozwiazać
równanie. Polecenia do rozwiazywania równań rózniczkowych to rkfixed, Rkadapt,
Bulstoer których sk jest identyczna rkfixed(ic, to, t1, N, D) - parametry pole- ladnia cenia zosta omówione już wcześniej. ly S := rkfixed(ic, t0, t1, N, D) T := S<0> Y := S<1> T - zawiera niezależna zmienna równania u nas jest to czas t, Y - kolejne wartości rozwiazania.
S := Rkadapt(Y 0, t0, t1, N, D) t := S<0> y0 := S<1> y1 := S<2> y2 := S<3> Graficznie rozwiazania przedstawiaja sie nastepujaco. Pierwsza funkcja y0(t).
7 Dany jawnie. Nie nalezy wpisywać do edytaraMATHCADa 14 5 ANALIZA JUŻ BARDZIEJ ZAAWANSOWANA Druga funkcja y1(t). Oraz trzecia fukcja y2(t). 5.5 Rozwiazanie równania różniczkowego 2 rzedu
Mamy dane jawnie równanie 2 rzedu z warunkami poczatkowymi.
d d 1 1 x0(t) = x(t) x1 = x0(t) x1(t) = (50cos( t) - 10x1(t) - 101x0(t) dt dt 100 4 Warunki poczatkowe.
x0(0) 0 0 = co daje wektor inicjalizujacy ic :=
x1(0) 1 1 Określamy parametry rozwiazania t0 := 0, t1 := 150, N := 1500, a także funkcje
pochodnej. ł łł X1 ł śł D(t, X) := ł ł 1 (50 cos(1) - 10 X1 - 101 X0 100 4 15 Należy pamietać że drugim argumentem funkcji pochodnej jest wektor. Rozwiazujemy
równanie jedna z wcześnie j wymienionych metod. S := rkfixed(ic, t0, t1, N, D) T := S<0> X := S<1> Rozwiazanie przedstawia sie nastepujaco.
6 Wahad matematyczne - rozwiazanie wMATHCAD lo
Mamy wahad matematyczne o d L, i wychyleniu poczatkowym Ś0 lo lugości
Niewadoma funkcja dla której rozwiazujemy równanie jest Ś(t), mamy równanie w
postaci jawnej. d2 L Ś(t) + gsin(Ś(t)) = 0 Ś(0) = Ś0 dx2 d Ś(t) = 0 dla t = 0 dt Określamy parametry poczatkowe L := 3 m - podanie jednostki nie jest b edem. l
Ą Ś0 := , g = 9.807 m s-2 sta g jak i wiele innych sta jest zdefiniowana w la lych 4 programie. X1 D(t, X) := T := 6 N := 100 g sin(X0) L 16 7 ELEMENTY PROGRAMOWANIA Rozwiazujemy równanie.
Ś0 P := rkfixed , 0, T, N, D n := 0, 1..N 0 Rozwiazanie przedstawia poniższy wykres.
Gdzie. d <0> <1> <2> t := (P )n Ś(t) := (P )n (t) := Ś(t) := (P )n dt 7 Elementy programowania Na przyk rozwijania funkcji w szereg Fouriera, pokaże konstrukcje prostego pro- ladzie gramu. Za óżmy że mamy funkcje f(x) dana wzorem. l 1 if 0 d" x d" 1 f(x) := -x if - 1 d" x < 0 f(x - 2) if x e" 1 Zdefinoowana na przedziale -L d" x d" L. Po óżmy L := 1, oraz ilość wyrazów w l szeregu N := 20. Program obliczajacy kolejne wspó lczyniki w szeregu Fouriera.
L 1 f(x)dx 2L -L R<0> ! 0 for n "ł 1..N łł F C(f, N, L):= L 1 f(x)cos(nĄx)dx L -L L ł śł R ! ł ł L 1 f(x)sin(nĄx)dx L -L L RT 17 Wywo nasza program res := F C(f, N, L). Tworzymy dwie tablice które beda lujemy
zawiera wspó ly lczynniki A := res<0>, B := res<1>. Definiujemy wielomian Fouriera. N n Ą x n Ą x p(x) := A0 + An cos( ) + Bn sin( ) L L n=1 Narysujmy na wspólnym wykresie wielomian Fouriera oraz funkcje orginalna.
Powtórzmy to samo dla N := 4. 8 Podsumowanie Mamy nadzieje że po tak zachecajacyma wstepie przekonaliśmy czytelnika do pracy
w środowiskuMATHCAD. Jest pewne że pokazaliśmy tylko wierzcho góry lodowej. lek Możliwości programu ogranicza jedynie wyobraznia użytkownika. D. Lapa & B. KLimas