Programowanie, część IV
|
|
- Anna Michalik
- 6 lat temu
- Przeglądów:
Transkrypt
1 Programowanie, część IV Rafał J. Wysocki Instytut Fizyki Teoretycznej, Wydział Fizyki UW 22 maja 2012 Rafał J. Wysocki Programowanie, część IV 22 maja / 77
2 Równania ruchu Symulacje ruchu obiektów Numeryczne rozwiązywanie równań ruchu W fizyce często potrzebujemy przewidzieć zachowanie się jakiegoś układu. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
3 Równania ruchu Symulacje ruchu obiektów Numeryczne rozwiązywanie równań ruchu W fizyce często potrzebujemy przewidzieć zachowanie się jakiegoś układu. W tym celu wyznaczamy zmiany jego konfiguracji w czasie przy zadanym stanie początkowym. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
4 Symulacje ruchu obiektów Numeryczne rozwiązywanie równań ruchu Równania ruchu W fizyce często potrzebujemy przewidzieć zachowanie się jakiegoś układu. W tym celu wyznaczamy zmiany jego konfiguracji w czasie przy zadanym stanie początkowym. Służą nam do tego równania różniczkowe, takie jak równanie Newtona: d 2 ( ) d dt 2 q(t) = f dt q(t), q(t), t gdzie q(t) oznacza konfigurację układu w chwili czasu t, a funkcja f reprezentuje siły działające w układzie (z uwzględnieniem mas składników układu). (1) Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
5 Symulacje ruchu obiektów Sprowadzanie do równania I rzędu Numeryczne rozwiązywanie równań ruchu Wprawdzie równanie (1) jest II rzędu, ale można sprowadzić je do postaci równania I rzędu. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
6 Symulacje ruchu obiektów Numeryczne rozwiązywanie równań ruchu Sprowadzanie do równania I rzędu Wprawdzie równanie (1) jest II rzędu, ale można sprowadzić je do postaci równania I rzędu. W tym celu wprowadźmy oznaczenia: v(t) = d dt q(t) u(t) = [q(t); v(t)] g(u(t), t) = [v(t); f(v(t), q(t), t)] Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
7 Symulacje ruchu obiektów Numeryczne rozwiązywanie równań ruchu Sprowadzanie do równania I rzędu Wprawdzie równanie (1) jest II rzędu, ale można sprowadzić je do postaci równania I rzędu. W tym celu wprowadźmy oznaczenia: v(t) = d dt q(t) u(t) = [q(t); v(t)] g(u(t), t) = [v(t); f(v(t), q(t), t)] Wtedy następujące równanie jest równoważne równaniu (1). d u(t) = g(u(t), t) (2) dt Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
8 Symulacje ruchu obiektów Przybliżenie rozwiązania Numeryczne rozwiązywanie równań ruchu Równanie (2) może być ściśle rozwiązane analitycznie tylko w (bardzo) ograniczonej liczbie przypadków. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
9 Symulacje ruchu obiektów Przybliżenie rozwiązania Numeryczne rozwiązywanie równań ruchu Równanie (2) może być ściśle rozwiązane analitycznie tylko w (bardzo) ograniczonej liczbie przypadków. Na szczęście zwykle nie potrzebujemy go ściśle rozwiązywać. Nie musimy nawet znać rozwiązania dla każdej chwili czasu t. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
10 Symulacje ruchu obiektów Przybliżenie rozwiązania Numeryczne rozwiązywanie równań ruchu Równanie (2) może być ściśle rozwiązane analitycznie tylko w (bardzo) ograniczonej liczbie przypadków. Na szczęście zwykle nie potrzebujemy go ściśle rozwiązywać. Nie musimy nawet znać rozwiązania dla każdej chwili czasu t. Zazwyczaj wystarczy wyznaczyć w przybliżeniu konfigurację układu w pewnej liczbie chwil czasu t 0, t 1, t 2,..., t n takich, że t i+1 = t i + t, jeśli tylko odstęp czasu t jest rozsądnie mały. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
11 Symulacje ruchu obiektów Przybliżenie rozwiązania Numeryczne rozwiązywanie równań ruchu Równanie (2) może być ściśle rozwiązane analitycznie tylko w (bardzo) ograniczonej liczbie przypadków. Na szczęście zwykle nie potrzebujemy go ściśle rozwiązywać. Nie musimy nawet znać rozwiązania dla każdej chwili czasu t. Zazwyczaj wystarczy wyznaczyć w przybliżeniu konfigurację układu w pewnej liczbie chwil czasu t 0, t 1, t 2,..., t n takich, że t i+1 = t i + t, jeśli tylko odstęp czasu t jest rozsądnie mały. Wystarczy zatem wyznaczyć ciąg wektorów u i takich, że dla każdego i zachodzi u(t i ) u i < ɛ, gdzie ɛ jest zadanym limitem odchylenia obliczonego wektora od prawdziwej konfiguracji układu w danej chwili czasu. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
12 Metoda Eulera Symulacje ruchu obiektów Numeryczne rozwiązywanie równań ruchu Zauważmy, że u(t i+1 ) u(t i ) = ti+1 t i g(u(τ), τ)dτ (3) Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
13 Metoda Eulera Symulacje ruchu obiektów Numeryczne rozwiązywanie równań ruchu Zauważmy, że u(t i+1 ) u(t i ) = ti+1 t i g(u(τ), τ)dτ (3) Jeżeli u(t) nie jest funkcją o wartościach wektorowych, tylko rzeczywistych, to w pierwszym przybliżeniu można oszacować całkę po prawej stronie równania (3) przez pole powierzchni prostokąta o wysokości g(u(t i ), t i ) i długości podstawy t. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
14 Metoda Eulera Symulacje ruchu obiektów Numeryczne rozwiązywanie równań ruchu Zauważmy, że u(t i+1 ) u(t i ) = ti+1 t i g(u(τ), τ)dτ (3) Jeżeli u(t) nie jest funkcją o wartościach wektorowych, tylko rzeczywistych, to w pierwszym przybliżeniu można oszacować całkę po prawej stronie równania (3) przez pole powierzchni prostokąta o wysokości g(u(t i ), t i ) i długości podstawy t. Stąd w ogólności otrzymujemy algorytm zwany metodą Eulera. u i+1 = u i + g(u i, t i ) t Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
15 Wady metody Eulera Symulacje ruchu obiektów Numeryczne rozwiązywanie równań ruchu W każdym kroku metody Eulera odstępstwo od prawdziwej wartości u(t i ) może być rzędu ( t) 2 : u(t i+1 ) = u(t i ) + t du dt + O (( t) 2) ti = u(t i ) + g(u(t i ), t i ) t + O (( t) 2) Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
16 Wady metody Eulera Symulacje ruchu obiektów Numeryczne rozwiązywanie równań ruchu W każdym kroku metody Eulera odstępstwo od prawdziwej wartości u(t i ) może być rzędu ( t) 2 : u(t i+1 ) = u(t i ) + t du dt + O (( t) 2) ti = u(t i ) + g(u(t i ), t i ) t + O (( t) 2) Ponadto w ogólności jest ona niestabilna, czyli całkowite odstępstwo u i od u(t i ) może stopniowo narastać wraz z liczbą wykonanych kroków. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
17 Wady metody Eulera Symulacje ruchu obiektów Numeryczne rozwiązywanie równań ruchu W każdym kroku metody Eulera odstępstwo od prawdziwej wartości u(t i ) może być rzędu ( t) 2 : u(t i+1 ) = u(t i ) + t du dt + O (( t) 2) ti = u(t i ) + g(u(t i ), t i ) t + O (( t) 2) Ponadto w ogólności jest ona niestabilna, czyli całkowite odstępstwo u i od u(t i ) może stopniowo narastać wraz z liczbą wykonanych kroków. W celu otrzymania bardziej praktycznej metody można spróbować użyć lepszego przybliżenia całki po prawej stronie równania (3). Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
18 Symulacje ruchu obiektów Poprawianie metody Eulera Numeryczne rozwiązywanie równań ruchu Wysokość prostokąta, którego pola powierzchni używamy do oszacowania całki w równaniu (3), można wyznaczyć wykorzystując przybliżoną wartość funkcji g(u(t), t) w punkcie t i + t/2. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
19 Symulacje ruchu obiektów Numeryczne rozwiązywanie równań ruchu Poprawianie metody Eulera Wysokość prostokąta, którego pola powierzchni używamy do oszacowania całki w równaniu (3), można wyznaczyć wykorzystując przybliżoną wartość funkcji g(u(t), t) w punkcie t i + t/2. Weźmy: k 1 = g(u i, t i ) k 2 = g(u i + αk 1 t, t i + β t) u i+1 = u i + ω 1 k 1 t + ω 2 k 2 t i wybierzmy stałe α, β, ω 1, ω 2 tak, aby różnica między u i+1 oraz u(t i+1 ) była rzędu ( t) 3 (przy założeniu, że u i = u(t i ) dla tego konkretnego i). Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
20 Symulacje ruchu obiektów Poprawianie metody Eulera (c. d.) Numeryczne rozwiązywanie równań ruchu Z rozwinięcia u(t) w szereg Taylora w otoczniu t i mamy: u(t i+1 ) = u(t i ) + g(u(t i ), t i ) t + g ( t) 2 t ti 2 + g u g(u(t i ), t i ) ( t)2 + O(( t) 3 ) ti 2 Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
21 Symulacje ruchu obiektów Poprawianie metody Eulera (c. d.) Numeryczne rozwiązywanie równań ruchu Z rozwinięcia u(t) w szereg Taylora w otoczniu t i mamy: u(t i+1 ) = u(t i ) + g(u(t i ), t i ) t + g ( t) 2 t ti 2 + g u g(u(t i ), t i ) ( t)2 + O(( t) 3 ) ti 2 Rozwijając k 2 w szereg Taylora w otoczeniu t i dostajemy: u i+1 = u i + g(u i, t i )(ω 1 + ω 2 ) t + g t βω 2 ( t) 2 ti + g u g(u i, t i )αω 2 ( t) 2 + O(( t) 3 ) ti Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
22 Symulacje ruchu obiektów Numeryczne rozwiązywanie równań ruchu Metoda punktu środkowego (ang. midpoint method) Oczekiwany efekt uzyskamy wybierając ω 1 = 1 ω 2, βω 2 = 1/2 oraz αω 2 = 1/2. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
23 Symulacje ruchu obiektów Numeryczne rozwiązywanie równań ruchu Metoda punktu środkowego (ang. midpoint method) Oczekiwany efekt uzyskamy wybierając ω 1 = 1 ω 2, βω 2 = 1/2 oraz αω 2 = 1/2. W szczególności możemy wziąć ω 1 = 0, ω 2 = 1, α = 1/2 oraz β = 1/2 i wtedy otrzymujemy algorytm: k 1 = g(u i, t i ) ( k 2 = g u i + t 2 k 1, t i + t ) t 2 u i+1 = u i + k 2 t Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
24 Symulacje ruchu obiektów Numeryczne rozwiązywanie równań ruchu Metoda punktu środkowego (ang. midpoint method) Oczekiwany efekt uzyskamy wybierając ω 1 = 1 ω 2, βω 2 = 1/2 oraz αω 2 = 1/2. W szczególności możemy wziąć ω 1 = 0, ω 2 = 1, α = 1/2 oraz β = 1/2 i wtedy otrzymujemy algorytm: k 1 = g(u i, t i ) ( k 2 = g u i + t 2 k 1, t i + t ) t 2 u i+1 = u i + k 2 t Nie musimy jednak poprzestawać na wykorzystywaniu dwóch pośrednich wartości g(u(t), t). Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
25 Symulacje ruchu obiektów Metoda Rungego-Kutty Wyprowadzenie metody Rungego-Kutty Użyjmy czterech pośrednich wartości g(u(t), t): k 1 = g(u i, t i ) k 2 = g(u i + α 1 k 1 t, t i + β 1 t) k 3 = g(u i + α 2 k 2 t, t i + β 2 t) k 4 = g(u i + α 3 k 3 t, t i + β 3 t) u i+1 = 4 u i + t ω j k j (4) j=1 Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
26 Symulacje ruchu obiektów Metoda Rungego-Kutty Wyprowadzenie metody Rungego-Kutty Użyjmy czterech pośrednich wartości g(u(t), t): k 1 = g(u i, t i ) k 2 = g(u i + α 1 k 1 t, t i + β 1 t) k 3 = g(u i + α 2 k 2 t, t i + β 2 t) k 4 = g(u i + α 3 k 3 t, t i + β 3 t) u i+1 = 4 u i + t ω j k j (4) j=1 Postępując analogicznie do poprzedniego przypadku możemy otrzymać zgodność prawej strony równania (4) z rozwinięciem Taylora u(t) w otoczeniu t i z dokładnością do wyrazów rzędu ( t) 4 przy założeniu, że u i = u(t i ). Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
27 Symulacje ruchu obiektów Metoda Rungego-Kutty Metoda Rungego-Kutty (czwartego rzędu) W tym celu wystarczy wybrać α 1 = β 1 = α 2 = β 2 = 1/2, α 3 = β 3 = 1, ω 1 = ω 4 = 1/6 oraz ω 2 = ω 3 = 1/3. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
28 Symulacje ruchu obiektów Metoda Rungego-Kutty Metoda Rungego-Kutty (czwartego rzędu) W tym celu wystarczy wybrać α 1 = β 1 = α 2 = β 2 = 1/2, α 3 = β 3 = 1, ω 1 = ω 4 = 1/6 oraz ω 2 = ω 3 = 1/3. Wówczas otrzymujemy algorytm: k 1 = g(u i, t i ) ( k 2 = g u i + t 2 k 1, t i + t ) 2 ( k 3 = g u i + t 2 k 2, t i + t ) 2 k 4 = g(u i + k 3 t, t i + t) ( k1 u i+1 = u i + t 6 + k k k ) 4 6 Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
29 Symulacje ruchu obiektów Metoda Rungego-Kutty Metoda Rungego-Kutty czwartego rzędu (c. d.) W metodzie Rungego-Kutty czwartego rzędu różnica między u i+1 oraz u(t i+1 ) w pojedynczym kroku (przy założeniu u i = u(t i ) dla danego i) jest rzędu ( t) 5. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
30 Symulacje ruchu obiektów Metoda Rungego-Kutty Metoda Rungego-Kutty czwartego rzędu (c. d.) W metodzie Rungego-Kutty czwartego rzędu różnica między u i+1 oraz u(t i+1 ) w pojedynczym kroku (przy założeniu u i = u(t i ) dla danego i) jest rzędu ( t) 5. Ponadto metoda jest stabilna, czyli całkowite odstępstwo u i od prawdziwych wartości u(t i ) jest ograniczone. Inaczej mówiąc istnieje dodatnia liczba ɛ taka, że dla każdego i zachodzi u i u(t i ) < ɛ. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
31 Symulacje ruchu obiektów Metoda Rungego-Kutty Metoda Rungego-Kutty czwartego rzędu (c. d.) W metodzie Rungego-Kutty czwartego rzędu różnica między u i+1 oraz u(t i+1 ) w pojedynczym kroku (przy założeniu u i = u(t i ) dla danego i) jest rzędu ( t) 5. Ponadto metoda jest stabilna, czyli całkowite odstępstwo u i od prawdziwych wartości u(t i ) jest ograniczone. Inaczej mówiąc istnieje dodatnia liczba ɛ taka, że dla każdego i zachodzi u i u(t i ) < ɛ. Wartość ɛ zależy jednak od funkcji g(u(t), t) po prawej stronie równania różniczkowego. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
32 Symulacje ruchu obiektów Metoda Rungego-Kutty Założenia programu realizującego algorytm Aby zapisać algorytm Rungego-Kutty w postaci programu zauważmy, że do przeprowadzenia obliczeń dla jednego kroku metody potrzebny jest wektor reprezentujący wartość u i oraz wektory, w których będzie można zapisać k 1, k 2, k 3 i k 4. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
33 Symulacje ruchu obiektów Metoda Rungego-Kutty Założenia programu realizującego algorytm Aby zapisać algorytm Rungego-Kutty w postaci programu zauważmy, że do przeprowadzenia obliczeń dla jednego kroku metody potrzebny jest wektor reprezentujący wartość u i oraz wektory, w których będzie można zapisać k 1, k 2, k 3 i k 4. Wynik obliczeń, czyli u i+1, można zapisać w tym samym miejscu, w którym przechowywana była wartość u i z poprzedniego kroku. Ponadto wektory służące do przechowywania k j mogą być wykorzystane w następnym kroku (rezerwowanie ich przed wykonaniem każdego kroku i zwalnianie po jego wykonaniu nie byłoby efektywne). Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
34 Symulacje ruchu obiektów Metoda Rungego-Kutty Założenia programu realizującego algorytm Aby zapisać algorytm Rungego-Kutty w postaci programu zauważmy, że do przeprowadzenia obliczeń dla jednego kroku metody potrzebny jest wektor reprezentujący wartość u i oraz wektory, w których będzie można zapisać k 1, k 2, k 3 i k 4. Wynik obliczeń, czyli u i+1, można zapisać w tym samym miejscu, w którym przechowywana była wartość u i z poprzedniego kroku. Ponadto wektory służące do przechowywania k j mogą być wykorzystane w następnym kroku (rezerwowanie ich przed wykonaniem każdego kroku i zwalnianie po jego wykonaniu nie byłoby efektywne). Dlatego wygodnie jest tak skonstruować program, aby te wektory były polami pewnego obiektu. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
35 Symulacje ruchu obiektów Metoda Rungego-Kutty Założenia programu realizującego algorytm (c. d.) Ułatwia to także wyznaczanie przybliżenia rozwiązania dla wielu równań jednocześnie (można zdefiniować odpowiedni obiekt dla każdego równania). Rafał J. Wysocki Programowanie, część IV 22 maja / 77
36 Symulacje ruchu obiektów Metoda Rungego-Kutty Założenia programu realizującego algorytm (c. d.) Ułatwia to także wyznaczanie przybliżenia rozwiązania dla wielu równań jednocześnie (można zdefiniować odpowiedni obiekt dla każdego równania). Obiekt, którego będziemy używać do obliczeń, będzie zawsze przeprowadzał podobne operacje, niezależnie od tego jaka funkcja g(u(t), t) znajduje się po prawej stronie równania (zawsze trzeba będzie wyznaczyć k j na podstawie odpowiednich wzorów i obliczyć ich sumę). Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
37 Symulacje ruchu obiektów Metoda Rungego-Kutty Założenia programu realizującego algorytm (c. d.) Ułatwia to także wyznaczanie przybliżenia rozwiązania dla wielu równań jednocześnie (można zdefiniować odpowiedni obiekt dla każdego równania). Obiekt, którego będziemy używać do obliczeń, będzie zawsze przeprowadzał podobne operacje, niezależnie od tego jaka funkcja g(u(t), t) znajduje się po prawej stronie równania (zawsze trzeba będzie wyznaczyć k j na podstawie odpowiednich wzorów i obliczyć ich sumę). W związku z tym wygodnie jest zdefiniować klasę dla tego obiektu jako klasę abstrakcyjną, w której funkcja g(u(t), t) będzie wirtualną metodą bez implementacji. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
38 Symulacje ruchu obiektów Klasa dla algorytmu Rungego-Kutty Implementacja metody Rungego-Kutty Używając wirtualnej metody bez implementacji jako modelu funkcji g(u(t), t) można zdefiniować uniwersalną klasę dla algorytmu Rungego-Kutty. class RungeKutta { private: double t; vector<double> u; vector<double> v2, v3, v4; double dt; int n; // bieżący czas // bieżąca konfiguracja // pomocnicze // krok // liczba współrzędnych protected: virtual void G(const vector<double>& in, double t, vector<double>& out) = 0; public: RungeKutta(const vector<double> u0, double t0, double _dt); double gett(void) const { return t; } vector<double> getu(void) const { return u; } void wykonaj_krok(void); }; Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
39 Symulacje ruchu obiektów Konstruktor dla klasy RungeKutta Implementacja metody Rungego-Kutty RungeKutta::RungeKutta( const vector<double> u0, double t0, double _dt) { n = u0.size(); u = u0; // Początkowa konfiguracja. v2.reserve(n); // Jawna deklaracja liczby współrzędnych. v3.reserve(n); v4.reserve(n); t = t0; dt = _dt; } Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
40 Symulacje ruchu obiektów Konstruktor dla klasy RungeKutta Implementacja metody Rungego-Kutty RungeKutta::RungeKutta( const vector<double> u0, double t0, double _dt) { n = u0.size(); u = u0; // Początkowa konfiguracja. v2.reserve(n); // Jawna deklaracja liczby współrzędnych. v3.reserve(n); v4.reserve(n); t = t0; dt = _dt; } Obliczenia realizujące algorytm zawiera metoda.wykonaj_krok(). Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
41 Symulacje ruchu obiektów Konstruktor dla klasy RungeKutta Implementacja metody Rungego-Kutty RungeKutta::RungeKutta( const vector<double> u0, double t0, double _dt) { n = u0.size(); u = u0; // Początkowa konfiguracja. v2.reserve(n); // Jawna deklaracja liczby współrzędnych. v3.reserve(n); v4.reserve(n); t = t0; dt = _dt; } Obliczenia realizujące algorytm zawiera metoda.wykonaj_krok(). Dla wektorów v2, v3, v4 trzeba jawnie zadeklarować liczbę współrzędnych, ponieważ jeśli tego nie zrobimy, to w metodzie.wykonaj_krok() będą występować błędy związane z dostępem do pamięci. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
42 Symulacje ruchu obiektów Implementacja metody Rungego-Kutty void RungeKutta::wykonaj_krok(void) { const double jedna_trzecia = 1.0 / 3.0; double dt_2 = 0.5 * dt; int i; } v3 = u; G(u, t, v2); // v2 zawiera wartość k1 for (i = 0; i < n; i++) { v2[i] *= dt_2; v4[i] = u[i] + v2[i]; // u + (h/2) * k1 u[i] += jedna_trzecia * v2[i]; // u += (h/6) * k1 } G(v4, t + dt_2, v2); // v2 zawiera wartość k2 for (i = 0; i < n; i++) { v2[i] *= dt; v4[i] = v3[i] * v2[i]; // u + (h/2) * k2 u[i] += jedna_trzecia * v2[i]; // u += (h/3) * k2 } G(v4, t + dt_2, v2); // v2 zawiera wartość k3 for (i = 0; i < n; i++) { v2[i] *= dt; v4[i] = v3[i] + v2[i]; // u + k3 u[i] += jedna_trzecia * v2[i]; // u += (h/3) * k3 } t += dt; G(v4, t, v2); // v2 zawiera wartość k4 for (i = 0; i < n; i++) u[i] += dt_2 * jedna_trzecia * v2[i]; // u += (h/6) * k4 Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
43 Symulacje ruchu obiektów Przykład: oscylator harmoniczny Implementacja metody Rungego-Kutty Przedstawioną klasę RungeKutta można wykorzystać do wyznaczenia (w przybliżeniu) ruchu oscylatora harmonicznego. W tym celu wystarczy zdefiniować (odpowiednią) klasę pochodną w stosunku do RungeKutta. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
44 Symulacje ruchu obiektów Przykład: oscylator harmoniczny Implementacja metody Rungego-Kutty Przedstawioną klasę RungeKutta można wykorzystać do wyznaczenia (w przybliżeniu) ruchu oscylatora harmonicznego. W tym celu wystarczy zdefiniować (odpowiednią) klasę pochodną w stosunku do RungeKutta. #include "RungeKutta.h" class Oscylator : public RungeKutta { protected: void G(const vector <double> &y, double x, vector<double> &out); public: Oscylator(const vector<double> u0, double t0, double _dt) : RungeKutta(u0, t0, _dt) {} }; void Oscylator::G(const vector <double> &y, double x, vector<double> &out) { (void)x; static const double K = 1.0; } out[0] = y[1]; out[1] = - K * y[0]; // pochodna położenia // pochodna prędkości Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
45 Symulacje ruchu obiektów Implementacja metody Rungego-Kutty Przykład: oscylator harmoniczny obliczenia Mając do dyspozycji klasy RungeKutta i Oscylator zdefiniowane jak wyżej można przeprowadzić obliczenia. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
46 Symulacje ruchu obiektów Implementacja metody Rungego-Kutty Przykład: oscylator harmoniczny obliczenia Mając do dyspozycji klasy RungeKutta i Oscylator zdefiniowane jak wyżej można przeprowadzić obliczenia. vector<double> y; // Warunek początkowy y.push_back(1.0); // położenie y.push_back(0.0); // prędkość Oscylator oscylator(y, 0, 0.01); for (int i = 0; i < KROKI; i++) { y = oscylator.getu(); cout << oscylator.gett() << "\t" << y[0] << "\t" << y[1] << endl; } oscylator.wykonaj_krok(); Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
47 Symulacje ruchu obiektów Implementacja metody Rungego-Kutty Przykład: oscylator harmoniczny obliczenia Mając do dyspozycji klasy RungeKutta i Oscylator zdefiniowane jak wyżej można przeprowadzić obliczenia. vector<double> y; // Warunek początkowy y.push_back(1.0); // położenie y.push_back(0.0); // prędkość Oscylator oscylator(y, 0, 0.01); for (int i = 0; i < KROKI; i++) { y = oscylator.getu(); cout << oscylator.gett() << "\t" << y[0] << "\t" << y[1] << endl; } oscylator.wykonaj_krok(); Wynik zostanie zapisany na standardowe wyjście w postaci trzech kolumn liczb: czas, położenie i prędkość oscylatora. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
48 Symulacje ruchu obiektów Oscylator harmoniczny z tarciem Metoda Rungego-Kutty przykłady Dla innego modelu (np. oscylatora z tarciem) tworzymy inną klasę pochodną od klasy RungeKutta. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
49 Symulacje ruchu obiektów Oscylator harmoniczny z tarciem Metoda Rungego-Kutty przykłady Dla innego modelu (np. oscylatora z tarciem) tworzymy inną klasę pochodną od klasy RungeKutta. #include "RungeKutta.h" class OscylatorTarcie : public RungeKutta { protected: void G(const vector <double> &y, double x, vector<double> &out); public: OscylatorTarcie(const vector<double> u0, double t0, double d) : RungeKutta(u0, t0, d) {} }; void OscylatorTarcie::G(const vector <double> &y, double x, vector<double> &out) { (void)x; static const double K = 1.0; static const double f = 0.3; } out[0] = y[1]; // pochodna położenia out[1] = - K * y[0] - f * y[1]; // pochodna prędkości Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
50 Huśtawka Symulacje ruchu obiektów Metoda Rungego-Kutty przykłady Spróbujmy obliczyć jaka powinna być prędkość początkowa (sztywnej) huśtawki o długości l, na której umieścimy ciężar o masie m, aby osiągnęła ona wychylenie 90 o. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
51 Huśtawka Symulacje ruchu obiektów Metoda Rungego-Kutty przykłady Spróbujmy obliczyć jaka powinna być prędkość początkowa (sztywnej) huśtawki o długości l, na której umieścimy ciężar o masie m, aby osiągnęła ona wychylenie 90 o. Zadanie to można łatwo rozwiązać korzystając z zasady zachowania energii jeżeli nie uwzględnia się tarcia. My jednak uwzględnimy tarcie. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
52 Huśtawka Symulacje ruchu obiektów Metoda Rungego-Kutty przykłady Spróbujmy obliczyć jaka powinna być prędkość początkowa (sztywnej) huśtawki o długości l, na której umieścimy ciężar o masie m, aby osiągnęła ona wychylenie 90 o. Zadanie to można łatwo rozwiązać korzystając z zasady zachowania energii jeżeli nie uwzględnia się tarcia. My jednak uwzględnimy tarcie. Ponadto nie będziemy (bo nie możemy) korzystać z założenia, że wychylenie huśtawki jest małe. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
53 Opis ruchu Symulacje ruchu obiektów Metoda Rungego-Kutty przykłady Położenie ciężaru na huśtawce zawsze znajduje się na okręgu o promieniu l i środku w punkcie zaczepienia huśtawki. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
54 Opis ruchu Symulacje ruchu obiektów Metoda Rungego-Kutty przykłady Położenie ciężaru na huśtawce zawsze znajduje się na okręgu o promieniu l i środku w punkcie zaczepienia huśtawki. Kąt wychylenia α zdefiniujemy jako kąt między ramionami huśtawki oraz płaszczyzną jej stabilnej równowagi ( pionem ). Wtedy odległość przebywana przez ciężar na huśtawce w czasie t jest równa zmianie kąta α w czasie t pomnożonej przez długość ramienia huśtawki l. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
55 Opis ruchu Symulacje ruchu obiektów Metoda Rungego-Kutty przykłady Położenie ciężaru na huśtawce zawsze znajduje się na okręgu o promieniu l i środku w punkcie zaczepienia huśtawki. Kąt wychylenia α zdefiniujemy jako kąt między ramionami huśtawki oraz płaszczyzną jej stabilnej równowagi ( pionem ). Wtedy odległość przebywana przez ciężar na huśtawce w czasie t jest równa zmianie kąta α w czasie t pomnożonej przez długość ramienia huśtawki l. Na ciężar na huśtawce działa siła ciężkości, a właściwie jej składowa styczna do toru ruchu ciężaru, dana wzorem: F g (α) = mg sin α gdzie g jest przyspieszeniem ziemskim. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
56 Równanie ruchu Symulacje ruchu obiektów Metoda Rungego-Kutty przykłady Ponadto na huśtawkę działa tarcie. Będziemy przyjmować, że jest ono proporcjonalne do masy ciężaru na huśtawce i do jego prędkości (liniowej), a współczynnik proporcjonalności oznaczymy przez f. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
57 Równanie ruchu Symulacje ruchu obiektów Metoda Rungego-Kutty przykłady Ponadto na huśtawkę działa tarcie. Będziemy przyjmować, że jest ono proporcjonalne do masy ciężaru na huśtawce i do jego prędkości (liniowej), a współczynnik proporcjonalności oznaczymy przez f. Prędkość liniowa ciężaru na huśtawce jest równa prędkości kątowej huśtawki pomnożonej przez długość jej ramienia, natomiast prędkość kątowa huśtawki jest pochodną kąta α względem czasu. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
58 Równanie ruchu Symulacje ruchu obiektów Metoda Rungego-Kutty przykłady Ponadto na huśtawkę działa tarcie. Będziemy przyjmować, że jest ono proporcjonalne do masy ciężaru na huśtawce i do jego prędkości (liniowej), a współczynnik proporcjonalności oznaczymy przez f. Prędkość liniowa ciężaru na huśtawce jest równa prędkości kątowej huśtawki pomnożonej przez długość jej ramienia, natomiast prędkość kątowa huśtawki jest pochodną kąta α względem czasu. Biorąc pod uwagę wszystkie powyższe obserwacje oraz drugą zasadę dynamiki, dostajemy następujące równanie ruchu na kąt α: d 2 α dt 2 = g l sin α f dα dt (5) Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
59 Symulacje ruchu obiektów Przekształcone równanie ruchu Metoda Rungego-Kutty przykłady Równanie (5) można przepisać w postaci układu równań I rzędu: dα dt = ω (6) dω dt = g l sin α f ω Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
60 Symulacje ruchu obiektów Przekształcone równanie ruchu Metoda Rungego-Kutty przykłady Równanie (5) można przepisać w postaci układu równań I rzędu: dα dt = ω (6) dω dt = g l sin α f ω Jeżeli wprowadzimy wektor y(t) = [α(t), ω(t)], to: dy 0 dt = y 1 dy 1 dt = g l sin y 0 f y 1 Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
61 Symulacje ruchu obiektów Metoda Rungego-Kutty przykłady Klasa pochodna w stosunku do RungeKutta Dla równania ruchu (5) można użyć następującej klasy pochodnej od RungeKutta: class Pendulum : public RungeKutta { private: double K; // iloraz g / l double f; // współczynnik tarcia protected: void G(const vector <double> &y, double x, vector<double> &out); public: Pendulum(const vector<double> u0, double t0, double d, double k, double r) : RungeKutta(u0, t0, d), K(k), f(r) {} }; void Pendulum::G(const vector <double> &y, double x, vector<double> &out) { (void)x; out[0] = y[1]; // pochodna kąta wyhylenia out[1] = - K * sin(y[0]) - f * y[1]; // pochodna prędkości kątowej } Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
62 Symulacje ruchu obiektów Metoda Rungego-Kutty przykłady Wyznaczanie krytycznej prędkości początkowej Klasa ta pozwala nam znaleźć ruch wahadła dla ustalonej prędkości początkowej, ale nie wiemy z góry, czy osiągnie ono maksymalne wychylenie. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
63 Symulacje ruchu obiektów Metoda Rungego-Kutty przykłady Wyznaczanie krytycznej prędkości początkowej Klasa ta pozwala nam znaleźć ruch wahadła dla ustalonej prędkości początkowej, ale nie wiemy z góry, czy osiągnie ono maksymalne wychylenie. Możemy poszukać krytycznej prędkości metodą bisekcji, tzn. zgadnąć dwie prędkości początkowe takie, że dla jednej z nich maksymalne położenie jest przekraczane, a dla drugiej nie jest osiągane, a później sprawdzić co dzieje się dla wartości ze środka przedziału. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
64 Symulacje ruchu obiektów Metoda Rungego-Kutty przykłady Wyznaczanie krytycznej prędkości początkowej Klasa ta pozwala nam znaleźć ruch wahadła dla ustalonej prędkości początkowej, ale nie wiemy z góry, czy osiągnie ono maksymalne wychylenie. Możemy poszukać krytycznej prędkości metodą bisekcji, tzn. zgadnąć dwie prędkości początkowe takie, że dla jednej z nich maksymalne położenie jest przekraczane, a dla drugiej nie jest osiągane, a później sprawdzić co dzieje się dla wartości ze środka przedziału. Następnie jedną z odgadniętych wartości zastępujemy ich średnią i powtarzamy. W ten sposób dla każdego kroku będziemy mieli dwukrotnie mniejszy przedział do przeszukania. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
65 Symulacje ruchu obiektów Metoda Rungego-Kutty przykłady Kryterium przekroczenia maksymalnego wychylenia Zauważmy, że jeżeli znak prędkości kątowej zmieni się w trakcie ruchu przy α < π, to maksymalne wychylenie nie zostanie osiągnięte w tym ruchu. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
66 Symulacje ruchu obiektów Metoda Rungego-Kutty przykłady Kryterium przekroczenia maksymalnego wychylenia Zauważmy, że jeżeli znak prędkości kątowej zmieni się w trakcie ruchu przy α < π, to maksymalne wychylenie nie zostanie osiągnięte w tym ruchu. bool przekroczone(double v0) { if (v0 < 0) v0 = -v0; vector<double> y; y.push_back(0.0); y.push_back(v0); Pendulum oscylator(y, 0, 0.01, 1, 0.3); while (y[1] > 0 && y[0] < M_PI) { oscylator.wykonaj_krok(); y = oscylator.getu(); } } return y[0] >= M_PI; Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
67 Symulacje ruchu obiektów Metoda Rungego-Kutty przykłady I etap obliczeń liniowe zwiększanie prędkości początkowej Obliczenia można podzielić na dwa etapy. W pierwszym z nich wybieramy ustaloną wartość prędkości początkowej (kątowej) ω 0 = Ω i sprawdzamy, czy przy tej wartości maksymalne wychylenie jest przekroczone. Jeżeli tak, przechodzimy do II etapu obliczeń. Jeżeli nie, zwiększamy ω 0 o Ω i powtarzamy. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
68 Symulacje ruchu obiektów Metoda Rungego-Kutty przykłady I etap obliczeń liniowe zwiększanie prędkości początkowej Obliczenia można podzielić na dwa etapy. W pierwszym z nich wybieramy ustaloną wartość prędkości początkowej (kątowej) ω 0 = Ω i sprawdzamy, czy przy tej wartości maksymalne wychylenie jest przekroczone. Jeżeli tak, przechodzimy do II etapu obliczeń. Jeżeli nie, zwiększamy ω 0 o Ω i powtarzamy. // I etap - sartujemy od v0 = V i będziemy ją w każdym kroku zwiększać // o V, aż wahadło przekroczy maksymalne wychylenie. double v0 = V; while (!przekroczone(v0)) v0 += V; Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
69 Symulacje ruchu obiektów Metoda Rungego-Kutty przykłady I etap obliczeń liniowe zwiększanie prędkości początkowej Obliczenia można podzielić na dwa etapy. W pierwszym z nich wybieramy ustaloną wartość prędkości początkowej (kątowej) ω 0 = Ω i sprawdzamy, czy przy tej wartości maksymalne wychylenie jest przekroczone. Jeżeli tak, przechodzimy do II etapu obliczeń. Jeżeli nie, zwiększamy ω 0 o Ω i powtarzamy. // I etap - sartujemy od v0 = V i będziemy ją w każdym kroku zwiększać // o V, aż wahadło przekroczy maksymalne wychylenie. double v0 = V; while (!przekroczone(v0)) v0 += V; Po zakończeniu tego etapu wiemy, że poszukiwana wartość znajduję się w przedziale [ω 0 Ω, ω 0 ]. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
70 Symulacje ruchu obiektów II etap obliczeń bisekcja Metoda Rungego-Kutty przykłady Przeszukujemy przedział [ω 0 Ω, ω 0 ] metodą bisekcji. Robimy to tak, że dla dolnej granicy przedziału maksymalne wychylenie nie jest przekraczane podczas ruchu, a dla jego górnej granicy jest. W każdym kroku sprawdzamy, co dzieje się w środku przedziału i przesuwamy do niego jedną lub drugą granicę (tę, dla której zachowanie się układu jest takie, jak dla środka przedziału). Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
71 Symulacje ruchu obiektów II etap obliczeń bisekcja Metoda Rungego-Kutty przykłady Przeszukujemy przedział [ω 0 Ω, ω 0 ] metodą bisekcji. Robimy to tak, że dla dolnej granicy przedziału maksymalne wychylenie nie jest przekraczane podczas ruchu, a dla jego górnej granicy jest. W każdym kroku sprawdzamy, co dzieje się w środku przedziału i przesuwamy do niego jedną lub drugą granicę (tę, dla której zachowanie się układu jest takie, jak dla środka przedziału). // II etap - bisekcja. double a = v0, b = v0 - V; while (a - b > epsilon) { double c = 0.5 * (a + b); } if (przekroczone(c)) a = c; else b = c; Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
72 Symulacje ruchu obiektów II etap obliczeń bisekcja Metoda Rungego-Kutty przykłady Wynikiem obliczeń jest przedział zawierający poszukiwaną wartość. Rafał J. Wysocki Programowanie, część IV 22 maja / 77
73 Symulacje ruchu obiektów II etap obliczeń bisekcja Metoda Rungego-Kutty przykłady Wynikiem obliczeń jest przedział zawierający poszukiwaną wartość. Długość tego przedziału zależy od narzuconej programowi dokładności (stała epsilon w kodzie powyżej). Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
74 Symulacje ruchu obiektów II etap obliczeń bisekcja Metoda Rungego-Kutty przykłady Wynikiem obliczeń jest przedział zawierający poszukiwaną wartość. Długość tego przedziału zależy od narzuconej programowi dokładności (stała epsilon w kodzie powyżej). Podobne obliczenia można zrobić dla przypadku, w którym wartość początkowego wychylenia huśtawki jest niezerowa. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
75 Symulacje ruchu obiektów Wahadło z wymuszaniem Metoda Rungego-Kutty przykłady Do omówionego modelu można bardzo łatwo dodać popychanie w postaci siły proporcjonalnej do pewnej funkcji zależnej od czasu. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
76 Symulacje ruchu obiektów Wahadło z wymuszaniem Metoda Rungego-Kutty przykłady Do omówionego modelu można bardzo łatwo dodać popychanie w postaci siły proporcjonalnej do pewnej funkcji zależnej od czasu. Jeśli funkcją tą jest cos(x), to równanie ruchu ma postać: d 2 α dt 2 = g l sin α f dα dt + B c cos(ω c t + ϕ c ) (7) gdzie B c jest amplitudą, ω c jest częstością drgań, a ϕ c jest przesunięciem fazowym wymuszającego oscylatora. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
77 Symulacje ruchu obiektów Wahadło z wymuszaniem Metoda Rungego-Kutty przykłady Do omówionego modelu można bardzo łatwo dodać popychanie w postaci siły proporcjonalnej do pewnej funkcji zależnej od czasu. Jeśli funkcją tą jest cos(x), to równanie ruchu ma postać: d 2 α dt 2 = g l sin α f dα dt + B c cos(ω c t + ϕ c ) (7) gdzie B c jest amplitudą, ω c jest częstością drgań, a ϕ c jest przesunięciem fazowym wymuszającego oscylatora. W tym modelu można zaobserwować interesujące zachowanie się układu, takie jak rezonans lub chaotyczna ewolucja. Tak, jak poprzednio, można stworzyć dla niego klasę pochodną względem klasy RungeKutta. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
78 Symulacje ruchu obiektów Metoda Rungego-Kutty przykłady Definicja klasy dla wahadła z wymuszaniem Klasa pochodna od RungeKutta dla wahadła z wymuszaniem class Pendulum : public RungeKutta { private: double K; // iloraz g / l double f; // współczynnik tarcia double B; // amplituda wymuszającego oscylatora double W; // częstość wymuszającego oscylatora double S; // przesunięcie fazowe wymuszającego oscylatora protected: void G(const vector <double> &y, double x, vector<double> &out); public: Pendulum(const vector<double> u0, double t0, double d, double k, double r, double b, double w, double s) : RungeKutta(u0, t0, d), K(k), f(r), B(b), W(w), S(s) {} }; void Pendulum::G(const vector <double> &y, double x, vector<double> &out) { (void)x; } out[0] = y[1]; out[1] = - K * sin(y[0]) - f * y[1] + B * cos(w * x + S); Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
79 Symulacje ruchu obiektów Wizualizacja wyników obliczeń Wykres położenia w funkcji czasu dla oscylatora Obliczywszy, na przykład, położenie oscylatora harmonicznego w pewnej liczbie chwil czasu t k takich, że t i t i 1 = t, możemy wykorzystać bibliotekę Qt do utworzenia rysunku zawierającego wykres tej funkcji. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
80 Symulacje ruchu obiektów Wizualizacja wyników obliczeń Wykres położenia w funkcji czasu dla oscylatora Obliczywszy, na przykład, położenie oscylatora harmonicznego w pewnej liczbie chwil czasu t k takich, że t i t i 1 = t, możemy wykorzystać bibliotekę Qt do utworzenia rysunku zawierającego wykres tej funkcji. 1 Tworzymy klasę pochodną od RungeKutta do reprezentowania oscylatorów harmonicznych oraz obiekt tej klasy reprezentujący oscylator o zadanych parametrach (K, położenie początkowe i prędkość początkowa). 2 Używamy tej klasy do wyznaczenia położenia oscylatora w zadanch chwilach czasu. Wyniki można umieścić w dwóch obiektach klasy vector (w jednym czas, a w drugim położenie oscylatora). 3 W ten sposób otrzymujemy zbiór współrzędnych punktów reprezentujących funkcję do narysowania. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
81 Symulacje ruchu obiektów Wizualizacja wyników obliczeń Obliczanie zależności położenia od czasu Otrzymane wektory można przekazać do konstruktora obiektu klasy pochodnej od QWidget, którego metoda paintevent() będzie używać ich przy rysowaniu wykresu. Rafał J. Wysocki Programowanie, część IV 22 maja / 77
82 Symulacje ruchu obiektów Wizualizacja wyników obliczeń Obliczanie zależności położenia od czasu Otrzymane wektory można przekazać do konstruktora obiektu klasy pochodnej od QWidget, którego metoda paintevent() będzie używać ich przy rysowaniu wykresu. vector<double> y; // Warunek początkowy y.push_back(1.0); // położenie y.push_back(0.0); // prędkość Oscylator oscylator(1.0, y, 0, 0.01); vector<double> t(kroki); vector<double> q(kroki); for (int i = 0; i < KROKI; i++) { y = oscylator.getu(); t[i] = oscylator.gett(); q[i] = y[0]; oscylator.wykonaj_krok(); } class Obrazek : public QWidget { private: vector<double> x; vector<double> y; double x0, y0, x1, y1; unsigned int rozmiar; protected: void paintevent(qpaintevent *event); public: Obrazek(vector<double>& a, vector<double>& b, QWidget *parent = NULL); }; Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
83 Symulacje ruchu obiektów Wizualizacja wyników obliczeń Rysowanie wykresu położenia w funkcji czasu Obrazek::Obrazek(vector<double>& a, vector<double>& b, QWidget *parent) : QWidget(parent) { x = a; y = b; rozmiar = x.size(); if (y.size() < rozmiar) rozmiar = y.size(); x0 = x[0]; x1 = x[rozmiar - 1]; y0 = y[0]; y1 = y[rozmiar - 1]; for (unsigned int j = 1; j < rozmiar; j++) { if (x[j] < x0) x0 = x[j]; else if (x[j] > x1) x1 = x[j]; void Obrazek::paintEvent(QPaintEvent *event) { (void)event; } QPainter painter(this); double w = x1 - x0; double h = y1 - y0; painter.scale(width() / w, -height() / h); painter.translate(-x0, -y1); QPointF p1(x[0], y[0]); QPointF p2; for (unsigned int j = 1; j < rozmiar; j++) { p2 = QPointF(x[j], y[j]); painter.drawline(p1, p2); p1 = p2; } } } if (y[j] < y0) y0 = y[j]; else if (y[j] > y1) y1 = y[j]; Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
84 Numeryczne rozwiązywanie równań algebraicznych Algorytm eliminacji Gaussa Algorytmy Gaussa i Gaussa-Jordana Przypuśćmy, że chcemy znaleźć rozwiązanie równania postaci Âx = b, gdzie  jest macierzą (o jednakowej liczbie wierszy i kolumn), a b jest wektorem o zadanych współrzędnych. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
85 Numeryczne rozwiązywanie równań algebraicznych Algorytm eliminacji Gaussa Algorytmy Gaussa i Gaussa-Jordana Przypuśćmy, że chcemy znaleźć rozwiązanie równania postaci Âx = b, gdzie  jest macierzą (o jednakowej liczbie wierszy i kolumn), a b jest wektorem o zadanych współrzędnych. W ogólności można sprowadzić to równanie do równania Ûx = b, gdzie Û jest macierzą trójkątną. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
86 Numeryczne rozwiązywanie równań algebraicznych Algorytm eliminacji Gaussa Algorytmy Gaussa i Gaussa-Jordana Przypuśćmy, że chcemy znaleźć rozwiązanie równania postaci Âx = b, gdzie  jest macierzą (o jednakowej liczbie wierszy i kolumn), a b jest wektorem o zadanych współrzędnych. W ogólności można sprowadzić to równanie do równania Ûx = b, gdzie Û jest macierzą trójkątną. Wtedy rozwiązania oryginalnego równania można otrzymać poprzez tak zwane podstawienie wsteczne (ang. backward substitution). Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
87 Numeryczne rozwiązywanie równań algebraicznych Algorytm eliminacji Gaussa Algorytmy Gaussa i Gaussa-Jordana Przypuśćmy, że chcemy znaleźć rozwiązanie równania postaci Âx = b, gdzie  jest macierzą (o jednakowej liczbie wierszy i kolumn), a b jest wektorem o zadanych współrzędnych. W ogólności można sprowadzić to równanie do równania Ûx = b, gdzie Û jest macierzą trójkątną. Wtedy rozwiązania oryginalnego równania można otrzymać poprzez tak zwane podstawienie wsteczne (ang. backward substitution). Algorytm Gaussa określa sposób wyznaczenia macierzy Û zwany eliminacją do przodu (ang. forward elimination). Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
88 Numeryczne rozwiązywanie równań algebraicznych Eliminacja do przodu Algorytmy Gaussa i Gaussa-Jordana Aby możliwe było przeprowadzenie obliczeń tą metodą, macierz  musi spełniać określone warunki. Załóżmy, że są one spełnione. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
89 Numeryczne rozwiązywanie równań algebraicznych Eliminacja do przodu Algorytmy Gaussa i Gaussa-Jordana Aby możliwe było przeprowadzenie obliczeń tą metodą, macierz  musi spełniać określone warunki. Załóżmy, że są one spełnione. W pierwszym kroku obliczamy macierz Â(1), dla której: 1 Pierwszy wiersz jest identyczny z pierwszym wierszem macierzy Â. 2 W każdym z pozostałych wierszy pierwszy element macierzowy jest zerem: A (1) ij = A ij A i1 A 11 A 1j Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
90 Numeryczne rozwiązywanie równań algebraicznych Eliminacja do przodu Algorytmy Gaussa i Gaussa-Jordana Aby możliwe było przeprowadzenie obliczeń tą metodą, macierz  musi spełniać określone warunki. Załóżmy, że są one spełnione. W pierwszym kroku obliczamy macierz Â(1), dla której: 1 Pierwszy wiersz jest identyczny z pierwszym wierszem macierzy Â. 2 W każdym z pozostałych wierszy pierwszy element macierzowy jest zerem: A (1) ij = A ij A i1 A 11 A 1j Jednocześnie obliczamy wektor b (1) taki, że b (1) 1 = b 1 oraz (dla i > 1) b (1) i = b i A i1 A 11 b 1 Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
91 Numeryczne rozwiązywanie równań algebraicznych Eliminacja do przodu (c. d.) Algorytmy Gaussa i Gaussa-Jordana Inaczej mówiąc mnożymy równanie 1 w oryginalnym układzie równań przez A i1 /A 11 i odejmujemy wynik od równania i (powtarzając dla wszystkich i > 1). Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
92 Numeryczne rozwiązywanie równań algebraicznych Eliminacja do przodu (c. d.) Algorytmy Gaussa i Gaussa-Jordana Inaczej mówiąc mnożymy równanie 1 w oryginalnym układzie równań przez A i1 /A 11 i odejmujemy wynik od równania i (powtarzając dla wszystkich i > 1). W drugim kroku równania 1 i 2 pozostawiamy bez zmian, zaś dla i > 2 równanie 2 mnożymy przez A (1) i2 /A(1) 22 i wynik odejmujemy od równania i. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
93 Numeryczne rozwiązywanie równań algebraicznych Eliminacja do przodu (c. d.) Algorytmy Gaussa i Gaussa-Jordana Inaczej mówiąc mnożymy równanie 1 w oryginalnym układzie równań przez A i1 /A 11 i odejmujemy wynik od równania i (powtarzając dla wszystkich i > 1). W drugim kroku równania 1 i 2 pozostawiamy bez zmian, zaś dla i > 2 równanie 2 mnożymy przez A (1) i2 /A(1) 22 i wynik odejmujemy od równania i. W ten sposób otrzymujemy macierz macierz Â(2), dla której: 1 Pierwszy wiersz jest identyczny z pierwszym wierszem macierzy Â. 2 Drugi wiersz jest identyczny z drugim wierszem macierzy Â(1). 3 W każdym z pozostałych wierszy pierwszy i drugi element macierzowy są zerami. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
94 Numeryczne rozwiązywanie równań algebraicznych Eliminacja do przodu (c. d.) Algorytmy Gaussa i Gaussa-Jordana W rezultacie mamy (dla i > 2): A (2) ij = A (1) ij b (2) i = b (1) i A(1) i2 A (1) 22 A(1) i2 A (1) 22 A (1) 2j b (1) 2 Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
95 Numeryczne rozwiązywanie równań algebraicznych Eliminacja do przodu (c. d.) Algorytmy Gaussa i Gaussa-Jordana W rezultacie mamy (dla i > 2): A (2) ij = A (1) ij b (2) i = b (1) i A(1) i2 A (1) 22 A(1) i2 A (1) 22 A (1) 2j b (1) 2 Powtarzając analogiczną procedurę dla kolejnych kolumn macierzy po lewej stronie równania w kroku k otrzymujemy macierz Â(k), dla której: 1 Wiersze od 1 do k są takie, jak w macierzy Â(k 1). 2 W każdym z pozostałych wierszy elementy macierzowe A (k) ij dla j < k są zerami. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
96 Numeryczne rozwiązywanie równań algebraicznych Eliminacja do przodu (c. d.) Algorytmy Gaussa i Gaussa-Jordana W trakcie wykonywania obliczeń elementy macierzowe macierzy  mogą być zastępowane przez odpowiednie elementy macierzowe macierzy Â(k) otrzymywanych w kolejnych krokach obliczeń (elementy macierzowe Â, z wyjątkiem wiersza 1, nie są już potrzebne po przeprowadzeniu kroku 1, zaś elementy macierzowe Â(1), z wyjątkiem wierszy 1 i 2, nie są potrzebne po przeprowadzeniu kroku 2 itd.). Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
97 Numeryczne rozwiązywanie równań algebraicznych Eliminacja do przodu (c. d.) Algorytmy Gaussa i Gaussa-Jordana W trakcie wykonywania obliczeń elementy macierzowe macierzy  mogą być zastępowane przez odpowiednie elementy macierzowe macierzy Â(k) otrzymywanych w kolejnych krokach obliczeń (elementy macierzowe Â, z wyjątkiem wiersza 1, nie są już potrzebne po przeprowadzeniu kroku 1, zaś elementy macierzowe Â(1), z wyjątkiem wierszy 1 i 2, nie są potrzebne po przeprowadzeniu kroku 2 itd.). Podobnie współrzędne wektora b mogą być zastępowane przez odpowiednie współrzędne wektorów b (k) otrzymywanych w kolejnych krokach obliczeń. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
98 Numeryczne rozwiązywanie równań algebraicznych Eliminacja do przodu (c. d.) Algorytmy Gaussa i Gaussa-Jordana W trakcie wykonywania obliczeń elementy macierzowe macierzy  mogą być zastępowane przez odpowiednie elementy macierzowe macierzy Â(k) otrzymywanych w kolejnych krokach obliczeń (elementy macierzowe Â, z wyjątkiem wiersza 1, nie są już potrzebne po przeprowadzeniu kroku 1, zaś elementy macierzowe Â(1), z wyjątkiem wierszy 1 i 2, nie są potrzebne po przeprowadzeniu kroku 2 itd.). Podobnie współrzędne wektora b mogą być zastępowane przez odpowiednie współrzędne wektorów b (k) otrzymywanych w kolejnych krokach obliczeń. Po przeprowadzeniu obliczeń dla wszystkich kolumn macierzy po lewej stronie równania otrzymujemy poszukiwaną trójkątną macierz Û. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 22 maja / 77
Programowanie, część IV
Programowanie, część IV Rafał J. Wysocki Instytut Fizyki Teoretycznej, Wydział Fizyki UW 12 kwietnia 2011 Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część IV 12 kwietnia 2011 1 / 42 Równania ruchu
UKŁADY ALGEBRAICZNYCH RÓWNAŃ LINIOWYCH
Transport, studia niestacjonarne I stopnia, semestr I Instytut L-5, Wydział Inżynierii Lądowej, Politechnika Krakowska Ewa Pabisek Adam Wosatko Postać układu równań liniowych Układ liniowych równań algebraicznych
UKŁADY ALGEBRAICZNYCH RÓWNAŃ LINIOWYCH
Transport, studia I stopnia rok akademicki 2011/2012 Instytut L-5, Wydział Inżynierii Lądowej, Politechnika Krakowska Ewa Pabisek Adam Wosatko Uwagi wstępne Układ liniowych równań algebraicznych można
Rozwiązywanie równań nieliniowych
Rozwiązywanie równań nieliniowych Marcin Orchel 1 Wstęp Przykłady wyznaczania miejsc zerowych funkcji f : f(ξ) = 0. Wyszukiwanie miejsc zerowych wielomianu n-tego stopnia. Wymiar tej przestrzeni wektorowej
Numeryczne rozwiązywanie równań różniczkowych ( )
Numeryczne rozwiązywanie równań różniczkowych Równanie różniczkowe jest to równanie, w którym występuje pochodna (czyli różniczka). Przykładem najprostszego równania różniczkowego może być: y ' = 2x które
Ćwiczenie M-2 Pomiar przyśpieszenia ziemskiego za pomocą wahadła rewersyjnego Cel ćwiczenia: II. Przyrządy: III. Literatura: IV. Wstęp. l Rys.
Ćwiczenie M- Pomiar przyśpieszenia ziemskiego za pomocą wahadła rewersyjnego. Cel ćwiczenia: pomiar przyśpieszenia ziemskiego przy pomocy wahadła fizycznego.. Przyrządy: wahadło rewersyjne, elektroniczny
Kinematyka: opis ruchu
Kinematyka: opis ruchu Fizyka I (B+C) Wykład IV: Ruch jednostajnie przyspieszony Ruch harmoniczny Ruch po okręgu Klasyfikacja ruchów Ze względu na tor wybrane przypadki szczególne prostoliniowy, odbywajacy
DRGANIA SWOBODNE UKŁADU O DWÓCH STOPNIACH SWOBODY. Rys Model układu
Ćwiczenie 7 DRGANIA SWOBODNE UKŁADU O DWÓCH STOPNIACH SWOBODY. Cel ćwiczenia Doświadczalne wyznaczenie częstości drgań własnych układu o dwóch stopniach swobody, pokazanie postaci drgań odpowiadających
Podstawy fizyki sezon 1 VII. Ruch drgający
Podstawy fizyki sezon 1 VII. Ruch drgający Agnieszka Obłąkowska-Mucha WFIiS, Katedra Oddziaływań i Detekcji Cząstek, D11, pok. 111 amucha@agh.edu.pl http://home.agh.edu.pl/~amucha Ruch skutkiem działania
3. Macierze i Układy Równań Liniowych
3. Macierze i Układy Równań Liniowych Rozważamy równanie macierzowe z końcówki ostatniego wykładu ( ) 3 1 X = 4 1 ( ) 2 5 Podstawiając X = ( ) x y i wymnażając, otrzymujemy układ 2 równań liniowych 3x
5. Rozwiązywanie układów równań liniowych
5. Rozwiązywanie układów równań liniowych Wprowadzenie (5.1) Układ n równań z n niewiadomymi: a 11 +a 12 x 2 +...+a 1n x n =a 10, a 21 +a 22 x 2 +...+a 2n x n =a 20,..., a n1 +a n2 x 2 +...+a nn x n =a
Nazwisko i imię: Zespół: Data: Ćwiczenie nr 1: Wahadło fizyczne. opis ruchu drgającego a w szczególności drgań wahadła fizycznego
Nazwisko i imię: Zespół: Data: Cel ćwiczenia: Ćwiczenie nr 1: Wahadło fizyczne opis ruchu drgającego a w szczególności drgań wahadła fizycznego wyznaczenie momentów bezwładności brył sztywnych Literatura
Drgania układu o wielu stopniach swobody
Drgania układu o wielu stopniach swobody Rozpatrzmy układ składający się z n ciał o masach m i (i =,,..., n, połączonych między sobą i z nieruchomym podłożem za pomocą elementów sprężystych o współczynnikach
RÓWNANIA NIELINIOWE Maciej Patan
RÓWNANIA NIELINIOWE Maciej Patan Uniwersytet Zielonogórski Przykład 1 Prędkość v spadającego spadochroniarza wyraża się zależnością v = mg ( 1 e c t) m c gdzie g = 9.81 m/s 2. Dla współczynnika oporu c
1 Układy równań liniowych
II Metoda Gaussa-Jordana Na wykładzie zajmujemy się układami równań liniowych, pojawi się też po raz pierwszy macierz Formalną (i porządną) teorią macierzy zajmiemy się na kolejnych wykładach Na razie
2. Układy równań liniowych
2. Układy równań liniowych Grzegorz Kosiorowski Uniwersytet Ekonomiczny w Krakowie zima 2017/2018 rzegorz Kosiorowski (Uniwersytet Ekonomiczny w Krakowie) 2. Układy równań liniowych zima 2017/2018 1 /
x y
Przykłady pytań na egzamin końcowy: (Uwaga! Skreślone pytania nie obowiązują w tym roku.). Oblicz wartość interpolacji funkcjami sklejanymi (przypadek (case) a), dla danych i =[- 4 5], y i =[0 4 -]. Jaka
Całkowanie numeryczne
Całkowanie numeryczne Poniżej omówione zostanie kilka metod przybliżania operacji całkowania i różniczkowania w szczególności uzależnieniu pochodnej od jej różnic skończonych gdy równanie różniczkowe mamy
Układy równań liniowych
Układy równań liniowych Niech K będzie ciałem. Niech n, m N. Równanie liniowe nad ciałem K z niewiadomymi (lub zmiennymi) x 1, x 2,..., x n K definiujemy jako formę zdaniową zmiennej (x 1,..., x n ) K
Wykład 5. Metoda eliminacji Gaussa
1 Wykład 5 Metoda eliminacji Gaussa Rozwiązywanie układów równań liniowych Układ równań liniowych może mieć dokładnie jedno rozwiązanie, nieskończenie wiele rozwiązań lub nie mieć rozwiązania. Metody dokładne
OBLICZANIE POCHODNYCH FUNKCJI.
OBLICZANIE POCHODNYCH FUNKCJI. ROZWIĄZYWANIE RÓWNAŃ RÓŻNICZKOWYCH. ROZWIĄZYWANIE UKŁADÓW RÓWNAŃ LINIOWYCH. Obliczanie pochodnych funkcji. Niech będzie dana funkcja y(x określona i różniczkowalna na przedziale
Wstęp do metod numerycznych Rozwiazywanie równań algebraicznych. P. F. Góra
Wstęp do metod numerycznych Rozwiazywanie równań algebraicznych P. F. Góra http://th-www.if.uj.edu.pl/zfs/gora/ 2010 Co to znaczy rozwiazać równanie? Przypuśmy, że postawiono przed nami problem rozwiazania
Treść wykładu. Układy równań i ich macierze. Rząd macierzy. Twierdzenie Kroneckera-Capellego.
. Metoda eliminacji. Treść wykładu i ich macierze... . Metoda eliminacji. Ogólna postać układu Układ m równań liniowych o n niewiadomych x 1, x 2,..., x n : a 11 x 1 + a 12 x 2 + + a 1n x n = b 1 a 21
Wstęp do metod numerycznych Uwarunkowanie Eliminacja Gaussa. P. F. Góra
Wstęp do metod numerycznych Uwarunkowanie Eliminacja Gaussa P. F. Góra http://th-www.if.uj.edu.pl/zfs/gora/ 2012 Uwarunkowanie zadania numerycznego Niech ϕ : R n R m będzie pewna funkcja odpowiednio wiele
Układy równań liniowych i metody ich rozwiązywania
Układy równań liniowych i metody ich rozwiązywania Łukasz Wojciechowski marca 00 Dany jest układ m równań o n niewiadomych postaci: a x + a x + + a n x n = b a x + a x + + a n x n = b. a m x + a m x +
Definicje i przykłady
Rozdział 1 Definicje i przykłady 1.1 Definicja równania różniczkowego 1.1 DEFINICJA. Równaniem różniczkowym zwyczajnym rzędu n nazywamy równanie F (t, x, ẋ, ẍ,..., x (n) ) = 0. (1.1) W równaniu tym t jest
Wykład z modelowania matematycznego. Przykłady modelowania w mechanice i elektrotechnice.
Wykład z modelowania matematycznego. Przykłady modelowania w mechanice i elektrotechnice. 1 Wahadło matematyczne. Wahadłem matematycznym nazywamy punkt materialny o masie m zawieszony na długiej, cienkiej
Metody numeryczne rozwiązywania równań różniczkowych
Metody numeryczne rozwiązywania równań różniczkowych Marcin Orchel Spis treści Wstęp. Metody przybliżone dla równań pierwszego rzędu................ Metoda kolejnych przybliżeń Picarda...................2
Fizyka 11. Janusz Andrzejewski
Fizyka 11 Ruch okresowy Każdy ruch powtarzający się w regularnych odstępach czasu nazywa się ruchem okresowym lub drganiami. Drgania tłumione ruch stopniowo zanika, a na skutek tarcia energia mechaniczna
Zagadnienia brzegowe dla równań eliptycznych
Temat 7 Zagadnienia brzegowe dla równań eliptycznych Rozważmy płaski obszar R 2 ograniczony krzywą. la równania Laplace a (Poissona) stawia się trzy podstawowe zagadnienia brzegowe. Zagadnienie irichleta
Równania różniczkowe zwyczajne
Równania różniczkowe zwyczajne Zajmiemy się teraz problemem numerycznego rozwiązywania równań różniczkowych zwyczajnych o postaci: z warunkeim początkowym. Zauważmy że przykładowe równanie różniczkowe
3. Wykład Układy równań liniowych.
31 Układy równań liniowych 3 Wykład 3 Definicja 31 Niech F będzie ciałem Układem m równań liniowych o niewiadomych x 1,, x n, m, n N, o współczynnikach z ciała F nazywamy układ równań postaci: x 1 + +
UKŁADY RÓWNAŃ LINIOWYCH - Metody dokładne
UKŁADY RÓWNAŃ LINIOWYCH - Metody dokładne Układy równań liniowych Rozpatruje się układ n równań liniowych zawierających n niewiadomych: a11x1 a12x2... a1nxn b1 a21x1 a22x2... a2nxn b2... an 1x1 an2x2...
Metoda eliminacji Gaussa. Autorzy: Michał Góra
Metoda eliminacji Gaussa Autorzy: Michał Góra 9 Metoda eliminacji Gaussa Autor: Michał Góra Przedstawiony poniżej sposób rozwiązywania układów równań liniowych jest pewnym uproszczeniem algorytmu zwanego
Wstęp do metod numerycznych Eliminacja Gaussa Równania macierzowe. P. F. Góra
Wstęp do metod numerycznych Eliminacja Gaussa Równania macierzowe P. F. Góra http://th-www.if.uj.edu.pl/zfs/gora/ 2015 Co można zrobić z układem równań... tak, aby jego rozwiazania się nie zmieniły? Rozważam
1 Macierz odwrotna metoda operacji elementarnych
W tej części skupimy się na macierzach kwadratowych. Zakładać będziemy, że A M(n, n) dla pewnego n N. Definicja 1. Niech A M(n, n). Wtedy macierzą odwrotną macierzy A (ozn. A 1 ) nazywamy taką macierz
Metody numeryczne I Równania nieliniowe
Metody numeryczne I Równania nieliniowe Janusz Szwabiński szwabin@ift.uni.wroc.pl Metody numeryczne I (C) 2004 Janusz Szwabiński p.1/66 Równania nieliniowe 1. Równania nieliniowe z pojedynczym pierwiastkiem
Wstęp do równań różniczkowych
Wstęp do równań różniczkowych Wykład 1 Lech Sławik Instytut Matematyki PK Literatura 1. Arnold W.I., Równania różniczkowe zwyczajne, PWN, Warszawa, 1975. 2. Matwiejew N.M., Metody całkowania równań różniczkowych
UKŁADY RÓWNAŃ LINIOWYCH -Metody dokładne
UKŁADY RÓWNAŃ LINIOWYCH -Metody dokładne Układy równań liniowych Rozpatruje się układ n równań liniowych zawierających n niewiadomych: a + a +... + ann b a + a +... + ann b... an + an+... + annn bn który
Obliczenia iteracyjne
Lekcja Strona z Obliczenia iteracyjne Zmienne iteracyjne (wyliczeniowe) Obliczenia iteracyjne wymagają zdefiniowania specjalnej zmiennej nazywanej iteracyjną lub wyliczeniową. Zmienną iteracyjną od zwykłej
Układy równań nieliniowych (wielowymiarowa metoda Newtona-Raphsona) f(x) = 0, gdzie. dla n=2 np.
Układy równań nieliniowych (wielowymiarowa metoda Newtona-Raphsona f(x 0, f ( f, f,..., f n gdzie 2 x ( x, x 2,..., x n dla n2 np. f ( x, y 0 g( x, y 0 dla każdej wielowymiarowej rozwinięcie w szereg Taylora
Ć W I C Z E N I E N R M-2
INSYU FIZYKI WYDZIAŁ INŻYNIERII PRODUKCJI I ECHNOLOGII MAERIAŁÓW POLIECHNIKA CZĘSOCHOWSKA PRACOWNIA MECHANIKI Ć W I C Z E N I E N R M- ZALEŻNOŚĆ OKRESU DRGAŃ WAHADŁA OD AMPLIUDY Ćwiczenie M-: Zależność
Rozwiązywanie układów równań liniowych metody dokładne Materiały pomocnicze do ćwiczeń z metod numerycznych
Rozwiązywanie układów równań liniowych metody dokładne Materiały pomocnicze do ćwiczeń z metod numerycznych Piotr Modliński Wydział Geodezji i Kartografii PW 13 stycznia 2012 P. Modliński, GiK PW Rozw.
METODY ROZWIĄZYWANIA RÓWNAŃ NIELINIOWYCH
METODY ROZWIĄZYWANIA RÓWNAŃ NIELINIOWYCH Jednym z zastosowań metod numerycznych jest wyznaczenie pierwiastka lub pierwiastków równania nieliniowego. W tym celu stosuje się szereg metod obliczeniowych np:
Rozwiązywanie układów równań liniowych
Rozwiązywanie układów równań liniowych Marcin Orchel 1 Wstęp Jeśli znamy macierz odwrotną A 1, to możęmy znaleźć rozwiązanie układu Ax = b w wyniku mnożenia x = A 1 b (1) 1.1 Metoda eliminacji Gaussa Pierwszy
Egzamin z Metod Numerycznych ZSI, Egzamin, Gr. A
Egzamin z Metod Numerycznych ZSI, 06.2007. Egzamin, Gr. A Imię i nazwisko: Nr indeksu: Section 1. Test wyboru, max 33 pkt Zaznacz prawidziwe odpowiedzi literą T, a fałszywe N. Każda prawidłowa odpowiedź
Co to jest wektor? Jest to obiekt posiadający: moduł (długość), kierunek wraz ze zwrotem.
1 Wektory Co to jest wektor? Jest to obiekt posiadający: moduł (długość), kierunek wraz ze zwrotem. 1.1 Dodawanie wektorów graficzne i algebraiczne. Graficzne - metoda równoległoboku. Sprowadzamy wektory
MECHANIKA 2. Drgania punktu materialnego. Wykład Nr 8. Prowadzący: dr Krzysztof Polko
MECHANIKA 2 Wykład Nr 8 Drgania punktu materialnego Prowadzący: dr Krzysztof Polko Wstęp Drgania Okresowe i nieokresowe Swobodne i wymuszone Tłumione i nietłumione Wstęp Drgania okresowe ruch powtarzający
Układy równań i nierówności liniowych
Układy równań i nierówności liniowych Wiesław Krakowiak 1 grudnia 2010 1 Układy równań liniowych DEFINICJA 11 Układem równań m liniowych o n niewiadomych X 1,, X n, nazywamy układ postaci: a 11 X 1 + +
Wyprowadzenie prawa Gaussa z prawa Coulomba
Wyprowadzenie prawa Gaussa z prawa Coulomba Natężenie pola elektrycznego ładunku punktowego q, umieszczonego w początku układu współrzędnych (czyli prawo Coulomba): E = Otoczmy ten ładunek dowolną powierzchnią
Metody Lagrange a i Hamiltona w Mechanice
Metody Lagrange a i Hamiltona w Mechanice Mariusz Przybycień Wydział Fizyki i Informatyki Stosowanej Akademia Górniczo-Hutnicza Wykład 8 M. Przybycień (WFiIS AGH) Metody Lagrange a i Hamiltona... Wykład
VII. Drgania układów nieliniowych
VII. Drgania układów nieliniowych 1. Drgania anharmoniczne spowodowane symetryczna siła zwrotna 1.1 Różniczkowe równanie ruchu Rozważamy teraz drgania swobodne masy m przytwierdzonej do sprężyny o współczynniku
Laboratorium II: Modelowanie procesów fizycznych Skrypt do ćwiczeń
PJWSTK/KMKT-07082006 Laboratorium II: Modelowanie procesów fizycznych Katedra Metod Komputerowych Techniki Polsko Japońska Wyższa Szkoła Technik Komputerowych I. KINETYKA Kinetyka zajmuje się ruchem ciał
O 2 O 1. Temat: Wyznaczenie przyspieszenia ziemskiego za pomocą wahadła rewersyjnego
msg M 7-1 - Temat: Wyznaczenie przyspieszenia ziemskiego za pomocą wahadła rewersyjnego Zagadnienia: prawa dynamiki Newtona, moment sił, moment bezwładności, dynamiczne równania ruchu wahadła fizycznego,
Programowanie celowe #1
Programowanie celowe #1 Problem programowania celowego (PC) jest przykładem problemu programowania matematycznego nieliniowego, który można skutecznie zlinearyzować, tzn. zapisać (i rozwiązać) jako problem
RÓWNANIA RÓŻNICZKOWE ZWYCZAJNE
RÓWNANIA RÓŻNICZKOWE ZWYCZAJNE A. RÓWNANIA RZĘDU PIERWSZEGO Uwagi ogólne Równanie różniczkowe zwyczajne rzędu pierwszego zawiera. Poza tym może zawierać oraz zmienną. Czyli ma postać ogólną Na przykład
KADD Minimalizacja funkcji
Minimalizacja funkcji Poszukiwanie minimum funkcji Foma kwadratowa Metody przybliżania minimum minimalizacja Minimalizacja w n wymiarach Metody poszukiwania minimum Otaczanie minimum Podział obszaru zawierającego
1 Metody rozwiązywania równań nieliniowych. Postawienie problemu
1 Metody rozwiązywania równań nieliniowych. Postawienie problemu Dla danej funkcji ciągłej f znaleźć wartości x, dla których f(x) = 0. (1) 2 Przedział izolacji pierwiastka Będziemy zakładać, że równanie
Wstęp do równań różniczkowych
Wstęp do równań różniczkowych Wykład 1 Lech Sławik Instytut Matematyki PK Literatura 1. Arnold W.I., Równania różniczkowe zwyczajne, PWN, Warszawa, 1975. 2. Matwiejew N.M., Metody całkowania równań różniczkowych
Lista 6. Kamil Matuszewski 13 kwietnia D n =
Lista 6 Kamil Matuszewski 3 kwietnia 6 3 4 5 6 7 8 9 Zadanie Mamy Pokaż, że det(d n ) = n.... D n =.... Dowód. Okej. Dla n =, n = trywialne. Załóżmy, że dla n jest ok, sprawdzę dla n. Aby to zrobić skorzystam
MECHANIKA II. Dynamika ruchu obrotowego bryły sztywnej
MECHANIKA II. Dynamika ruchu obrotowego bryły sztywnej Daniel Lewandowski Politechnika Wrocławska, Wydział Mechaniczny, Katedra Mechaniki i Inżynierii Materiałowej http://kmim.wm.pwr.edu.pl/lewandowski/
Pochodna i różniczka funkcji oraz jej zastosowanie do obliczania niepewności pomiarowych
Pochodna i różniczka unkcji oraz jej zastosowanie do obliczania niepewności pomiarowych Krzyszto Rębilas DEFINICJA POCHODNEJ Pochodna unkcji () w punkcie określona jest jako granica: lim 0 Oznaczamy ją
= i Ponieważ pierwiastkami stopnia 3 z 1 są (jak łatwo wyliczyć) liczby 1, 1+i 3
ZESTAW I 1. Rozwiązać równanie. Pierwiastki zaznaczyć w płaszczyźnie zespolonej. z 3 8(1 + i) 3 0, Sposób 1. Korzystamy ze wzoru a 3 b 3 (a b)(a 2 + ab + b 2 ), co daje: (z 2 2i)(z 2 + 2(1 + i)z + (1 +
ROZWIĄZYWANIE RÓWNAŃ NIELINIOWYCH
Transport, studia I stopnia Instytut L-5, Wydział Inżynierii Lądowej, Politechnika Krakowska Ewa Pabisek Adam Wosatko Postać ogólna równania nieliniowego Często występującym, ważnym problemem obliczeniowym
Funkcja kwadratowa. f(x) = ax 2 + bx + c,
Funkcja kwadratowa. Funkcją kwadratową nazywamy funkcję f : R R określoną wzorem gdzie a, b, c R, a 0. f(x) = ax 2 + bx + c, Szczególnym przypadkiem funkcji kwadratowej jest funkcja f(x) = ax 2, a R \
METODY NUMERYCZNE. wykład. konsultacje: wtorek 10:00-11:30 środa 10:00-11:30. dr inż. Grażyna Kałuża pokój
METODY NUMERYCZNE wykład dr inż. Grażyna Kałuża pokój 103 konsultacje: wtorek 10:00-11:30 środa 10:00-11:30 www.kwmimkm.polsl.pl Program przedmiotu wykład: 15 godzin w semestrze laboratorium: 30 godzin
a 11 a a 1n a 21 a a 2n... a m1 a m2... a mn x 1 x 2... x m ...
Wykład 15 Układy równań liniowych Niech K będzie ciałem i niech α 1, α 2,, α n, β K. Równanie: α 1 x 1 + α 2 x 2 + + α n x n = β z niewiadomymi x 1, x 2,, x n nazywamy równaniem liniowym. Układ: a 21 x
Zaawansowane metody numeryczne
Wykład 11 Ogólna postać metody iteracyjnej Definicja 11.1. (metoda iteracyjna rozwiązywania układów równań) Metodą iteracyjną rozwiązywania { układów równań liniowych nazywamy ciąg wektorów zdefiniowany
Definicja i własności wartości bezwzględnej.
Równania i nierówności z wartością bezwzględną. Rozwiązywanie układów dwóch (trzech) równań z dwiema (trzema) niewiadomymi. Układy równań liniowych z parametrem, analiza rozwiązań. Definicja i własności
Egzamin z Metod Numerycznych ZSI, Grupa: A
Egzamin z Metod Numerycznych ZSI, 06.2005. Grupa: A Nazwisko: Imię: Numer indeksu: Ćwiczenia z: Data: Część 1. Test wyboru, max 36 pkt Zaznacz prawidziwe odpowiedzi literą T, a fałszywe N. Każda prawidłowa
Zagdanienia do egzaminu z Inżynierskich Metod Numerycznych - semestr 1
Zagdanienia do egzaminu z Inżynierskich Metod Numerycznych - semestr 1 Tomasz Chwiej 6 czerwca 2016 1 Równania różniczkowe zwyczajne Zastosowanie szeregu Taylora do konstrukcji ilorazów różnicowych: iloraz
15. Macierze. Definicja Macierzy. Definicja Delty Kroneckera. Definicja Macierzy Kwadratowej. Definicja Macierzy Jednostkowej
15. Macierze Definicja Macierzy. Dla danego ciała F i dla danych m, n IN funkcję A : {1,...,m} {1,...,n} F nazywamy macierzą m n ( macierzą o m wierszach i n kolumnach) o wyrazach z F. Wartość A(i, j)
Metody rozwiązywania równań nieliniowych
Metody rozwiązywania równań nieliniowych Rozwiązywanie równań nieliniowych Ogólnie równanie o jednej niewiadomej x można przedstawić w postaci f ( x)=0, x R, (1) gdzie f jest wystarczająco regularną funkcją.
Funkcja kwadratowa. f(x) = ax 2 + bx + c = a
Funkcja kwadratowa. Funkcją kwadratową nazywamy funkcję f : R R określoną wzorem gdzie a, b, c R, a 0. f(x) = ax + bx + c, Szczególnym przypadkiem funkcji kwadratowej jest funkcja f(x) = ax, a R \ {0}.
Zaawansowane metody numeryczne
Wykład 10 Rozkład LU i rozwiązywanie układów równań liniowych Niech będzie dany układ równań liniowych postaci Ax = b Załóżmy, że istnieją macierze L (trójkątna dolna) i U (trójkątna górna), takie że macierz
Zadania z mechaniki dla nanostudentów. Seria 3. (wykład prof. J. Majewskiego)
Zadania z mechaniki dla nanostudentów Seria 3 (wykład prof J Majewskiego) Zadanie 1 Po równi pochyłej o kącie nachylenia do poziomu równym α zsuwa się klocek o masie m, na który działa siła oporu F = m
Metody numeryczne równań różniczkowych zwyczajnych
Metody numeryczne równań różniczkowych zwyczajnych Marcin Jenczmyk m.jenczmyk@knm.katowice.pl 9 maja 2015 M. Jenczmyk XXX Sesja KNM Metody numeryczne R.R.Z. 1 / 18 Omawiany problem dotyczyć będzie numerycznego
METODY NUMERYCZNE. Wykład 4. Numeryczne rozwiązywanie równań nieliniowych z jedną niewiadomą. prof. dr hab.inż. Katarzyna Zakrzewska
METODY NUMERYCZNE Wykład 4. Numeryczne rozwiązywanie równań nieliniowych z jedną niewiadomą prof. dr hab.inż. Katarzyna Zakrzewska Met.Numer. Wykład 4 1 Rozwiązywanie równań nieliniowych z jedną niewiadomą
Rozwiązywanie równań nieliniowych i ich układów. Wyznaczanie zer wielomianów.
Rozwiązywanie równań nieliniowych i ich układów. Wyznaczanie zer wielomianów. Plan wykładu: 1. Wyznaczanie pojedynczych pierwiastków rzeczywistych równań nieliniowych metodami a) połowienia (bisekcji)
Sprawozdanie z zad. nr 4 Wahadło Matematyczne z Fizyki Komputerowej. Szymon Wawrzyniak / Artur Angiel / Gr. 5 / Poniedziałek 12:15
Sprawozdanie z zad. nr 4 Wahadło Matematyczne z Fizyki Komputerowej Szymon Wawrzyniak / Artur Angiel / Gr. 5 / Poniedziałek 12:15 =============================================== =========================
BADANIE DRGAŃ TŁUMIONYCH WAHADŁA FIZYCZNEGO
ĆWICZENIE 36 BADANIE DRGAŃ TŁUMIONYCH WAHADŁA FIZYCZNEGO Cel ćwiczenia: Wyznaczenie podstawowych parametrów drgań tłumionych: okresu (T), częstotliwości (f), częstotliwości kołowej (ω), współczynnika tłumienia
Prędkość fazowa i grupowa fali elektromagnetycznej w falowodzie
napisał Michał Wierzbicki Prędkość fazowa i grupowa fali elektromagnetycznej w falowodzie Prędkość grupowa paczki falowej Paczka falowa jest superpozycją fal o różnej częstości biegnących wzdłuż osi z.
Prawa ruchu: dynamika
Prawa ruchu: dynamika Fizyka I (B+C) Wykład X: Równania ruchu Więzy Rozwiazywanie równań ruchu oscylator harminiczny, wahadło ruch w jednorodnym polu elektrycznym i magnetycznym spektroskop III zasada
27. RÓWNANIA RÓŻNICZKOWE CZĄSTKOWE
27. RÓWNANIA RÓŻNICZKOWE CZĄSTKOWE 27.1. Wiadomości wstępne Równaniem różniczkowym cząstkowym nazywamy związek w którym występuje funkcja niewiadoma u dwóch lub większej liczby zmiennych niezależnych i
Ćw. nr 31. Wahadło fizyczne o regulowanej płaszczyźnie drgań - w.2
1 z 6 Zespół Dydaktyki Fizyki ITiE Politechniki Koszalińskiej Ćw. nr 3 Wahadło fizyczne o regulowanej płaszczyźnie drgań - w.2 Cel ćwiczenia Pomiar okresu wahań wahadła z wykorzystaniem bramki optycznej
VII. Elementy teorii stabilności. Funkcja Lapunowa. 1. Stabilność w sensie Lapunowa.
VII. Elementy teorii stabilności. Funkcja Lapunowa. 1. Stabilność w sensie Lapunowa. W rozdziale tym zajmiemy się dokładniej badaniem stabilności rozwiązań równania różniczkowego. Pojęcie stabilności w
IX. Rachunek różniczkowy funkcji wielu zmiennych. 1. Funkcja dwóch i trzech zmiennych - pojęcia podstawowe. - funkcja dwóch zmiennych,
IX. Rachunek różniczkowy funkcji wielu zmiennych. 1. Funkcja dwóch i trzech zmiennych - pojęcia podstawowe. Definicja 1.1. Niech D będzie podzbiorem przestrzeni R n, n 2. Odwzorowanie f : D R nazywamy
Wykład FIZYKA I. 10. Ruch drgający tłumiony i wymuszony. Dr hab. inż. Władysław Artur Woźniak
Wykład FIZYKA I 1. Ruch drgający tłumiony i wymuszony Dr hab. inż. Władysław Artur Woźniak Instytut Fizyki Politechniki Wrocławskiej http://www.if.pwr.wroc.pl/~wozniak/fizyka1.html Siły oporu (tarcia)
Fizyka 12. Janusz Andrzejewski
Fizyka 1 Janusz Andrzejewski Przypomnienie: Drgania procesy w których pewna wielkość fizyczna na przemian maleje i rośnie Okresowy ruch drgający (periodyczny) - jeżeli wartości wielkości fizycznych zmieniające
INTERPOLACJA I APROKSYMACJA FUNKCJI
Transport, studia niestacjonarne I stopnia, semestr I Instytut L-5, Wydział Inżynierii Lądowej, Politechnika Krakowska Ewa Pabisek Adam Wosatko Wprowadzenie Na czym polega interpolacja? Interpolacja polega
Macierze. Rozdział Działania na macierzach
Rozdział 5 Macierze Funkcję, która każdej parze liczb naturalnych (i, j) (i 1,..., n; j 1,..., m) przyporządkowuje dokładnie jedną liczbę a ij F, gdzie F R lub F C, nazywamy macierzą (rzeczywistą, gdy
Podstawy Automatyki. Wykład 5 - stabilność liniowych układów dynamicznych. dr inż. Jakub Możaryn. Warszawa, Instytut Automatyki i Robotyki
Wykład 5 - stabilność liniowych układów dynamicznych Instytut Automatyki i Robotyki Warszawa, 2018 Wstęp Stabilność O układzie możemy mówić, że jest stabilny jeżeli jego odpowiedź na wymuszenie (zakłócenie)
SIMR 2016/2017, Analiza 2, wykład 1, Przestrzeń wektorowa
SIMR 06/07, Analiza, wykład, 07-0- Przestrzeń wektorowa Przestrzeń wektorowa (liniowa) - przestrzeń (zbiór) w której określone są działania (funkcje) dodawania elementów i mnożenia elementów przez liczbę
Iteracyjne rozwiązywanie równań
Elementy metod numerycznych Plan wykładu 1 Wprowadzenie Plan wykładu 1 Wprowadzenie 2 Plan wykładu 1 Wprowadzenie 2 3 Wprowadzenie Metoda bisekcji Metoda siecznych Metoda stycznych Plan wykładu 1 Wprowadzenie
Układy równań liniowych. Krzysztof Patan
Układy równań liniowych Krzysztof Patan Motywacje Zagadnienie kluczowe dla przetwarzania numerycznego Wiele innych zadań redukuje się do problemu rozwiązania układu równań liniowych, często o bardzo dużych
Podstawy Automatyki. Wykład 5 - stabilność liniowych układów dynamicznych. dr inż. Jakub Możaryn. Warszawa, Instytut Automatyki i Robotyki
Wykład 5 - stabilność liniowych układów dynamicznych Instytut Automatyki i Robotyki Warszawa, 2015 Wstęp Stabilność - definicja 1 O układzie możemy mówić, że jest stabilny gdy wytrącony ze stanu równowagi
Interpolacja, aproksymacja całkowanie. Interpolacja Krzywa przechodzi przez punkty kontrolne
Interpolacja, aproksymacja całkowanie Interpolacja Krzywa przechodzi przez punkty kontrolne Aproksymacja Punkty kontrolne jedynie sterują kształtem krzywej INTERPOLACJA Zagadnienie interpolacji można sformułować
Wykład FIZYKA I. Dr hab. inż. Władysław Artur Woźniak. Katedra Optyki i Fotoniki Wydział Podstawowych Problemów Techniki Politechnika Wrocławska
Wykład FIZYKA I 1. Ruch drgający tłumiony i wymuszony Katedra Optyki i Fotoniki Wydział Podstawowych Problemów Techniki Politechnika Wrocławska http://www.if.pwr.wroc.pl/~wozniak/fizyka1.html DRGANIA HARMONICZNE
Metody numeryczne. Sformułowanie zagadnienia interpolacji
Ćwiczenia nr 4. Sformułowanie zagadnienia interpolacji Niech będą dane punkty x 0,..., x n i wartości y 0,..., y n, takie że i=0,...,n y i = f (x i )). Szukamy funkcji F (funkcji interpolującej), takiej
Metody numeryczne. materiały do wykładu dla studentów
Metody numeryczne materiały do wykładu dla studentów 5. Przybliżone metody rozwiązywania równań 5.1 Lokalizacja pierwiastków 5.2 Metoda bisekcji 5.3 Metoda iteracji 5.4 Metoda stycznych (Newtona) 5.5 Metoda