You are on page 1of 40

MATHCAD 2000 1

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).

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 prezento-
wanych 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 3

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 4

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 tablico-
wanie 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 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

argument. Formatowanie wykresu odbywa si po


jego podwjnym klikniciu i wybraniu odpo-
4
wiednich opcji z okienka dialogowego. 4

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 6

Zacznik 1: Podstawowe operatory Mathcada


Klawisz Operacja
: dwukropek := definicja zmiennej lub funkcji lokalnej
Definicja i
obliczanie
~ tylda definicja globalna
= numeryczne obliczenie wyraenia
Ctrl+. kropka symboliczne obliczenie wyraenia
Ctrl+Shift+. symboliczne obliczanie z kluczem
+ dodawanie
- odejmowanie lub negacja
* mnoenie
Operatory arytmetyczne

/ 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+9 mniejszy lub rwny


Ctrl+0 wikszy lub rwny
Ctrl+= rwny
Ctrl+3 nie rwny
? pochodna pierwszego rzdu
Ctrl+? pochodna dowolnego rzdu
Pochodne, caki, granice

& caka oznaczona


Ctrl+I caka nieoznaczona
Ctrl+L granica dwustronna
Ctrl+A granica prawostronna
Ctrl+B granica lewostronna
$ suma po zmiennej iteracyjnej
Ctrl+4 suma elementw wektora
Ctrl+Shift+4 suma od..do
# iloczyn po zmiennej iteracyjnej
Ctrl+Shift+3 iloczyn od..do
, przecinek oddzielanie argumentw funkcji lub elementw wektora
; rednik definicja zakresu (zmiennej iteracyjnej)
. kropka separator liczb dziesitnych lub indeks dolny ozdobny (zwyky)
macierzowe
Operatory

[ indeks elementu wektora


Ctrl+8 iloczyn wektorowy
Ctrl+1 transpozycja wektora lub macierzy
Ctrl+6 kolumna macierzy
^-1 macierz odwrotna
Ctrl+- minus operator wektoryzacji oblicze
Znak + Ctrl+G litery greckie (alfa, beta, ...)
klaw. edycyjne
Litery greckie,

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

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 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

Definiownie zmiennych i funkcji

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

f(1) = 2 f(0) = 6 f(1)=

Rozwizanie rwnania kwadratowego f(x) = 0

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

Bardziej zaawansowany sposb rozwizania


8

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

Tworzenie wykresu funkcji

wykres opis czynnoci

2 1. z klawiatury Shift+@ lub myszk menu


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


2 2
2

tan ( x)

sin( x)
3 2 1 0 1 2 3
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


9

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

kN := 1000N definicja wasnej jadnostki 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

x := 2km x = 2000 m tu jest OK

km := 123 definicja lokalnej zmiennej

x := 2km 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 , .. 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

Inny sposb (wektorowy)

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

i := 0 .. n

i definicja wektora poprzez zmienn iterowan


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

0 0 Teraz wyniki s nie tablicami a wektorami!!!


0 0 0 0
I tak przy okazji doszlimy do naturalnej definicji wektora
1 0.628 1 0.588
poprzez iterowan definicje kolejnych jego elementw.
2 1.257 2 0.951
3 1.885 3 0.951 Dostp do kolejnych elementw wektora uzyskujemy
stosujc operator indeksu "[".
4 2.513 4 0.588
a= sin( a) =
5 3.142 5 0
6 3.77 6 -0.588
7 4.398 7 -0.951
8 5.027 8 -0.951
9 5.655 9 -0.588
10 6.283 10 0

Zmienne zakresowe 2. Sumowanie szeregw

n := 10

i := 0 .. n 1 Uwaga: do obliczenia powyszej sumy nie warto definiowa wektora


0.5 a, tylko od razu wpisa wzr
1 n
a := 0.25 1
i
2
i
0.125 i
= 1.999023

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

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 3

1.23
V= 0

3.5

Dla macierzy drugi indeks oddzielamy przecinkiem

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

Operacje algebraiczne na wektorach i macierzach

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

A+ B= BD! niezgodne wymiary macierzy

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

D =0 wyznacznik macierzy (tylko dla mac. kwadratowych)

43.866
eigenvals( D) = 0.866 wartoci wasne macierzy

0

Inne rzadziej uywane funkcje

cols( A) = 3 rows( A) = 2 Ile kolumn i wierszy

2 2
A = wycignicie n-tej kolumny (Ctrl+6)
3
14

10
w z = 8 iloczyn wektorowy (Ctrl+8)

2

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
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

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

Aby zapobiec takiej sytuacji naley zastosowa


X := X 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 2
f ( x) expand x 6 x + 11 x 6

factor - faktoryzacja - rozkad na czynniki


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

1 1 1
factor
x2 x1 ( x 2) ( x 1 )

simplify - upro wyraenie

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

simplify, assume=real - mwi e zmienne s liczbami rzeczywistymi

simplify, assume=RealRange(a,b) - lub ograniczone w pewnym przedziale

( 2)
2
2
x x tu nie wie co z tym chcemy zrobi

2 tu upraszczamy ale otrzymujemy rozwizanie w


x simplify csgn( x) x dziedzinie zespolonej

2
x simplify , assume = real signum( x) x dla liczb rzeczywistych - ju bez kopotw

podpowiadamy, e x jest nieujemne co pozwala


x simplify , assume = RealRange( 0 , ) x
2
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 2
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
3 2
f ( x) expand , x x 6 x + 11 x 6
6
1

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

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

factor grupowanie - klikaj kolejne modyfikatory i


2 2
x ( x 3.14) ( x + 3.14) dopiero potem je redaguj
float , 3

Materia dodatkowy

assume X=real - X jest liczb rzeczywist

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

2 assume , x = RealRange( , 0 )
x x upro wyraenie przy zaoeniu e x 0
simplify

Granice, pochodne i caki


Wzr Opis

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

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


N
rozwinicie wzgldem X w otoczeniu punktu x0 do rzdu X

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.

Obliczenia symboliczne na macierzach


ORIGIN := 1

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

Przy okazji pokazujemy przykad zastosowania modyfikatora substitute

subtitute,wyr1=wyr2 - podstaw wyr2 zamiast wyr1

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

1 cos( x) sin( x) cos( ) sin( )


C( )
T
C( x) simplify
sin( x) cos( x) 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

( )
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

Przykad: Znale punkty przecicia wykresw


graficzna ilustracja do tego przykadu
y = cos(x) i y = x
5

cos( x) = x solve , x .73908513321516064166 cos( x)

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

Nieco zmodyfikowane zadanie ma trzy graficzna ilustracja do tego przykadu


pierwiastki, ale Mathcad podaje tylko jedno

cos( x)
cos( x) = 0.3x solve , x 1.2019131636661846248
0.3x 5 0 5

podobnie nie ma co liczy aby Mathcad poda


nam rodzin rozwiza np. dla funkcji okresowych

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.

Rozwizywanie nierwnoci - przykad


To rozwizanie czytamy nastpujco:
x1 x+ 3 x < 1
> solve , x
x2 x+ 1 ( 2 < x) ( x < 5 ) x ( , 1) ( 2, 5)

Jak wida z przedstawionych wykresw


14 2 Mathcad dobrze wywiza si z tego zadania.

Na piechot mielibymy troch liczenia: 3


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

x
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
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

Solver bez problemu znajduje rozwizanie.


1
2 Ale jak przechowa je do dalszych oblicze?
(dla krtkich jednorazowych oblicze moemy ratowa si
W( x) = 0 solve , x 3 skopiowaniem wyniku poprzez schowek Windows ale na dusz met
4 jest to niewygodne, bo przy kadej zmianie wyniku musimy od nowa
kopiowa!!!)
5

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

T wpisujemy dla wygody wektor wierszowy i


v := ( 120 274 225 85 15 1 ) transponujemy go do kolumny

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)

UWAGA: wynik numeryczny szukamy zawsze z pewnym


1
2 dopuszczalnym (z gry ustalonym) bdem. Tu rwnie wektor p
zawiera bdy, o czym przekona si mona po wywietleniu
p = 3 wyniku z 15 cyframi znaczcymi.
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 f ( x) = 0 solve , x 1.2019131636661846248

Pierwszy - zgrubny wykres Drugi wykres - zawony do przedziau (-4,2)


25

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)

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

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


root( f ( x3) , x3 , 2.5 , 2 ) = 2.356 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

definiujemy pocztki i koce przedziaw jako


5 3 wektory, a nastepnie poprzez zmienn zakresow
a := 3 b := 2 i := 0 .. 2 wykonamy kolejne obliczenia cyklicznie

0 2

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

Wywietlimy wyniki i sprawdzimy ewentualne bdy podstawiajc do oryginalnego rwnania


tu szczliwie udao si rozwiza problem
26

super dokadnie ale na og powstaj pewne


3.294 0 bdy. Ich wielko moemy kontrolowa
p = 2.356 f(p) = 0 poprzez globalne zmienne TOL i CTOL.

1.202 0

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
jak wida rozwizanie jest mniej dokadne ni z funkcji root co
wynika z zastosowania innego algorytmu numerycznego. Moemy
7 jednak sterowa dokadnoci oblicze, a prawdziwe zalety bloku
f ( r) = 1.099 10
Given, bdziemy mogli doceni dopiero dla ukadw rwna z
p = 1.202 kilkoma niewiadomymi.
2

( 2) = 0
f p

Powtrzymy teraz powysze obliczenia przy zmniejszonej tolerancji na bdy


3 3
TOL = 1 10 CTOL = 1 10 tak byo do tej pory

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

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 definiujemy parametry zadania (tu wsprzdne punktw)

x3 := 5 y3 := 5

x0 := 0 y0 := 0 r := 4 podajemy punkt startowy do rozwizania

Given definiujemy blok Given


2 2 2
( x1 x0) + ( y1 y0) = r
punkty musz spenia to samo rwnanie okrgu
2 2 2
( x2 x0) + ( y2 y0) = r mamy 3 rwnania z 3-ma niewiadomymi x0, y0, r
2 2 2
( x3 x0) + ( y3 y0) = r

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

Tu rwnie moemy poda dodatkowe ograniczenia nierwnociowe

( 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

Na zakoczenie omawianego przykadu 5 sin( t) + 1


zilustrujemy rozwizanie graficznie. 1
1. tworzymy parametryczny wykres yp
znalezionego okrgu 1
2. dodajemy serie punktw xp i yp 0 5
3. oraz pojedynczy punkt (2,1)
Aby uzyska kocowy efekt jak na wykresie
obok musimy go jeszcze odpowiednio
sformatowa. 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.

Dla uatwienia parametryzujemy obydwie krzywe - dla 2


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

2
t, t

( ) + ( ea b )
2 2
2
f ( a , b ) := a b definiujemy funkcj celu

f ( 0 , 0) = 1 to tylko dla sprawdzenia czy OK

a := 0 b := 0 punkty startowe - musimy zawsze poda

Given pusty blok given bo nie mamy ogranicze


tu ew. mog by zapisane ograniczenia

r := Minimize( f , a , b ) obliczenie (a,b) => min f(a,b)

0.074
r= a := r
0
b := r
1
0.538

Ostatecznie odlego jest rwna L := f ( a , b ) L = 0.534


31

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

( ) ( 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

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.

( ) + (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

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 | 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

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 )


1 2

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

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
"......."
itd.
wartX otherwise
wartX we wszystkich pozostaych przypadkach
36

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

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
instr_1 lub (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

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

Przykad 5 znalezienie maksymalnego elementu wektora


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).

imax( v) := ix ORIGIN Zmienna ix przechowuje dotychczasowy-


-najlepszy-znaleziony indeks.
for i ORIGIN .. last( v)
ix i if v > v Aby program by uniwersalny nie moemy
i ix
zaczyna od 0 lub 1 tylko od ORIGIN i koczy
ix ptl dla last(v).
v
ix

Testujemy nasz funkcj

i := 0 .. 9 v := rnd( 10) generujemy losowy wektor


i

T
v = ( 0.013 1.933 5.85 3.503 8.228 1.741 7.105 3.04 0.914 1.473 )

nasza funkcja dla porwnania funkcja max()

4
imax( v) = max( v) = 8.228 OK
8.228

while - ptla "tak dugo jak"

Skadnia: Akcja = wykonaj-powtrz obliczenia

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

Testujemy nasz funkcj

sqrt ( 4 , 0.01) = 2.00060975609756 sqrt ( 4 , 0.001) = 2.00000009292229

(
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

Przykad 7 Sumowanie szeregw z ustalon dokadnoci

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

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

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
x
R <
k
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
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

Definicja naszej funkcji sinus | Testowe zadanie


|
8
sinus( x , ) := x mod( x , 2 ) | x := 1 e := 10
|
i1 | sin( x) = 0.841470984807897
ax |
|
sa | 0.841470984648068
sinus( x , e) =
|
2
r x 2 11
|
xx x x |
| trzeba byo obliczy szereg do wyrazu x11
while r > |
ii+2 |
| err := sin( 10) sinus( 10 , e)
xx 0
a a |
i ( i 1 ) |
| 10
ss+a err = 4.915 10
|
a x |
r
i+1 | rzeczywisty bd jest duo mniejszy, gdy
zastosowane oszacowanie bdu jest pesymistyczne
s
(gwarantowane) - w typowych sytuacjach bd jest
i o 1 lub 2 rzdy niszy.

dodano "i" do wyniku dla celw testowych

You might also like