Narzędzia użytkownika

Narzędzia witryny


aniss2016_17

====== Różnice ====== Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

aniss2016_17 [2017/12/11 11:40]
miller [Lab. 5 (2017)]
aniss2016_17 [2018/01/17 09:21] (aktualna)
miller [Lab. 7 (2017)]
Linia 96: Linia 96:
  
  
-====== Lab. 6 ======+====== Lab. 6 (2017) ======
  
-Kartkówka:     +Kartkówka - wg zagadnień i przykładowych zadań wysłanych do systemu Dziekanat.    
-  * Budowanie diagramów modeli ciągłych w Simulinku, np.: +
-         Ze zbiornika (jak na ćwiczeniu) woda wylewa się rurką w dnie do drugiego zbiornika położonego niżej. Z niższego zbiornika też wypływa woda rurką w dnie. Symulujemy poziomy wody w obu zbiornikach.  +
-         - W zamkniętym, pustym pomieszczeniu (np. pokoju) jest grzejnik elektryczny o mocy P znikomej pojemności cieplnej. Powietrze w pomieszczeniu nagrzewa się, ale jednocześnie ciepło przenika przez ściany (ilość tego ciepła zależy proporcjonalnie od różnicy temperatur w pomieszczeniu i na zewnątrz, temperatura otoczenia jest stała. Symulujemy przebieg temperatury powietrza w pomieszczeniu. +
-         - Układ elektryczny RC - do źródła prądu dołączony równolegle połączony kondensator i rezystor. Symulujemy natężenie prądu przepływającego przez rezystor, +
-         - Dwa poprzednie obiekty łączymy w jeden układ: grzejnik z przykładu (2) jest rezystorem z przykładu (3). +
-         - W pokoju stoi lodówka, która jest włączona i pobiera z sieci moc P dla "pompowania" ciepła z lodówki na zewnątrz tj. do pokojuIlość ciepła przepompowanego w jednostce czasu jest k razy większa niż pobrana w tym czasie energia elektryczna z sieci (energia elektryczna jest w tym procesie zamieniana na ciepło rozpraszane  w pokoju. Pokój jest izolowany - nie traci ciepła. Symulujemy temperaturę w pokoju i lodówce. +
-         - Lodówkę z przykładu (5) traktujemy jako grzejnik z przykładu (2). +
-         - Symulacja poziomu wody w dwóch naczyniach połączonych rurką o małej średnicy. +
-     *  Metody numerycznego rozwiązywania zagadnienia początkowego: +
-         - metoda Eulera - kilka kroków rozwiązania przykładowego równania, +
-         - różnice między metodami jedno- i wielokrokowymi, +
-         - różnice między metodami jedno- i wieloetapowymi, +
-         - różnice między metodami jawnymi a niejawnymi, +
-         - błąd lokalny a błąd globalny rozwiązania, +
-         - zależność błędu od wielkości kroku i od rzędu metody, +
-         - dobór kroku wg kryterium stabilności absolutnej.  +
-     +
-  Przebieg ćwiczenia: +
-    *  Analiza wyników poprzedniego ćwiczenia - obliczania błędu rozwiązania numerycznego dla różnych metod i różnych kroków: +
  
-                Tabela średniego błędu kwadratowego: +Ćwiczenie nr 6**Wstęp do kalibracji modelu**
-    krok     Euler         Heun         B - S        RK4 +
-      1    3.5805e-04   2.6577e-06   8.7422e-09   7.5712e-11 +
-     1/2   1.7769e-04   6.5511e-07   1.0766e-09   4.6300e-12 +
-     1/4   8.8513e-05   1.6263e-07   1.3358e-10   2.8627e-13 +
-     1/8   4.4173e-05   4.0514e-08   1.6635e-11   1.7785e-14 +
-     1/16  2.2066e-05   1.0111e-08   2.0755e-12   1.0896e-15 +
-     1/32  1.3962e-05   3.3028e-09   3.4762e-13   1.3585e-16 +
-     +
-                Tabela krotności zmniejszania błędu +
-    krok          Euler     Heun    B - S     RK4 +
-   1  -> 1/2     2.0150   4.0568   8.1199   16.353 +
-  1/2 -> 1/4     2.0075   4.0283   8.0599   16.173 +
-  1/4 -> 1/8     2.0038   4.0141   8.0300   16.096 +
-  1/8 -> 1/16    2.0019   4.0070   8.0148   16.323 +
-  1/16-> 1/32    1.5804   3.0613   5.9707    8.020+
  
-  Szacowanie błędu rozwiązania numerycznego w przypadku braku rozwiązania dokładnego - zastosowanie ekstrapolacji Richardsona. Należy: +**Zadanie**Zbudować model umożliwiający symulację wypływu wody ze zbiornika. Dopuszczalne błędy: 
-    - wybrać metodę i krok oraz przeprowadzić symulację+        względny błąd symulacji bieżącego poziomu wody ''rel_err_max'' = 1e-3,  
-    - sprawdzić, czy krok leży w zakresie regularnego spadku błędu przy zmniejszaniu kroku, +        - błąd bezwzględny ''abs_err_max'' = 2[mm]
-    na podstawie uzyskanych rozwiązań przybliżonych oszacować błąd i wyznaczyć rozwiązanie pozbawione głównej części dotychczasowego błędu+
-    porównać oszacowany błąd z błędem obliczonym za pomocą rozwiązania analitycznego. +
-  * Porównanie błędu i kosztu obliczeniowego algorytmu stałokrokowego i adaptacyjnego. +
-  * Badanie stabilności absolutnej rozwiązania.  +
-  +
  
-====== Lab7 ======+**Parametry zbiornika** 
 +     - Geometria      
 +        - średnica zbiornika ''D'' 218 mm, 
 +        - średnica poziomej rurki wypływowej ''d'' 9 mm, 
 +        - oś rurki wypływowej jest na wysokości ''h_r'' 15 mm nad dnem zbiornika.       
 +     - Na dnie zbiornika stoi (na większej podstawie) stożek ścięty (nie jest wypełniany wodą): 
 +        - średnica dolna ''DS'' 90 mm, 
 +        - średnica górna ''ds'' 50 mm, 
 +        - wysokość ''h_s'' 55 mm 
 +     - Początkowa wysokość lustra wody (liczona od dna zbiornika) ''h0'' 145 mm.  
 +    
 +**Model teoretyczny** zgodny z równaniami Bernoulliego. 
  
-Plan:+Energia potencjalna zgromadzonej wody jest zamieniana na energię kinetyczną wody wypływającej.
  
-  Kartkówka - zagadnienia+Otrzymujemy równanie różniczkowe: ''dh/dt = -k sqrt(h)'', gdzie ''k=(d/D)^2*sqrt(2*g)''. 
-    zależność błędu numerycznego symulacji od kroku i rzędu metody,+ 
 +Model w SIMULINKu. 
 + 
 +**Dane pomiarowe:** Czas ''t'' (w sekundach), poziom wody mierzony od dna naczynia ''h'' (w metrach) 
 + 
 +t = [0 7.05 14.24 21.95 30.00 38.32 47.08 56.46 66.89 78.72 90.65 104.58 113.64 123.07 135.75]; 
 + 
 +h = [0.145 0.135 0.125 0.115 0.105 0.095 0.085 0.075 0.065 0.055 0.045  0.035 0.030 0.025 0.020]; 
 + 
 +**Porównanie wyników symulacji z danymi pomiarowymi**. 
 +   - wykres danych, 
 +   - sprawdzenie spełnienia założonych wymagań, 
 +   - potencjalne źródła rozbieżności: 
 +      - "driver" symulacji - jak zweryfikować
 +      - model (parametry lub struktura) - analiza założeń upraszczających.    
 + 
 +**Ilościowa ocena błędu symulacji** 
 +Rozwiązanie analityczne dla ''h(0)=h0'':  
 + 
 +    - ''h(t) = (sqrt(h0) - k*t/2)^2'' albo: 
 +    - ''t(h) = 2*(sqrt(h0) - sqrt(h))/k''. 
 + 
 +Tę relację zapisujemy w pliku typu ''function'' (skorzystamy na następnym laboratorium).   
 + 
 +**Plan następnego ćwiczenia** 
 +   - Kalibracja modelu - znajdowanie optymalnych wartości parametrów modelu. 
 +   - Aproksymacja danych pomiarowych w przypadku braku opisu teoretycznego. 
 +====== Lab. 7 (2017) ====== 
 + 
 + 
 + 
 + Kartkówka - (z zagadnień wymienionych w przesłanych materiałach - 18.12.2017):
     * aproksymacja danych pomiarowych - aproksymacja a interpolacja, miary błędu aproksymacji, kiedy zagadnienie aproksymacji sprowadza się do zagadnienia liniowego,      * aproksymacja danych pomiarowych - aproksymacja a interpolacja, miary błędu aproksymacji, kiedy zagadnienie aproksymacji sprowadza się do zagadnienia liniowego, 
     * numeryczne metody znajdowania minimum funkcji - przykłady metod bezgradientowych oraz gradientowych 1, i 2, rzędu, różnice między metodą Newtona a metodami quasi-newtonowskimi, ogólny schemat metod: minimalizacji wzdłuż współrzędnych (coordinate descent method), najszybszego spadku, Newtona i metody "trust region".     * numeryczne metody znajdowania minimum funkcji - przykłady metod bezgradientowych oraz gradientowych 1, i 2, rzędu, różnice między metodą Newtona a metodami quasi-newtonowskimi, ogólny schemat metod: minimalizacji wzdłuż współrzędnych (coordinate descent method), najszybszego spadku, Newtona i metody "trust region".
-  - Aproksymacja danych pomiarowych  
-    * Metody optymalizacji w aproksymacji. 
-    * Aproksymacja danych pomiarowych dla wypływu wody. 
-    * Kalibracja i walidacja modelu wypływu wody ze zbiornika. 
-    * Aproksymacja przebiegu czasowego stanu wody w rzece. 
-    * Kryterium doboru parametrów funkcji aproksymującej na przykładzie aproksymacji funkcji jednej zmiennej. 
-    * Zależność od dwóch zmiennych, 
-      - regularna i nieregularna siatka danych, 
-      - wybór funkcji bazowych - wielomiany, funkcje radialne, 
-      - aproksymacja nieparametryczna - algorytm LOWESS (locally weighted scatterplot smoothing). 
  
 + **Kalibracja modelu teoretycznego na przykładzie wypływu wody ze zbiornika**.
 +    - Wybór funkcji aproksymującej: 
 +      * ''h(t) = (sqrt(h0) - k*t/2)^2'' 
 +      * ''t(h) = 2*(sqrt(h0) - sqrt(h))/k'' 
 +    - Sprowadzenie problemu do zagadnienia liniowego.
 +    - Obliczenie wartości przebiegu symulowanego w punktach pomiaru.
 +    - Funkcja błędu.
 +    - Obliczenie optymalnych wartości parametrów modelu.
 +    - Walidacja modelu.
  
-====== Lab. 8 ======+     % Kalibracja modelu wypływu wody 
 +     format long e,  format compact 
 +     % Dane pomiarowe: 
 +     t [0 7.05 14.24 21.95 30.00 38.32 47.08 56.46 66.89 78.72 90.65 104.58 113.64 123.07 135.75]; 
 +     h [0.145 0.135 0.125 0.115 0.105 0.095 0.085 0.075 0.065 0.055 0.045 0.035 0.030 0.025 0.020]-0.015; 
 +     h0 0.13;  % początkowy poziom lustra wody. 
 +     % Wybór danych do kalibracji (ponad stożkiem): 
 +     ti t(1:10);  hi h(1:10); 
 +     % Obliczania optymalnego parametru a(=1/k): 
 +     ds sqrt(h0)-sqrt(hi); 
 +     a 0.5*ds*ti'/(ds*ds');  % uwaga: w*w' to iloczyn skalarny 
 +     k 1/a 
 +     % Wykres pomiarów ('o') i symulacji ('-') 
 +     ts 0:0.1:140; hs (sqrt(h0)-k*ts/2).^2; 
 +     plot(t,h,'o',ts,hs), legend('pomiary','symulacja');
  
-Temat: Aproksymacja dyskretna +**Budowa modelu na podstawie danych pomiarowych - Aproksymacja dyskretna.** 
- +    * Aproksymacja przebiegu czasowego stanu wody w rzece. 
- 1. Aproksymacja przepływu fali wezbraniowej w rzece. +    * Dane: 69 pomiarów na posterunku w Stróży przepływu wody w Rabie od 17.11.2015 g. 10.00  do 20.11 g. 6.00: 
-     +
- * 69 pomiarów na posterunku w Stróży przepływu wody w Rabie od 17.11.2015 g. 10.00  do 20.11 g. 6.00: +
  
     q = [2.40  2.56   2.56  2.56  2.72  2.88  3.20  4.04  5.56  6.20  9.30 14.70 ...     q = [2.40  2.56   2.56  2.56  2.72  2.88  3.20  4.04  5.56  6.20  9.30 14.70 ...
Linia 196: Linia 210:
   % to plot the FittedCurve at the end.   % to plot the FittedCurve at the end.
   %   %
-  function [sse, FittedCurve] = expfun(params) +    function [sse, FittedCurve] = expfun(params) 
-    A1 = params(1); +      A1 = params(1); 
-    lambda1 = params(2); +      lambda1 = params(2); 
-    FittedCurve = A1 .* exp(-lambda1 * xdata); +      FittedCurve = A1 .* exp(-lambda1 * xdata); 
-    ErrorVector = FittedCurve - ydata; +      ErrorVector = FittedCurve - ydata; 
-  end+      sse = sum(ErrorVector .^ 2); 
 +    end
   end   end
  
  * Wywołanie funkcji aproksymującej:  * Wywołanie funkcji aproksymującej:
- +   
-  [estimates, model= fitcurveQ0(t,q);+  % Dane pomiarowe: 
 +  q = [2.40  2.56   2.56  2.56  2.72  2.88  3.20  4.04  5.56  6.20  9.30 14.70 ... 
 +      18.20 21.80  27.80 30.20 31.40 30.20 29.00 27.80 25.40 24.20 23.00 21.80 ... 
 +      21.80 20.60  19.40 19.40 18.20 17.00 17.00 15.90 14.70 14.70 13.50 13.50 ... 
 +      12.30 12.30  11.10 11.10 10.50 10.50 10.50  9.90  9.90  9.90  9.30  9.30 ... 
 +       9.30  8.70   8.70  8.70  8.70  8.70  8.10  8.10  8.10  8.10  7.34  6.96 ... 
 +       6.96  6.96   6.96  6.96  6.58  7.34  6.96  6.96  6.96]
 +  = 1:52;  q=q(18:end);
   %   %
-  plot(t, q, '*');  hold on +  [estimates, model] = fitcurveQ0(t,q);  % aproksymacja nieliniowa 
-  [sse, FittedCurve] = model(estimates); +  [sse, FittedCurve] = model(estimates); % wykres znalezionej aproksymacji  
-  plot(xdata, FittedCurve, 'r')+  plot(t, q, '*',t, FittedCurve, 'ro')
   %    % 
-  xlabel('t') +  xlabel('t')ylabel('q')title(['Fitting to function ', func2str(model)]);
-  ylabel('q') +
-  title(['Fitting to function ', func2str(model)]);+
   legend('data', ['fit using ', func2str(model)])   legend('data', ['fit using ', func2str(model)])
-  hold off 
      
  * Aproksymacja funkcją z większą liczbą parametrów  * Aproksymacja funkcją z większą liczbą parametrów
  
- 2. Aproksymacja wielomianowa - obliczanie współczynników wielomianu za pomocą macierzy Vandermonde'a: + 2. **Aproksymacja wielomianowa - obliczanie współczynników wielomianu za pomocą macierzy Vandermonde'a**
  
   format compact   format compact
Linia 239: Linia 258:
   hold off    hold off 
  
- 3. Aproksymacja wielomianowa - kryterium wyboru stopnia wielomianu:+ 3. **Aproksymacja wielomianowa - kryterium wyboru stopnia wielomianu**:
      
-  clear, close all+  clear, close all, format short, format compact
   t = 0:0.001:1;  y = sin(2*pi*t); % zależność aproksymowana   t = 0:0.001:1;  y = sin(2*pi*t); % zależność aproksymowana
   tz = 0:0.05:1;      tz = 0:0.05:1;   
   yz = sin(2*pi*tz) + (rand(1,21)-0.5);  % wyniki pomiarów   yz = sin(2*pi*tz) + (rand(1,21)-0.5);  % wyniki pomiarów
   %   %
-  tp = tz(1:2:end);      yp = yz(1:2:end);  % zbiór ćwiczebny+  tp = tz(1:2:end);      yp = yz(1:2:end);  % zbiór treningowy
   t_test = tz(2:2:end);  y_test = yz(2:2:end);  % zbiór testowy   t_test = tz(2:2:end);  y_test = yz(2:2:end);  % zbiór testowy
   %   %
   figure(1), plot(t,y,'r',tp,yp,'o',t_test,y_test,'x'), hold on,   figure(1), plot(t,y,'r',tp,yp,'o',t_test,y_test,'x'), hold on,
   %   %
-  err = zeros(1,10); err_t = zeros(1,10); % tablice błędów+  err_trening = zeros(1,10); err_test = zeros(1,10); % tablice błędów
   for n = 1:10   for n = 1:10
     p = polyfit(tp,yp,n);      % p - współczynniki wielomianu     p = polyfit(tp,yp,n);      % p - współczynniki wielomianu
     ypa = polyval(p,tp);       % wartości funkcji aproksymującej     ypa = polyval(p,tp);       % wartości funkcji aproksymującej
-    dy = ypa-yp; err(n) = sqrt((dy*dy')/11),  % błąd w punktach ćwiczebnych+    dy = ypa-yp; err_trening(n) = sqrt((dy*dy')/11),  % błąd w punktach treningowych
     %       %  
     y_test_a = polyval(p,t_test); % wartości f.aproks. w punktach testowych     y_test_a = polyval(p,t_test); % wartości f.aproks. w punktach testowych
     dy_test = y_test_a-y_test;      dy_test = y_test_a-y_test; 
-    err_t(n) = sqrt((dy_test*dy_test')/10), % błąd w punktach testowych+    err_test(n) = sqrt((dy_test*dy_test')/10), % błąd w punktach testowych
     %       %  
     plot(t,polyval(p,t)), pause,     plot(t,polyval(p,t)), pause,
Linia 265: Linia 284:
   hold off   hold off
   %   %
-  figure(2), plot(1:10,err,'ro-',1:10,err_t,'bx-');+  figure(2), plot(1:10,err_trening,'ro-',1:10,err_test,'bx-');
   xlabel('stopien wielomianu')   xlabel('stopien wielomianu')
-  legend('blad w p. cwiczebnych','blad w p. testowych')+  legend('blad w p. treningowych','blad w p. testowych') 
 + 
 + 
 +====== Terminy zaliczeń (2017/18) ======
  
 +  Drugi termin: 31 stycznia 2018.
 +  Trzeci termin: 7 lutego 2018.
 +  (Godziny - do ustalenia)
      
aniss2016_17.1512988803.txt.gz · ostatnio zmienione: 2017/12/11 11:40 przez miller