Przykład 4: Aproksymacja krzywej wykładniczej
Poniższa tabela zawiera dane dotyczące wahań ciśnienia w czasie, odczytane z pompy podciśnieniowej. Dopasuj krzywą P(t)-Pge^ i znajdź niewiadome stałe Po oraz T.
ti |
0 |
0.5 |
1 |
5 |
10 |
20 |
Pi |
760 |
625 |
528 |
85 |
14 |
1 0.16 i |
Obliczając logarytmy obu stron równania, otrzymujesz
ln(P)=In(P0)-t/T czyli P’=ait+a2
gdzie P’=ln(P), a2=-l/T, zaś a2= ln(P0). Mając a2 i al możesz z łatwością obliczyć PO oraz T. Poniższy skrypt wykonuje wszystkie te czynności. Rezultatami są wykresy na sali liniowej i logarytmicznej, przedstawione na rysunku 6.
%EXPFIT: przykład dopasowywania krzywej wykładniczej
%Dla poniższych danych (t,p) dopasowywana jest krzywa wykładnicza
%p=pO*exp(-t/tau).
%Problem zostaje rozwiązany poprzez obliczenie logarytmu i zastosowanie aproksymacji liniowej (wielomian pierwszego stopnia)
%dane pierwotne t=[0 0.5 1 5 10 20]
P=[760 625 528 85 14 0.16]
%Przygotowanie nowych danych do aproksymacji liniowej tbar=t; % żadne zmiany t nie są konieczne
pbar=log(P);
%Dopasuj wielomian pierwszego stopnia poprzez (tbar,pbar) a=polyfit(tbar,pbar,1); %wynikiem jest a [al aO]
%Obliczanie stałych pO oraz tau
P0=exp(a(2)); %poniewaź a(2)=a0=log(pO)
tau=-l/a(l); %ponieważ al=-l/tau
subplot(2,1,1)
%(a) Narysuj krzywą i punkty danych na skali liniowej tnew=linspace(0,20,20) %utwórz dokładniejsze t
pnew=P0*exp(-tnew/tau) %oblicz p w nowym t
plot(t,P,'o',tnew,pnew), grid on
xlabel ('Czas (s) ), ylabel ('Ciśnienie (tor) ') title('Wykres ciśnienia w pompie') subplot(2,1,2)
%(b) Narysuj krzywą i punkty danych na skali semilogarytraicznej
lpnew=exp(polyval(a,tnew));
semilogy(t,P,'o',tnew,pnew), grid
xlabel('Czas(s)'), ylabel('Ciśnienie(tor)')
title('Wykres semilogarytmiczny ciśnienia w pompie')