Opracowanie: Anna Kluźniak / Jadwiga Matla Ćw3.mcd 1/12 Katedra Informatyki Stosowanej - Studium Podstaw Informatyki PAKIET MathCad - Część III RÓWNANIA I UKŁADY RÓWNAŃ 1. Równania z jedną niewiadomą MathCad posiada trzy funkcje służące do rozwiązywania równań z jedną niewiadomą. Dwie z nich są ogólnego przeznaczenia, trzecia z nich jest wyspecjalizowana do wyznaczania pierwiastków równań wielomianowych: root(f(),) - poszukiwanie pierwiastka równania f()0 z zadaną wartością początkową root(f(),,a,b) - poszukiwanie pierwiastka równania f()0 w zadanym przedziale (a,b) Uwaga: Wartości funkcji f() w punktach a i b muszą mieć różne znaki, tzn. f(a)*f(b)<0 polyroots(v) - poszukiwanie wszystkich pierwiastków wielomianu o współczynnikach zapisanych w wektorze v (od wyrazu wolnego zaczynając) 1.1. Zastosowanie funkcji root(f(),) do wyznaczania pierwiastka równania f()0 Aby wyznaczyć miejsce zerowe funkcji należy wykonać kolejno: 1). zdefiniować funkcję (występującą po lewej stronie równania) f(): 2). przypisać zmiennej - wartość początkowa pierwiastka : 3). wywołać funkcję root root(f(),) Uwaga: Aby zrealizować punkt 2) należy wcześniej wykonać wykres funkcji y f(), z którego można odczytać wartości przybliżone pierwiastków. Ćwiczenie 1. Rozwiąż równanie: e 3 w przedziale (-, ) I sposób: 1). definicja funkcji: f( ) : e 3 2). definicja zmiennej zakresowe potrzebna do wykonania wykresu funkcji w przedziale <-,> z krokiem 0.2 :, 4.8..
Ćw3.mcd 2/12 f( ) 4 3 2 1 0 1 2 3 4 Z wykresu wynika, że pierwiastek równania znajduje się w pobliżu 2. Należy więc przyjąć 2 za początkowe przybliżenie pierwiastka: : 2 3). Wyznaczenie pierwiastka - wywołanie funkcji root z dokładnością 0.001 (domyślna wartość dokładności). Ustal lokalnie wyświetlanie wyników w notacji dziesiętnej z 6-cioma cyframi dziesiętnymi: TOL 0.001 1 : root( f( ), ) 1 1.87184 f 1 Wyznaczenie drugiego pierwiastka: : 4 2 : root( f( ), ) 2 4.36404 f 2 ( ) 2.930989 14 ( ) 0 0 Wyznacz ponownie pierwiastki funkcji f() przyjmując lokalnie dokładność obliczeń TOL -1 Ustal lokalnie wyświetlanie wyników w notacji dziesiętnej z 1-toma cyframi dziesiętnymi: TOL : 1 : 2 11 : root( f( ), ) 11 1.8718386020783 f 11 : 4 21 : root( f( ), ) 21 4.364036497328 f 21 ( ) 0E+000 ( ) 0 1.2. Zastosowanie funkcji root(f(),,a,b) do wyznaczania pierwiastka równania f()0 w danym przedziale (a,b) Jeżeli znamy przedział (a,b) - "przedział izolacji pierwiastka", to możemy zastosować funkcję root w drugiej postaci i wykonać kolejno: 1). zdefiniować funkcję (występującą po lewej stronie równania) f(): 2). wywołać funkcję root root(f(),,a,b) Uwaga: - Aby określić przedział izolacji pierwiastka (a,b), to należy wcześniej wykonać wykres funkcji y f(), z którego można odczytać wartości graniczne przedziału izolacji.
Ćw3.mcd 3/12 II sposób wyznaczenia pierwiastka równania z Ćwiczenia 1: Z wykresu funkcji możemy odczytać przedział izolacji pierwszego pierwiastka (1., 2.), zaś drugiego (4.4,4.6) i wywołać dla funkcji f() polecenie root w drugiej postaci: 01 11 : root( f( ),, 1.6, 2) 01 1.8718386020783 f 01 : root( f( ),, 4.4, 4.6) 11 4.364036497328 f 11 ( ) 0 0 ( ) 0 0 Dokładniejsze odczytywanie z wykresu funkcji - początkowej wartości pierwiastka i przedziału jego izolacji Z wykresu funkcji można odczytać dokładniejsze wartości wykorzystując opcję Trace z menu podręcznego. Należy wykonać: - kliknąć w obszarze wykresu i wybrać z menu podręcznego opcję Trace... - co spowoduje pojawienie się okna X-Y Trace - kliknąć na krzywej będącej wykresem funkcji blisko punktu przecięcia z osią OX z lewej strony i w oknie X-Y Trace odczytać współrzędne wskazanego punktu; - ponownie kliknąć z prawej strony i odczytać współrzędne W oknie X-Y Trace mamy możliwość dokładniejszego ustalenia zarówno przybliżenia początkowego, jak i dokładniejszego określenia przedziału izolacji pierwiastka. Uwagi: - Wyświetlone współrzędne punktów można skopiować w dowolne miejsce w dokumencie; - Odczytywanie współrzędnych kolejnych punktów na wykresie (ich gęstość) zależy od kroku zmienności zmiennej zakresowej potrzebnej do sporządzenia wykresu funkcji. Ćwiczenie 2. a). Wyznacz pierwiastki równania w przedziale <-, 2>: e sin 3 2 2 Uwaga: Przybliżenie zerowe pierwiastków lub przedziały odczytaj z wykresu wykorzystując opcję Trace... z menu podręcznego. b). Wyznacz także miejsca zerowe pochodnej funkcji definiującej lewą stronę równania, aby wyznaczyć ekstrema lokalne funkcji. h( ) e sin 3 2 2 : h' ( ) d : d h( ) :, 4.8.. 2 h( ) h' ( ) 4 3 2 1 0 1 2 4 2 <-- Aby wstawić dopisek górny (znak < ' >) należy po nazwie funkcji lub zmiennej wcisnąć: <Ctrl>+<F7> - Operator d d Calculus należy wstawić z palety 2
Ćw3.mcd 4/12 a). Wyznaczanie miejsc zerowych funkcji h() : : 4 1 : root( h( ), ) 1 4.184 h 1 lub : root( h( ),, 4., 3.) 4.184 ( ) 0 0 : 2 2 : root( h( ), ) 2 2.134 h 2 lub 20 : root( h( ),, 2.2, 2) 20 2.134 ( ) 0 b). Wyznaczanie miejsc zerowych pochodnej funkcji: : 3 p1 : root( h' ( ), ) p1 3.11 h' p1 : 1 p2 : root( h' ( ), ) p2 0.962 h' p2 : 0. p3 : root( h' ( ), ) p3 0.608 h' p3 ( ) 0 ( ) 2.393 1 ( ) 6.791 1 Wnioski: Ponieważ h' ( p1 ) 0 wraz ze zmianą znaku z "minusa" na "plus", więc funkcja osiąga minimum lokalne: h min : h( p1 ) h min 0.978 analogicznie: h ma : h( p2 ) h ma 1.183 h min : h( p3 ) h min 0.128 1.3. Wyznaczanie pierwiastków wielomianów Do wyznaczania wszystkich pierwiastków równań wielomianowych stosuje się funkcję rozwiązującą polyroots. Przykładowy algorytm wyznaczania pierwiastków wielomianu trzeciego stopnia: w( ) : a 3 3 + a 2 2 + a 1 + a 0 1). zdefiniuj wektor 4-elementowy a, zawierający współczynniki wielomianu poczynając od wyrazu wolnego a : a o a 1 a 2 a 3 2). wywołaj funkcję polyroots(a) W wyniku otrzymuje się wektor trzy-elementowy, którego elementy są pierwiastkami wielomianu w().
Ćw3.mcd /12 Ćwiczenie 3. Wyznacz wszystkie pierwiastki wielomianu: w( ) : 3 3 2 2 + + 1 I sposób -stosując funkcję root II sposób - stosując funkcję polyroots w( ) : 3 3 2 2 + + 1 :, 4.9.. w( ) 4 3 2 1 0 1 2 3 4 I sposób - stosując funkcję root : 1.6 1 : root( w( ), ) 1 1.8 : 0.2 2 : root( w( ), ) 2 0.19 : 1 3 : root( w( ), ) 3 1.8 II sposób -stosując funkcję polyroots 1 a : v : polyroots( a) v 2 3 1.8 0.19 v 0 1.8 1.8 <-- Należy wpisać: V[0 v 1 0.19 v 2 1.8 Ćwiczenie 4. Wyznacz miejsca zerowe wielomianu: w1( ) : 3 3 2 2 + stosując funkcję polyroots: u : polyroots( u) 2 3 0.326 1.6i 0.326 + 1.6i 1.319
Ćw3.mcd 6/12 Ćwiczenie. Rozwiąż równanie: ( ) log( 2 3) log + 1 0 Uwaga: Przed przystąpieniem do rozwiązania zadania - należy wyznaczyć dziedzinę funkcji. Jest to przedział (, ). Przeanalizuj przedział (.1, 1) ( ) log( 2 3) g( ) : log + 1 :.1,.2.. 1 0. g( ) 0.2 0 1 p : root( g( ),, 9.9, 11.4) 1 p.34 g( p ) 0 lub : root( g( ), ).34 Zadania do samodzielnego rozwiązania: Wyznacz miejsca zerowe funkcji: f( ) : 3 2 2 + 2 g( ) : 3 + 2 h( ) 3 π + sin + : w przedziale (-4, 4) u( ) sin 2 3 + 2 : w przedziale (-2., 2) w( ) : 6 2 2 + 3 y( ) 4 + 3 3 3 + : dla wartości startowej 2. Rozwiąż równania: 2 + e log( 4) + e 2t + t 2 0
Ćw3.mcd 7/12 2. ROZWIĄZYWANIE UKŁADÓW RÓWNAŃ I NIERÓWNOŚCI MathCad rozwiązuje układy równań i nierówności za pomocą procedury iteracyjnej, dlatego wymaga od użytkownika podania początkowych wartości niewiadomych, inicjujących poszukiwania. Dostępne są dwie funkcje rozwiązujące Find i Minerr. Funkcja Find - poszukuje rozwiazania dokładnego (w granicach toleracji numerycznej) Sposób postępowania: 1). deklaracja wartości startowych - określenie przybliżonych wartości początkowych wszystkich niewiadomych (jeżeli nie są znane wartości przybliżone - przyjąć "1" ) 2). otwarcie bloku równań i nierówności komendą 3). wprowadzić kolejne równania i nierówności układu Uwaga: - znaki równości i nierówności słabych należy wybierać z palety Boolean, przy czym w miejsce znaku równości należy wprowadzać tzw. "twardy znak równości" z palety lub wciskając <Ctrl>+<> 4). wpisać komendę zamykającą - funkcję rozwiązującą Find a jako jej argumenty należy podać nazwy wszystkich niewiadomych. Uwaga: Jeżeli program nie znajduje rozwiązania numerycznego przy pomocy procedury Find, to można poszukiwać rozwiązania przybliżonego przy zastosowaniu funkcji MinErr Ćwiczenie 6. Znajdź dodatnie pierwiastki układu równań: cos() + - y 0 2 + y 2-4 0 Ponieważ na powyższy układ narzucone są dodatkowe warunki (oba rozwiązania powinny mieć wartości dodatnie), więc inicjujące wartości początkowe powinny być z nimi zgodne: : 1 y : 1 cos( ) + y 0 2 + y 2 4 0 > 0 y > 0 Find(, y) 1.24 1.6 Ćwiczenie 7. Rozwiąż układ równań: 4*ln() + - y 2 0 1 + 2* 2 -*y - 6* 0 o którym wiadomo, że ma rozwiązanie w pierwszej i czwartej ćwiartce.
Ćw3.mcd 8/12 a). Rozwiązanie w pierwszej ćwiartce: przyjmij wartości startowe 3 i y3 : 3 y : 3 4 ln( ) + y 2 0 1 2 2 + y 6 0 > 0 y > 0 1 y1 : Find, y ( ) 1 y1 4.12 3.247 b). Rozwiązanie w czwartej ćwiartce: przyjmij wartości starowe 1 i y-1 : 1 y : 1 4 ln( ) + y 2 0 1 2 2 + y 6 0 > 0 y < 0 2 y2 : Find, y ( ) 2 y2 1.723 1.974 Ćwiczenie 8. Rozwiąż układ równań: 2 + y 2 6 + y 2 Rozwiązanie rozpocznij od graficznego przedstawienia równań układu: d( ) : 6 2 y( ) : + 2 :, 4.99.. d( ) d( ) y( ) 3 1 1 3 Rozwiązanie 1 - leżące w II ćwiartce: : 1 y : 1 2 + y 2 6 + y 2 < 0 y > 0 Find(, y) 0.414 2.414
Ćw3.mcd 9/12 Rozwiązanie 2 - leżące w IV ćwiartce: : 1 y : 1 2 + y 2 6 + y 2 > 0 y < 0 Find(, y) Ćwiczenie 9. Rozwiąż układ równań: 2 + y 2 + y 4 Rozwiązanie: 2.414 0.414 : 1 y : 1 2 + y 2 + y 4 Find (, y ) Układ ten nie ma rozwiązania numerycznego. Graficzne przedstawienie równań układu: - górnej połowy okręgu: funkcja f() - dolnej połowy okręgu: funkcja -f() - prostej y-+4 f( ) : 2 y( ) : + 4 :, 4.99.. f( ) f( ) y( ) 2. 0 2. <-- Z lewej strony osi OY wpisz: f(),-f(),y() - Wybierz w oknie formatowania wykresu opcję Equal Scales - skala jednakowa dla obu osi Próba wyznaczenia "jak najlepszego" przybliżonego rozwiązania z wykorzystaniem funkcji MinErr
Ćw3.mcd /12 : 1 y : 1 2 + y 2 + y 4 s ys : Minerr, y ( ) s ys 1.449 1.71 <-- Gdzie leży punkt o współrzędnych (s,ys)? Ćwiczenie : Znajdź wszystkie rozwiązania układu równań: *y 2 - y 2 1 Dziedzina funkcji: 0 i 2 1 ( (<-1) lub (>1) ) a). Poszukiwanie rozwiązania dla <-1 f( ) f( ) g( ) ( w III ćwiartce) : g( ) : 2 1 :, 9.9.. 1 g( ) 8 6 4 2 0 : 3 y : 3 < 1 y 2 y 2 1 Find(, y) 3.242 3.084 b). Poszukiwanie rozwiązania dla > 1 (w I ćwiartce) f( ) : g( ) : 2 1 : 1, 1.0.. f( ) g( ) g( ) 0 2 4 6 8 : 3 y : 3 > 1 y 2 y 2 1 Find(, y) 3.242 3.084
Ćw3.mcd 11/12 Ćwiczenie 11. Rozwiąż układ równań liniowych: * + y + 3*z 20-2*y + 3*z -4 2* + 3*y +3*z 6 Rozwiązanie: 1 sposób - numeryczny: : 1 y : 1 z : 1 2 + y + 3 z 20 2 y + 3 z 4 + 3 y + 3 z 6 Find(, y, z).294 0.941 2.471 2 sposób - macierzowy: A X 1 3 20 : 1 2 3 B : 4 det : A det 1 X : A 1 B 2 3.294 2.471 3 6 0.941 Sprawdzenie: A X 20 4 6 Zadania do rozwiązania: Rozwiąż układy równań: 1. 2 + y 2 9 2. 3 +y - 2y 2 3 2 + y 2 1 3 2-2y 2 + y 3 3. 3 + 3 2-9 - 2 y 4. 4 2 + 9y 2 180 e y + 1 3y 2 20. (cos()) 2 + 3cos() + 1 0 6. 2 + *y z wartościami startowymi 1, 1 sin() + cos() + 0. 0 y 2 + *y 1
Ćw3.mcd 12/12 3. OPTYMALIZACJA MathCad umożliwia poszukiwanie najmniejszych i największych wartości funkcji zarówno z ograniczeniami, jak i bez ograniczeń. Procedura poszukiwań jest iteracyjna, więc użytkownik musi zainicjować początkowe wartości niewiadomych. Dostępne są dwie funkcje rozwiązujące: Minimize - poszukuje wartości najmniejszych Maimize - poszukuje wartości największych Ćwiczenie 12. Znajdź położenie największej wartości funkcji z(,y)*-2*y przy ograniczeniach 2*+y<9-2*y<2-3*+2*y<3,y>0 Rozwiązanie: 1. Definicja funkcji celu f(, y) : 2 y 2. Zainicjowanie niewiadomych wartościami, np. wartością 0 : 0 y : 0 3. Wpisanie słowa - otwierającego blok ograniczeń 2 + y 9 2y 2 3 + 2y 3 0 y 0 4. Wywołanie polecenia Maimize Maimize( f,, y) 4 f ma : f( 4, 1) f ma 18 1 Ćwiczenie 13. Znajdź minimum funkcji z(,y)+3*y przy ograniczeniach +4*y>48 *+y>0,y>0 Rozwiązanie: f(, y) : + 3 y : 0 y : 0 + 4y 48 + y 0 0 y 0 Minimize( f,, y) 8 f min : f( 8, ) f min 38