on
|
POLITECHNIKA WROCŁAWSKA
Wydział Elektryczny
|
Imię i nazwisko:
Łukasz Gabor
Nr indeksu 148039 |
Rok ak. 2008/2009 Rok 3 Semestr 6 /letni/
|
|
Laboratorium metod numerycznych
|
||||
Data ćwiczenia: 12.05.2009 r
|
Temat: Różniczkowanie |
Ocena:
|
1. Cel ćwiczenia
Celem ćwiczenia jest zapoznanie się z metodami różniczkowania numerycznego oraz z oceną dokładności tych metod.
Do badania zagadnienia różniczkowania numerycznego użyto funkcji w postaci:
Gdzie:
h= 0,005 s
y(0)=0;
y(1)=0;
2. Różniczkowanie
Metoda Eulera (prostokątów) jawna
Wyraża się wzorem:
Po przekształceniach nasz wzór ma postać:
Metoda Eulera (prostokątów) niejawna
Wyraża się wzorem:
Po przekształceniach nasz wzór ma postać:
Metoda trapezów
Wyraża się wzorem:
Po przekształceniach nasz wzór ma postać:
Metoda ODE45 (standardowa funkcja Matlaka)
Wywołujemy ją w głównym oknie Matlaba poleceniem:
[t,y]=ode45('funkcja_rozniczkowanie',t,0)
SIMULINK
Korzystamy z metod:
ODE1 - w tym celu w oknie symulacji wybieramy w pasku type Fixed-step
ODE23t - w tym celu w oknie symulacji wybieramy w pasku type Variable- step
Rys.1 Schemat równania różniczkowego w SIMULINKU
M-plik programu:
%różniczkowanie
clear all
close all
clc
h=0.005;
t1=0;
t2=1;
t=t1:h:t2;
%dy/dt=t^2-0.5*y
y1=0;
y2=0;
y3=0;
%metoda niejawna
for k=2:length(t)
y1(k)=(y1(k-1)+t(k)^2*h)/(1+0.5*h);
end
metoda_niejawna=y1(k)
figure
plot(t,y1,'k')
hold on
%metoda jawna
for k=2:length(t)
y2(k)=y2(k-1)+h*((t(k))^2-0.5*y2(k-1));
end
metoda_jawna=y2(k)
plot(t,y2,'r')
hold on
%metoda trapezów
for k=2:length(t)
y3(k)=(y3(k-1)*(1-0.25*h)+h*(t(k))^2)/(1+0.25*h);
end
metoda_trapezow=y3(k)
plot(t,y3,'g')
%metoda ODE45
[T,Y]=ode45('F',t,0);
ode45=Y(k)
plot(T,Y,'b')
grid on
legend('m. niejawna','m. jawna','m. trapezów','m. ode45','Ode1','Ode23t')
M-plik F:
function dy=F(t,y)
dy=(t).^2-0.5.*(y);
end
Wyniki:
metoda_niejawna = 0.29731415385153
metoda_jawna = 0.29797173396518
metoda_trapezow = 0.29764258184623
funkcja_ODE45 = 0.29550944470147
SIMULINK:
ODE1 = 0.29370599896259
ODE23t = 0.29554446636814
Rys.2 Wykresy funkcji otrzymane w wyniku operacji różniczkowania dla różnych metod
Rys.3 Wykresy funkcji otrzymane w wyniku operacji różniczkowania dla różnych metod
przedstawione w zbliżeniu
3. Wnioski
Wszystkie przedstawione metody numeryczne liczenia równań różniczkowych działają poprawnie, o czym świadczy porównanie wyników z rozwiązaniem programowym standardowej funkcji Matlaba ODE45. Błędy pojawiają się dopiero na trzecim miejscu po przecinku.
Należy zauważyć, że w metodzie niejawnej i trapezów trzeba najpierw przekształcić nasze równanie do odpowiadającej postaci. Pomimo, że przekształcenia te nie były karkołomne, to jednak jest to zdecydowanie wada tych metod.
Rozwiązanie zadania w SIMULINKU okazało się najmniej pracochłonne i czasochłonne. Podstawowa znajomość SIMULINKA pozwala rozwiązywać tego typu równania w szybki i nieskomplikowany sposób. Jak widać na rys.2 wyniki metody Ode1 i Ode23t są zbliżone (porównując z poprzednimi metodami mają najmniejsze błędy) do standardowej funkcji rozwiązywania równań różniczkowych Matlaba ode45.
Ciężko stwierdzić, która z przedstawionych metod jest dokładniejsza, jednak z rys.2 można zauważyć, że przebieg metody trapezów mieści się pomiędzy dwiema metodami jawną i niejawną. Co może świadczyć, że w wielu przypadkach może to być najdokładniejsza z metod, gdyż jej błąd będzie zawsze mieścił się w granicach błędów pozostałych metod, a więc nie będzie większy. Błędy można zminimalizować zmniejszając krok całkowania h, jednak zdecydowanie wydłuża to proces liczenia, szczególnie podczas rozwiązywania równań różniczkowych.
3
Clock
Clock1
Gain
0.5
Integrator
s
1
Product
Scope
To Workspace
z
y
y'