Rozwiązywanie równań nieliniowych Metoda połowienia (bisekcji) Poszukujemy rozwiązania równania f(x) = 0. Załóżmy, że funkcja f(x) jest ciągła i monotoniczna w przedziale [a,b] oraz f(a) f(b) < 0. Oba warunki zapewniają istnienie jednego pierwiastka równania w (a,b). Wyznaczmy punkt. Następnie obliczmy wartość funkcji f( ). Jeżeli jest ona równa zeru, to otrzymaliśmy pierwiastek równania a =. Jeżeli nie, to spośród przedziałów [a, ], [, b] wybieramy ten, na końcach którego wartości funkcji są przeciwnych znaków. Mając w ten sposób zdefiniowany nowy pierwiastek, możemy powtarzać proces obliczeniowy. Otrzymujemy ciąg następujących przedziałów: [a (1),b (1) ], [a (2),b (2) ],..,[a (n),b (n) ],. Obliczenia przerywamy, gdy otrzymany przedział [a (n),b (n) ] jest mały, tzn. gdzie jest dokładnością obliczeń. Przykład: b (n) a (n) Rozwiążmy równanie: sin x 0.5x = 0 metodą połowienia. Weźmy a (0) = 0.1, b (0) =3,1, czyli przedział [0.1, 3.1] i na końcach tego przedziału policzmy wartości funkcji f(x) = sin x 0.5x. Otrzymujemy: f(a (0) ) = sin 0,1 0,5*0,1 = 0,0498334166, f(b (0) )= sin 3,1 0,5 *3,1 =-1,5084193375. Na końcach przedziału [a (0),b (0) ] wartości funkcji f są przeciwnych znaków. W [a (0), b (0) ] jest pierwiastek naszego równania. Dalej wyznaczmy połowę przedziału [a (0),b (0) ], czyli
i policzmy x = =1.6 f(x) = 0,1995736030. Spośród przedziałów [a (0),x], [x,b (0) ] wybieramy przedział, na końcach którego funkcja f ma wartości różnych znaków, a więc [x,b (0) ] = [1.6, 3.1] = [a (1),b (1) ]. Następnie przechodzimy do wyznaczenia połowy przedziału [a (1),b (1) ]. Postępowanie kontynuujemy. W zależności od przyjętej dokładności, przerywamy obliczenia. Rozwiązanie równania nieliniowego (Szukaj wyniku) Libre Office Calc oferuje możliwość rozwiązywania równań nieliniowych. Przykład jak uprzednio : Rozwiążmy równanie: sin x 0.5x = 0. W arkuszu kalkulacyjnym zapisujemy więc formułę (lewą stronę równania): =sin($a$9)-0,5*$a$9 np. w komórce A1, w komórce A9 wpisujemy wartość startową : 2,7. W arkuszu z Libre Office Calc menu Narzędzia uruchamiamy Szukaj wyniku. Zostaje otwarte okno dialogowe: w Komórce formuły wpisujemy adres formuły u nas $A$1, w komórce wartość docelowa wartość prawej strony,czyli 0, Komórka ze zmienną zawiera adres sensownej wartości startowej rozwiązania (u nas $a$9) i naciskamy
przycisk [OK]. Po zakończeniu zostaje wyświetlone okienko z komunikatem: Po zatwierdzeniu go przyciskiem [TAK] znalezione rozwiązanie zostaje wpisane do komórki zawierającej uprzednio wartość startową( u nas w A9), natomiast w okienku formuły ( u nas A1) zostaje wyświetlona jej wartość docelowa (czyli wartość bardzo bliska zeru). Optymalizacja Wiele zagadnień sprowadza się do wybrania maksymalnej lub minimalnej wartości z ciągu liczb. Tego typu zadania łatwo rozwiązać za pomocą arkusza kalkulacyjnego. Przykład. Dane są trzy punkty o współrzędnych A = (0,2), B = (0,6), C = (x,0). Wyznaczyć taką liczbę x, aby kąt ACB osiągnął maksymalną wartość. Dla znalezionej wartości x podać odpowiednią wartość kąta w radianach i stopniach. Y B A C 0 x X
Rozwiązanie Kąt ACB = kąt BC0 kąt AC0 Kąt ACB = ar ctg(6/x) ar ctg(2/x) Zadanie sprowadza się do znalezienia maksimum funkcji opisanej powyższym wzorem. Wystarczy policzyć wartość funkcji (kąt ACB) dla różnych wartości x i wybrać stąd wartość maksymalną, czyli stablicować funkcję określającą kąt ACB dla wybranych x. Będziemy określać regularnie x od xp do xk ze stałym krokiem dx. Warto zwrócić uwagę na to, że krok tablicowania określa również dokładność rozwiązania. Sporządźmy arkusz kalkulacyjny:.a/.b/.c/.d/ 1 dx= 0,1 2 x radiany stopnie 3 0,1 4 0,2 5.. 62 6,0 Przy sporządzaniu arkusza pamiętajmy, aby w komórkę A3 wpisać wartość początkową, a w komórkę A4 przepis =A3+B$1, a teraz skopiujmy pole A4 na pola A5.. A62 ( wartość ta bierze się stąd, że górny zakres założyliśmy jako liczbę 6: (6-0.3)/0.1 = 57 wartości). B3 obliczymy wg przepisu : =(ATAN(6/A3) ATAN(2/A3)), a następne wyrazy uzyskamy przez skopiowanie B3 na pola B4.. B62. Celem przeliczenia kąta w radianach na stopnie w polu C3 zastosujemy przepis: =B3*180/PI(). Pozostałe wartości uzyskamy przez skopiowanie pola C3 na pola C4.. C62.
Z pól B3.. B62 wyszukać maksymalną wartość stosując funkcję MAX(B3..B62). Tak znaleziona wartość stanowi optymalną wartość z dokładnością do kroku tablicowania. Celem uzyskania dokładniejszych rozwiązań należy zmienić pole B1 (krok) i pole A32 (wartość początkową). Dla danych wart wykonać wykres typu XY, obierając dla osi X zakres A3.. A62, a dla osi Y kąt bądź w radianach B3.. B62, bądź w stopniach C3.. C62. Regresja (liniowa) W zagadnieniach inżynierskich często spotykamy się z danymi otrzymanymi w wyniku pomiarów. Załóżmy, że mamy zbiór punktów doświadczalnych zmiennej niezależnej {x 1, x 2,, x n } i odpowiadający im zbiór punktów zmiennej zależnej {y 1, y 2,, y n }. Naszym zadaniem jest dobrać linię prostą y=a+bx do zadanego zestawu n punktów ekstremalnych w ten sposób, aby suma kwadratów odchyleń wartości pomiarowych od prostej w zadanych punktach {x 1, x 2,, x n } była najmniejsza. Matematycznie można zapisać następująco: Tak postawione zadanie rozwiązuje się, gdy uwzględnia się tylko błędy pomiarowe y, a błędy x są pomijalnie małe. Zagadnienie sprowadza się do znalezienia takich wartości a i b (współczynników równania prostej), dla których Q przyjmie najmniejszą wartość, t.zn. do znalezienia minimum Q jako funkcji zmiennych a i b. W tym celu należy przyrównać do zera pochodne cząstkowe Q/ a i Q/ b. Obliczając pochodne cząstkowe otrzymujemy: Tak postawione zadanie możemy rozwiązać na kilka sposobów. I sposób: Po uporządkowaniu i podzieleniu obu stron równań przez (-2) otrzymujemy układ dwu równań o dwu niewiadomych a i b:
Rozwiązaniem tego układu jest: Celem wyznaczenia współczynników a i b za pomocą arkusza kalkulacyjnego należy : a/ wpisać do arkusza kalkulacyjnego pomiary {x 1 y 1 ; x 2 y 2 ; ;x n y n }, najlepiej w postaci dwu kolumn, b/ przygotować dodatkowe dwie kolumny na podstawie zadanych wartości x i 2 i x i y i, c/ obliczyć sumy w poszczególnych kolumnach wykorzystując funkcję SUMA, d/ obliczyć liczbę punktów pomiarowych posługując się funkcją ILE.LICZB e/ na podstawie wyników z punktu c i d wyliczyć wartości współczynników a i b wg wzorów. II sposób: Celem wyprowadzenia wzorów macierzowych można wyjść od zapisu modelu matematycznego y i = a + bx i dla i=1, 2,,n
Otrzymujemy układ nadokreślony n równań o dwu niewiadomych gdzie: Y = X * a Y =, X =, a = Po pomnożeniu lewostronnie przez X T otrzymujemy: X T * Y = X T * X * a Układ ten jest już układem dwu równań o dwu niewiadomych. Rozwiązaniem jest : a = ( X T * X ) -1 *X T * Y Celem wyznaczenia współczynników a, b z powyższego wzoru za pomocą arkusza kalkulacyjnego należy: a/ wpisać do arkusza kalkulacyjnego macierze X i Y, b/ obliczyć X T używając funkcji: Transponuj c/ obliczyć iloczyn macierzy X T * X używając funkcji:macierz.iloczyn d/ odwrócić macierz ( X T * X ) -1 używając funkcji:macierz.odw e/ obliczyć iloczyn macierzy X T * Y używając funkcji : Macierz.iloczyn f/ obliczyć iloczyn ( X T * X ) -1 *X T * Y korzystając z częściowych wyników punktu d i e, co daje nam ostateczny wynik współczynników a i b. III sposób: polega na wykorzystaniu gotowej funkcji a/ wpisać do arkusza kalkulacyjnego wektor [x 1, x 2,,x n ] oraz [y 1, y 2,,y n ];
b/ wykorzystać funkcję : Reglinp IV sposób: polega na wykorzystaniu makra Regresja z menu Data, Statystyka a/ wpisać do arkusza kalkulacyjnego wektor [x 1, x 2,,x n ] oraz [y 1, y 2,,y n ]; b/ wykorzystać makro: Regresja Ćwiczenie: Na podstawach chemii Mendelejew przytacza dane rozpuszczalności azotanu sodu NaNO 3 w stu gramach wody w zależności od temperatury: Temperatura 0 4 10 15 21 29 36 51 68 Rozpuszczalność 66,7 71,0 76,3 80,6 85,7 92,9 99,4 113,6 125,1 Wyrazić zależność rozpuszczalności od temperatury wzorem: y = a + b * t gdzie: y rozpuszczalność, t temperatura. Prawidłowe rozwiązanie: a = 67,5, b = 0,87.
1. Postać ogólna Elementy języka Visual Basic (VBA) Sub Nazwa_makra () komentarze lub puste Instrukcje End Sub Nagłówek podprogramu Koniec kodu makra Function Nazwa_Funkcji(arg) Instrukcje Nazwa_Funkcji=.. End Function Definicja funkcji własnej 2. Deklaracja zmiennych Dim nazwa_zmiennej As typ_zmiennej Nazwa typu Zakres wartości Liczba cyfr Liczba bajtów Integer (-2 15 -- 2 15-1) 2 Single +-(1,5e-45 3,4e38) 7-8 4 Double +-(5e-324 1,7e308 15-16 8 Deklaracja tablic: Dim nazwa_tablicy ( 1 to górny zakres) As typ_tablicy
3. Operatory i wyrażenia arytmetyczne Operator VBA Działanie - Zmiana znaku ^ Potęgowanie * i / Mnożenie i dzielenie + i - Dodawanie i odejmowanie = Przypisanie wartości 4. Operatory i wyrażenia logiczne X FALSE FALSE TRUE TRUE Y FALSE TRUE FALSE TRUE Not X TRUE FALSE X And Y FALSE FALSE FALSE TRUE X Or Y FALSE TRUE TRUE TRUE Operatory porównania Operator Znaczenie = Równe <> Nierówne > Większe < Mniejsze >= Większe lub równe <= Mniejsze lub równe
5. Instrukcje warunkowe instrukcja schemat If wyrażenie_logiczne Then Instrukcja_1 Instrukcja_2. End If N Czy wyr prawdz? instr T
If wyrażenie_logiczne Then Instrukcja_1 Instrukcja_2. Else Instrukcja_3 Instrukcja_4. End If czy wyr instr1 i T N Instr3 i 6. Instrukcja skoku GoTo etykieta_wiersza_kontynuacji_programu 7. Instrukcje iteracyjne Instrukcja pętli For licznik=wyr1 To wyr2 Step wyr3 Instrukcje Next licznik
licznik= wyr1 T (wyr2- licznik)*zna k(wyr3) N instrukcje licznik=licznik+wyr3 8. Wyświetlenie wyniku MsgBox Nazwa_zmiennej
9. Wczytanie z klawiatury Dim wart1 As String Dim S As Single wart1=inputbox( Wpisz liczbe ) S=CSng(wart1) MsgBox S wczytanie tekstu zamiana tekstu na liczbę LibreOffice Macra 1. W menu Narzędzia: Macra 2. Wybrać Zarządzaj macrami: LibreOffice-Basic 3. Otwiera się okno, w którym możemy przejść do edycji i utworzyć nowe macro i zapisać oraz możemy je uruchomić: opcja Uruchom Gnuplot Darmowa aplikacja zarówno w Windowsach, jak i Linuxie. Po uruchomieniu gnuplota możemy skorzystać z pomocy. Wywołanie komendy: help nazwa polecenia pozwala na uzyskanie szczegółowych informacji na temat interesującej nas instrukcji. Do rysowania wykresów dwu wymiarowych służy komenda plot. Przykład 1: Polecenie: plot sin(x) wykreśli funkcje sin(x) w domyślnym dla x przedziale <-10,10> i wyskaluje oś y
Przykład 2: plot nazwa_pliku smooth csplines wyrysuje nam krzywą za zestaw punktów biorąc jako współrzędne x wartości z pierwszej kolumny a za współrzędne y wartości z 2 kolumny z pliku. Proszę pamiętać o umieszczeniu w cudzysłowie przed nazwą pliku ścieżki dojścia do pliku. Do rysowania dwuwymiarowych rzutów powierzchni 3d służy komenda splot. Przykład 3: splot sin(x*y) kreśli powierzchnię, którą można oglądać po różnym kątem Przykład 4: splot nazwa pliku with lines np. gdy chcemy wyrysować x 2 +y 2 w przedziale dla x <-3,3> oraz w przedziale dla y <-3,3>, przyjmując dla obu zmiennych krok 1 należy przygotować dane w następujący sposób: -3.000000-3.000000 18.000000-3.000000-2.000000 13.000000-3.000000-1.000000 10.000000-3.000000 0.000000 9.000000-3.000000 1.000000 10.000000-3.000000 2.000000 13.000000-3.000000 3.000000 18.000000-2.000000-3.000000 13.000000-2.000000-2.000000 8.000000-2.000000-1.000000 5.000000-2.000000 0.000000 4.000000-2.000000 1.000000 5.000000-2.000000 2.000000 8.000000-2.000000 3.000000 13.000000-1.000000-3.000000 10.000000-1.000000-2.000000 5.000000-1.000000-1.000000 2.000000-1.000000 0.000000 1.000000-1.000000 1.000000 2.000000-1.000000 2.000000 5.000000-1.000000 3.000000 10.000000
0.000000-3.000000 9.000000 0.000000-2.000000 4.000000 0.000000-1.000000 1.000000 0.000000 0.000000 0.000000 0.000000 1.000000 1.000000 0.000000 2.000000 4.000000 0.000000 3.000000 9.000000 1.000000-3.000000 10.000000 1.000000-2.000000 5.000000 1.000000-1.000000 2.000000 1.000000 0.000000 1.000000 1.000000 1.000000 2.000000 1.000000 2.000000 5.000000 1.000000 3.000000 10.000000 2.000000-3.000000 13.000000 2.000000-2.000000 8.000000 2.000000-1.000000 5.000000 2.000000 0.000000 4.000000 2.000000 1.000000 5.000000 2.000000 2.000000 8.000000 2.000000 3.000000 13.000000 3.000000-3.000000 18.000000 3.000000-2.000000 13.000000 3.000000-1.000000 10.000000 3.000000 0.000000 9.000000 3.000000 1.000000 10.000000 3.000000 2.000000 13.000000 3.000000 3.000000 18.000000 Pierwsza kolumna jest traktowana jako współrzędne x, druga kolumna jako współrzędne y, a trzecia jako współrzędne z. Proszę również zwrócić na pustą linię po zmianie x jest ona konieczna. Oczywiście takie dane mogą być wynikami z jakiegoś programu, mogą być przygotowane pod jakimś edytorem tekstowym.
Oto rezultat: