Numeryczne rozwiązywanie równań i układów równań

Transkrypt

Numeryczne rozwiązywanie równań i układów równań
Strona 1 z 12
Lekcja 11
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:
1. 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(x)=g(x), to zapisujemy je w formie f(x)-g(x).
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 exp(x) = x^3
Definiujemy wartość początkową:
x := 3
Stosujemy funkcję root zapisując wyrażenie w postaci exp(x)-x^3, wynik obliczeń wpisując pod zmienną a
3
a := root ( exp( x) − x , x)
a = 1.857
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 x^2-1. Stosując różne przybliżenia początkowe, znajdujemy dwa
pierwiastki.
x := 0.5
root ( x2 − 1 , x) = 1
x := −0.5
root ( x2 − 1 , x) = −1
22.09.2008
Mariusz B. Bogacki
Technologia Informacyjna
Pracownia Projektowa
Strona 2 z 12
Lekcja 11
Badana funkcja. Istnieje możliwość wystąpienia trzech różnych
pierwiastków.
3
f( x) := x − 10 ⋅ x + 2
x := −5 , −4.9 .. 5
50
Rysujemy wykres funkcji
f ( x)
0
50
5
0
5
x
Znajdujemy pierwiastki równania zmieniając wartości startowe:
x := −2
root ( f( x) , x) = −3.258
x := 0
root ( f( x) , x) = 0.201
x := 2
root ( f( x) , x) = 3.057
Znajdujemy pierwiastki równania stosując transformację wyjściowego równania:
x := 1
a1 := root ( f( x) , x)
a1 = 0.201
⎛ f( x) , x⎞
⎝ x − a1 ⎠
a2 = 3.057
f( x)
⎡
, x⎤⎥
⎣ ( x − a1) ⋅ ( x − a2) ⎦
a3 = −3.258
a2 := root ⎜
a3 := root ⎢
W pewnych przypadkach funkcja root nie znajduje pierwiastków równania i kończy obliczenia z
komunikatem "not converging". Może to oznaczać, że:
1. 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.
5. 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(x)=f(x)/f'(x) i spróbować dla niej znaleźć pierwiastki.
22.09.2008
Mariusz B. Bogacki
Technologia Informacyjna
Pracownia Projektowa
Strona 3 z 12
Lekcja 11
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
f( a , x) := e x − a ⋅ x2
w zależności od parametru a
Definiujemy wartości parametru a, dla których chcemy znaleźć pierwiastki
a := 1 .. 10
pierw ( a , x) := root ( f( a , x) , x)
Definiujemy funkcję podającą nam rozwiązania
x0 := −0.5
Definiujemy wartość początkową dla funkcji root
xa := pierw ( a , xa−1)
Obliczamy pierwiastki
Sprawdzamy rozwiązania
a =
xa =
x
e a − a ⋅ ( xa) 2
1
2
3
4
5
6
7
8
9
10
-0.703
-0.54
-0.459
-0.408
-0.371
-0.344
-0.322
-0.304
-0.289
-0.276
2.149·10
-3.128·10
-9.489·10
-4.109·10
-2.158·10
-1.291·10
-8.406·10
-5.81·10
-4.2·10
-3.143·10
-5
-5
-4
-4
-4
-4
-5
-5
-5
-5
22.09.2008
Mariusz B. Bogacki
Technologia Informacyjna
Pracownia Projektowa
Strona 4 z 12
Lekcja 11
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
x^3 - 10x + 2
⎛ 2 ⎞
⎜ −10
v := ⎜
⎟
0
⎜
⎝ 1 ⎠
Definiujemy wektor v
⎛ −3.258 ⎞
polyroots( v) = ⎜ 0.201
⎜
⎝ 3.057 ⎠
Szukamy pierwiastków wielomianu o współczynnikach zespolonych
x^3 + (3+2i)x^2 + (-4+6i)x - 8i
Definiujemy wektor v
⎛ −8i ⎞
⎜ −4 + 6i
v := ⎜
⎟
⎜ 3 + 2i
⎝ 1 ⎠
⎛ −4 ⎞
polyroots( v) = ⎜ −2i
⎜
⎝ 1 ⎠
22.09.2008
Mariusz B. Bogacki
Technologia Informacyjna
Pracownia Projektowa
Strona 5 z 12
Lekcja 11
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:
1. Definiujemy wartości początkowe zmiennych względem, których poszukujemy miejsc zerowych;
2. Piszemy nagłówek inicjujący blok rozwiązywanych równań - Given. Wszystko to, co znajduje się po
słowie Given, 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:
1. 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ń;
wprowadzony z
- do oddzielenia prawej od lewej strony równości stosujemy operator przyrównania
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 Given - 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(x):=find(x) i użyć w innym bloku
Given - 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 x^2 + 10 = e^x z jedną niewiadomą, podstawiając otrzymane
rozwiązanie pod zmienną a
Definiujemy wartość początkową
x := 2
Definiujemy blok Given - Find
Given
x2 + 10
ex
Find( x) = 2.919
Powyższy blok Given - Find jest identyczny z funkcją root
(
)
2
x
root ⎡⎣ x + 10 − e , x⎤⎦ = 2.919
22.09.2008
Mariusz B. Bogacki
Technologia Informacyjna
Pracownia Projektowa
Strona 6 z 12
Lekcja 11
Uzyskane z funkcji find rozwiązanie:
1. 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 1).
- 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(x,y,...,a,b,...):=find(x,y,...),
gdzie x, y, ... są argumentami funkcji find, natomiast a, b, ... są parametrami, od których zależy poszukiwane
rozwiązanie.
Przykład 1
Rozwiązanie jest wielkością skalarną
φ := 1
Given
φ
1+φ
1
φ
a := Find( φ )
a = 1.618
Przykład 2
Rozwiązanie jest wielkością wektorową
x := 1
y := 1
Given
2
2
x +y
x+ y
6
2
sol = ⎛⎜
⎞
⎝ −0.414 ⎠
sol := Find( x , y)
2.414
Przykład 3
Rozwiązanie jest wielkością wektorową, ale każdą ze współrzędnych przypisano innej zmiennej
x := −1
y := 1
Given
x2 + y2
6
x+ y
⎛ xval ⎞
:= Find( x , y)
⎜
⎝ yval ⎠
2
xval = −0.414
yval = 2.414
22.09.2008
Mariusz B. Bogacki
Technologia Informacyjna
Pracownia Projektowa
Strona 7 z 12
Lekcja 11
Definiowanie bloku Given - Find jako funkcji z parametrami
t := 0.02
Wartość początkowa
Given
⎛ ε ⋅ D− 1
1
t
−2.0 ⋅ log⎜
⎝
3.7
2.51
+
⎞
R⋅ t ⎠
Rozwiązywane równanie
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.
ft( ε , D , R) := Find( t)
D := 2.5
ε := 0.00085
i := 0 .. 20
ri := 10 4 + 10 4⋅ i
Wartości parametrów, od których zależy rozwiązanie
fi := ft( ε , D , ri)
Rozwiązanie jako funkcja zmiennego parametru r
0.04
Wykres zależności rozwiązania od parametru
0.03
f
0.02
0.01
0
1 .10
5
2 .10
5
r
3 .10
5
22.09.2008
Mariusz B. Bogacki
Technologia Informacyjna
Pracownia Projektowa
Strona 8 z 12
Lekcja 11
Ciąg kilku rozwiązań danych w formie wektorowej
x := 1
y := 1
Given
2
2
x +y
R
x+ y
2
2
⎛
⎞
−
9
⎝ 2.342 × 10 ⎠
F ( 4) = ⎜
F ( R) := Find( x , y)
R := 2 .. 6
F ( R) 0 =
F ( R) 1 =
1
1.707
2
2.225
2.414
1
0.293
2.342·10 -9
-0.225
-0.414
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 1.
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
x := 1
y := 1
Wartość początkowa
Given
2
2
x +y
x+ y
6
x≤ 1
Rozwiązywany układ równań
2
y> 2
Ograniczenia nałożone na rozwiązanie
⎛ xval ⎞
:= Find( x , y)
⎜
⎝ yval ⎠
xval = −0.414
2
2
xval + yval = 6
Sprawdzamy rozwiązanie
x := 1
yval = 2.414
y := 1
x+ y = 2
Wartość początkowa
Given
2
2
x +y
x> 1
x+ y
6
y≤ 2
⎛ xval ⎞
:= Find( x , y)
⎜
⎝ yval ⎠
Mariusz B. Bogacki
2
Rozwiązywany układ równań
Ograniczenia nałożone na rozwiązanie
xval = 2.414
yval = −0.414
22.09.2008
Technologia Informacyjna
Pracownia Projektowa
Strona 9 z 12
Lekcja 11
xval2 + yval2 = 6
Sprawdzamy rozwiązanie
x+ y = 2
W pewnych sytuacjach MathCad nie podaje rozwiązania. Może to oznaczać, że:
1. 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ą.
x := 1
Given
x2 + 3
0
Find( x) =
x := i
Given
2
x +3
0
Find( x) = 1.732i
Brak rzeczywistego rozwiązania
Liczba urojona i jest wprowadzona jako 1i
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.
x := 10
y := 50
z := 5
v := 0
w := −2
Given
x + y − z − 2⋅w
5
x − 2⋅ y + w − v
3
⎛x⎞
⎜y
⎜ ⎟
⎜ z ⎟ := Find( x , y , z , v , w)
⎜v⎟
⎜
⎝w⎠
x = 10
y = 4.667
Sprawdzamy rozwiązanie:
MathCad sam przyjął niektóre zmienne jako parametry.
z=5
v=0
x + y − z − 2⋅w − 5 = 0
w = 2.333
x − 2⋅ y + w − v − 3 = 0
22.09.2008
Mariusz B. Bogacki
Technologia Informacyjna
Pracownia Projektowa
Strona 10 z 12
Lekcja 11
Given
x + y − z − 2⋅w
5
x − 2⋅ y + w − v
3
Zmienne x, y oraz v MathCad traktuje jako stałe parametry
⎛z⎞
:= Find( z , w)
⎜
⎝w⎠
Sprawdzamy rozwiązanie:
z=5
w = 2.333
x + y − z − 2⋅w − 5 = 0
x − 2⋅ y + w − v − 3 = 0
22.09.2008
Mariusz B. Bogacki
Technologia Informacyjna
Pracownia Projektowa
Strona 11 z 12
Lekcja 11
Problemy do samodzielnego rozwiązania
Znaleźć pierwiastki równania:
T
⎛ x 1 2 ⎞
⎜
1. ⎜ −3 x2 −1 ⎟
⎜
3
⎝ 1 0 x ⎠
0;
2. x^5-4x^4-155x^3+210x^2+5544x+5184=0;
x
⌠ t−1
3. ⎮
dt
⎮ t2 + 1
⌡0
0;
4. x^4+x^3+2x-4=0;
5. x^3-4x^2-4x-5=0;
6. x^3+60x-80=0;
7. 4x^3-4x^2+x-1=0;
8. z^3-6z-9=0;
9. x^3-4x^2+x+6=0;
10. x^3-5x^2-2x+24=0;
11. 9x^3+18x^2-x-2=0;
12. x^3-6x+3=0;
13. y=sin(x)-x^3;
⎛1 x ⎞
14. ⎜
0
⎝x X⎠
T
⎛ x 1 2 ⎞
⎜
15. ⎜ −1 x2 −2 ⎟
⎜
3
⎝ 1 1 x ⎠
0
Wykreślić zależność pierwiastków równania/układu równań od parametru a
1. x^3+x^2*a-x-a=0;
x
⌠ t−1
2. ⎮
dt
⎮ t2 + 1
⌡a
0;
3. x^2+y^2=a i x=y;
1
d
4. cos ( x) − ax4
4
dx
T
⎛ x 1 a−1⎞
⎜
5. ⎜ −1 x2 −2 ⎟
⎜
3
⎝ 1 0 x ⎠
y;
0
22.09.2008
Mariusz B. Bogacki
Technologia Informacyjna
Pracownia Projektowa
Strona 12 z 12
Lekcja 11
Znaleźć pierwiastki układów równań:
3 ⎞
1
2y
⎛ x
⎜
1
x−1 y+ 2
5 ⎟
1. ⎜
⎜x+ y 2 x+ 1 y−2 ⎟
⎜
x
0
1 ⎠
⎝ x
0i
π
⌠ sin ( x)
2. ⎮
dx
⎮
x
⌡a
2
2
x +y ix
x+y=2;
5
y+
∑
n=1
1
n2
;
3. A+B=1/(AB) i A/B=A;
4. x*y=10 i x^2-y^2=1;
5. y=2x^2-5 i y=x-0.3;
6. y=x^3-6x-9 i y=40x-12;
7. y=x^2-15 i y=x;
8. x+y=1, x-z=-2 i 2x+y+3z=19;
9. x+y-2=0, x-y+z=2 i-x+y+z=4;
10. 3x+y-2z=5, 5x-3y-6z=11;
11. x^2+y^2-25=0, 3x-2y=6;
12. x^2+y^2=25 i y*x=-12;
13. x^2-y^2=-4 i y^2=5x;
14. y=0.2^x-6x^2-90 i y=50x+5;
15. a+b=2, b+c=-1, c+d=2 i d+a=5;
16. x+y=12 i 1/x+1/y=3/8;
17. x^2-y^2=24 i x-y=4;
18. x^3+y^3=3 i x+y=1;
22.09.2008
Mariusz B. Bogacki
Technologia Informacyjna
Pracownia Projektowa

Podobne dokumenty