Lekcja Strona z 2 Numeryczne rozwiązywanie równań i układów równań Rozwiązywanie pojedynczego równania - funkcja root Do rozwiązywania jednego równania z jedną niewiadomą służy funkcja root(f(z), z), gdzie: - f(z) jest funkcją lub wyrażeniem, którego pierwiastków szukamy (UWAGA funkcja f może mieć więcej niż jeden argument); - z jest argumentem funkcji f względem, którego szukamy pierwiastków; - funkcja root wymaga zdefiniowania wartości początkowej dla argumentu z, od którego rozpoczyna poszukiwanie numerycznego rozwiązania. Wynikiem działania funkcji root jest taka wartość z, dla której wyrażenie lub funkcja f(z) przyjmuje wartość zero. Zarówno funkcja f(z) jak i sama zmienna z muszą być wielkościami skalarnymi. MathCad oblicza pierwiastki zarówno rzeczywiste jak i zespolone. Aby znaleźć rozwiązanie zespolone, jako wartość początkową należy podać liczbę zespoloną. Tok postępowania jest następujący:. Zdefiniować pierwsze przybliżenie poszukiwanego rozwiązania. 2. Zdefiniować funkcję lub wyrażenie, którego pierwiastków szukamy przyrównując je do zera. Jeżeli szukamy pierwiastków równania f()=g(), to zapisujemy je w formie f()-g(). 3. użyć funkcję root wpisując w odpowiednie miejsca wyrażenie i zmienną względem, której znajdujemy rozwiązanie. Szukamy rozwiązania (miejsca zerowego) funkcji ep() = ^3 Definiujemy wartość początkową: := 3 Stosujemy funkcję root zapisując wyrażenie w postaci ep()-^3, wynik obliczeń wpisując pod zmienną a a := ( ) root ep( ) 3, a =.87 Jeśli badana funkcja ma kilka pierwiastków, które chcemy znaleźć, to - wartość początkowa musi wskazywać na każdy z nich; - możemy spróbować modyfikacji badanej funkcji biorąc zamiast f(z) funkcję f(z)/(z-a), gdzie a jest wcześniej znalezionym pierwiastkiem funkcji f(z). - w przypadku, gdy podejrzewamy możliwość wystąpienia kilku pierwiastków równania dobrze jest zrobić wykres przebiegu funkcji. Pozwoli to na lokalizację pierwiastków równania. Szukamy pierwiastków równania ^2-. Stosując różne przybliżenia początkowe, znajdujemy dwa pierwiastki. := 0. := 0. ( ) root 2, ( ) root 2, = =
Lekcja Strona 2 z 2 f ( ) := 3 0 + 2 Badana funkcja. Istnieje możliwość wystąpienia trzech różnych pierwiastków. :=, 4.9.. 0 Rysujemy wykres funkcji f ( ) 0 0 0 Znajdujemy pierwiastki równania zmieniając wartości startowe: := 2 root( f( ), ) = 3.28 := root( f( ), ) = 0.20 0 2 := root( f( ), ) = 3.07 Znajdujemy pierwiastki równania stosując transformację wyjściowego równania: := a := root( f( ), ) a = 0.20 f ( ) a2 := root, a a2 = 3.07 f ( ) a3 := root, ( a) ( a2) a3 = 3.28 W pewnych przypadkach funkcja root nie znajduje pierwiastków równania i kończy obliczenia z komunikatem "not converging". Może to oznaczać, że:. Badane wyrażenie nie posiada pierwiastków. 2. Wartości pierwiastków są zbyt odległe od przybliżenia początkowego. Należy zmienić przybliżenie początkowe i policzyć jeszcze raz. 3. Występują minima i maksima lokalne pomiędzy pierwiastkami. 4. W wyrażeniu występuje nieciągłość pomiędzy początkowym przybliżeniem, a pierwiastkami.. Funkcja ma "bardzo płaski przebieg" i nie można uzyskać wystarczającej dokładności obliczeń. W takim przypadku można zbudować funkcję g()=f()/f'() i spróbować dla niej znaleźć pierwiastki.
Lekcja Strona 3 z 2 Równania z parametrem Gdy chcemy znaleźć kilka pierwiastków równania w zależności od zmieniającego się parametru definiujemy nową funkcję, zależną od zmiennej względem, której szukamy pierwiastków oraz parametru wpływającego na rozwiązania. W funkcji tej po prawej stronie znaku równości wystąpi funkcja root. Interesują nas pierwiastki równania fa (, ) := e a 2 w zależności od parametru a Definiujemy wartości parametru a, dla których chcemy znaleźć pierwiastki a :=.. 0 Definiujemy funkcję podającą nam rozwiązania pierw( a, ) := root( f( a, ), ) Definiujemy wartość początkową dla funkcji root Obliczamy pierwiastki 0 := 0. ( ) a := pierw a, a a = 2 3 4 6 7 8 9 0 a -0.703-0.4-0.49-0.408-0.37-0.344-0.322-0.304-0.289-0.276 Sprawdzamy rozwiązania = e a a ( ) 2 a 2.49 0 - -3.28 0 - -9.489 0-4 -4.09 0-4 -2.8 0-4 -.29 0-4 -8.406 0 - -.8 0 - -4.2 0 - -3.43 0 -
Lekcja Strona 4 z 2 Pierwiastki wielomianów Do znajdowania pierwiastków wielomianów służy funkcja polyroots(v), gdzie v jest wektorem współczynników wielomianu, którego miejsca zerowe poszukujemy. Pierwszy element wektora v to wyraz wolny. Ostatni element wektora v to współczynnik przy wyrazie z najwyższą potęgą. Szukamy pierwiastków wielomianu ^3-0 + 2 Definiujemy wektor v 2 0 v := polyroots( v) 0 = 3.28 0.20 3.07 Szukamy pierwiastków wielomianu o współczynnikach zespolonych ^3 + (3+2i)^2 + (-4+6i) - 8i Definiujemy wektor v 8i 4 + 6i v := polyroots( v) 3 + 2i = 4 2i
Lekcja Strona z 2 Rozwiązywanie równań i układów równań - funkcja given - find Obszar rozwiązywania (solve block) given - find pozwala na znajdowanie pierwiastków równań jak i układów równań. MathCad pozwala rozwiązywać układy równań zawierające do pięćdziesięciu równań z pięćdziesięcioma niewiadomymi. Sposób postępowania:. Definiujemy wartości początkowe zmiennych względem, których poszukujemy miejsc zerowych; 2. Piszemy nagłówek inicjujący blok rozwiązywanych równań -. Wszystko to, co znajduje się po słowie, MathCad traktuje jako układ równań do rozwiązania. 3. Piszemy równania i/lub nierówności definiujące rozwiązywane równanie/układ równań; Liczba równań i nierówności musi być nie mniejsza od liczby niewiadomych 4. Piszemy funkcję zamykającą blok rozwiązywanych równań wraz z listą argumentów względem, których poszukujemy rozwiązania - Find(lista zmiennych). Wynikiem działania funkcji find jest:. Pojedyncza liczba, gdy funkcja find ma tylko jeden argument; 2. wektor odpowiedzi, gdy funkcja find ma kilka argumentów. Uwagi - wszystkie zmienne używane w bloku given - find muszą być wcześniej zdefiniowane; - wszystko to, co znajduje się pomiędzy słowami given i find traktowane jest jako równanie lub układ równań; - do oddzielenia prawej od lewej strony równości stosujemy operator przyrównania wprowadzony z menu lub skrótem klawiszowym {ctrl}+=; - w nierównościach można stosować operatory relacji: <, >,, ; - nie można stosować operatora relacji - różny ; - wewnątrz bloku given - find nie wolno używać definiującego znaku równości :=; - funkcji - Find nie można jawnie zagnieżdżać. Każdy obszar posiada tylko jedno własne given oraz find; - uzyskiwane rozwiązanie można przypisać do nowej funkcji takiej jak f():=find() i użyć w innym bloku - Find; - używane w bloku given - find zmienne nie mogą być tablicami ani zmiennymi iteracyjnymi. Muszą one być wielkościami skalarnymi. Znaleźć rozwiązanie równania ^2 + 0 = e^ z jedną niewiadomą, podstawiając otrzymane rozwiązanie pod zmienną a Definiujemy wartość początkową := 2 Definiujemy blok - Find 2 + 0 e Find( ) = 2.99 Powyższy blok - Find jest identyczny z funkcją root ( ) root 2 + 0 e, = 2.99
Lekcja Strona 6 z 2 Uzyskane z funkcji find rozwiązanie:. można bezpośrednio wyświetlić, tak jak powyżej. 2. Można również przypisać je nowej zmiennej, gdy zamierzamy używać tego rozwiązania w innych miejscach naszego dokumentu. - Gdy rozwiązanie jest skalarem, to zmienna przechowująca to rozwiązanie też jest skalarem (Przykład ). - Jeśli rozwiązanie jest wektorem to zmienna przechowująca to rozwiązanie też będzie wektorem (Przykład 2). - W przypadku rozwiązania będącego wektorem przypisać je można wektorowi złożonemu z kilku zmiennych (Przykład 3). 3. Można zdefiniować nową funkcję, której przypisana jest funkcji find: np. f(,y,...,a,b,...):=find(,y,...), gdzie, y,... są argumentami funkcji find, natomiast a, b,... są parametrami, od których zależy poszukiwane rozwiązanie. Przykład Rozwiązanie jest wielkością skalarną φ := φ φ + φ a := Find( φ) a =.68 Przykład 2 Rozwiązanie jest wielkością wektorową := y := 2 + y 2 6 + y 2 sol := Find(, y) sol = 2.44 0.44 Przykład 3 Rozwiązanie jest wielkością wektorową, ale każdą ze współrzędnych przypisano innej zmiennej := y:= val 2 + y 2 6 + y 2 yval := Find(, y) val = 0.44 yval = 2.44
Lekcja Strona 7 z 2 Definiowanie bloku - Find jako funkcji z parametrami t := 0.02 Wartość początkowa t 2.0 log ε D 3.7 2. + Rozwiązywane równanie R t ( ) := Find t ft ε, D, R () Funkcja ft(ε,d,r) jest zależna od trzech parametrów i podaje rozwiązanie równania uzyskanego w bloku given - find. Każdorazowe użycie funkcji ft powoduje, że funkcja find rozwiązuje układ równań od nowa, dla nowego zbioru parametrów. Parametry można zmieniać poprzez prostą zamianę, użycie zmiennych iteracyjnych lub zmiennych z indeksami. Taki sposób postępowania można użyć zarówno wtedy, gdy rozwiązanie jest skalarem jak i wtedy, gdy rozwiązanie jest wektorem. ε 0.0008 := := Wartości parametrów, od których zależy rozwiązanie D 2. i := 0.. 20 ( ) r i := 0 4 + 0 4 i f i := ft ε, D, r i Rozwiązanie jako funkcja zmiennego parametru r 0.04 f 0.03 0.02 Wykres zależności rozwiązania od parametru 0.0 0. 0 2. 0 r 3. 0
Lekcja Strona 8 z 2 Ciąg kilku rozwiązań danych w formie wektorowej := y := 2 + y 2 R + y 2 FR ( ) := Find(, y) R := 2.. 6 FR ( ) 0.707 2 2.22 2.44 F() 4 = 2 2.342 0 9 = FR ( ) = 0.293 2.342 0-9 -0.22-0.44 Funkcja F(R)podaje rozwiązania układu równań dla danego parametru R. Rozwiązanie to jest wektorem, w którym pierwsza współrzędna odpowiada pierwszemu argumentowi funkcji find, druga współrzędna natomiast drugiemu argumentowi funkcji find. Chcąc uzyskać rozwiązania należy użyć funkcji F odpowiednio z indeksem 0 i. MathCad może przedstawić tylko jeden wynik jako rozwiązanie obszaru rozwiązywania. W przypadku, gdy istnieją rozwiązania wielokrotne można próbować innych wartości początkowych, lub też wprowadzić dodatkowe ograniczenia, wykluczające bieżące rozwiązania. Przykład 2 i 3 powyżej pokazał jak zmiana wartości początkowej może dać inne rozwiązanie. Wprowadzamy dodatkowe ograniczenia w bloku given - find := y := Wartość początkowa 2 + y 2 6 + y 2 Rozwiązywany układ równań y > 2 Ograniczenia nałożone na rozwiązanie val yval := Find(, y) val = 0.44 yval = 2.44 Sprawdzamy rozwiązanie val 2 + yval 2 = 6 + y = 2 := y := Wartość początkowa 2 + y 2 6 + y 2 Rozwiązywany układ równań > y 2 Ograniczenia nałożone na rozwiązanie val := Find(, y) yval val = 2.44 yval = 0.44
Lekcja Strona 9 z 2 Sprawdzamy rozwiązanie val 2 + yval 2 = 6 + y = 2 W pewnych sytuacjach MathCad nie podaje rozwiązania. Może to oznaczać, że:. Pierwiastki nie istnieją; 2. Rozwiązanie jest zespolone, a wartość pierwszego przybliżenia jest liczbą rzeczywistą, lub na odwrót; 3. Użyte wartości początkowe są daleko położone od rozwiązania. Pomiędzy wartością początkową, a rozwiązaniem istnieją minima lokalne i MathCad nie jest wstanie wskazać na rozwiązanie. Należy zmienić wartości początkowe i/lub wstawić nierówności chroniące program przed poszukiwaniami w niewłaściwych kierunkach. 4. Funkcja jest "bardzo płaska" i MathCad nie jest wstanie znaleźć rozwiązania z wystarczającą dokładnością. 2 + 3 0 := Find ( ) = Brak rzeczywistego rozwiązania := i 2 + 3 0 Find ( ) =.732i Liczba urojona i jest wprowadzona jako i MathCad wymaga, aby liczba wyrażeń (ograniczeń) w bloku rozwiązywania była nie mniejsza od liczby niewiadomych. Gdy naruszy się ten warunek pojawia się komunikat "too few constraints". Czasami MathCad próbuje znaleźć rozwiązanie, trudno je jednakże zinterpretować jako poprawne. Celem rozwiązania takiego problemu należy albo dopisać ograniczenia w bloku given - find, tak, aby uzyskać tyle równań ile jest niewiadomych, albo też potraktować "nadmiarowe" niewiadome jako parametry. := 0 y := 0 z := v := 0 w := 2 + y z 2 y 2 w + w v 3 y z := Find(, y, z, v, w) MathCad sam przyjął niektóre zmienne jako parametry. v w = y = 4.667 z = v = 0 w = 2.333 0 Sprawdzamy rozwiązanie: + y z 2 w 0 = 2 y + w v 3 = 0
Lekcja Strona 0 z 2 + y z 2 y 2 w + w v 3 Zmienne, y oraz v MathCad traktuje jako stałe parametry z w := Find( z, w) z = w = 2.333 Sprawdzamy rozwiązanie: + y z 2 w 0 = 2 y + w v 3 = 0
Lekcja Strona z 2 Problemy do samodzielnego rozwiązania Znaleźć pierwiastki równania: T 2. 3 2 0; 0 3 2. ^-4^4-^3+20^2+44+84=0; t 3. dt 0; t 2 + 0 4. ^4+^3+2-4=0;. ^3-4^2-4-=0; 6. ^3+60-80=0; 7. 4^3-4^2+-=0; 8. z^3-6z-9=0; 9. ^3-4^2++6=0; 0. ^3-^2-2+24=0;. 9^3+8^2--2=0; 2. ^3-6+3=0; 3. y=sin()-^3; 4.. X 2 2 2 3 0 T 0 Wykreślić zależność pierwiastków równania/układu równań od parametru a. ^3+^2*a--a=0; t 2. dt 0; t 2 + a 3. ^2+y^2=a i =y; d 4. d cos( ) 4 a4 y; T a. 2 2 0 0 3
Lekcja Strona 2 z 2 Znaleźć pierwiastki układów równań: 2y 3. y + 2 0 i +y=2; + y 2 + y 2 0 π sin( ) 2. a 3. A+B=/(AB) i A/B=A; 4. *y=0 i ^2-y^2=;. y=2^2- i y=-0.3; 6. y=^3-6-9 i y=40-2; 7. y=^2- i y=; 8. +y=, -z=-2 i 2+y+3z=9; 9. +y-2=0, -y+z=2 i-+y+z=4; 0. 3+y-2z=, -3y-6z=;. ^2+y^2-2=0, 3-2y=6; 2. ^2+y^2=2 i y*=-2; 3. ^2-y^2=-4 i y^2=; 4. y=0.2^-6^2-90 i y=0+;. a+b=2, b+c=-, c+d=2 i d+a=; 6. +y=2 i /+/y=3/8; 7. ^2-y^2=24 i -y=4; 8. ^3+y^3=3 i +y=; d 2 + y 2 i y+ ; n 2 n =