%=========================================================================
%               RESENI POCATECNI ULOHY PRO ODR 1.RADU
%=========================================================================

%=========================================================================
               J e d n o k r o k o v e     m e t o d y 
%=========================================================================

%-------------------------------------------------------------------------
% function [X,Y]=eulerova_metoda(f, y0, x0, xn, h, zobraz);
%
% Vypocte reseni obycejne diferencialni rovnice 1. radu
%                      y'=f(x,y(x))
% s pocatecni podminkou
%                       y(x0)=y0
% na intervalu  <x0,xn>.
% Pro diskretizaci pouzije krok h 
%-------------------------------------------------------------------------

[X,Y]=eulerova_metoda('x-y', 1, 0, 4, 0.2, 1);

[X,Y]=eulerova_metoda('y+exp(x)', -1, 0,3, 0.2, 1);


%-------------------------------------------------------------------------
% function [X,Y]=taylorova_metoda(f, y0, x0, xn, h, RAD, zobraz);
%
% Vypocte reseni obycejne diferencialni rovnice 1. radu
%                      y'=f(x,y(x))
% s pocatecni podminkou
%                       y(x0)=y0
% na intervalu  <x0,xn>.
% Pro diskretizaci pouzije krok h.
% Metoda ma rad = RAD  
%-------------------------------------------------------------------------

[X,Y]=taylorova_metoda('x-y', 1, 0, 4, 0.2, 4, 1);

[X,Y]=taylorova_metoda('sin(x^2*y)-y', 1, 0, 4, 0.1, 4, 1);


%-------------------------------------------------------------------------
function [X,Y]=modifikovana_eulerova_metoda(f, y0, x0, xn, h, zobraz);
%
% Vypocte reseni obycejne diferencialni rovnice 1. radu
%                      y'=f(x,y(x))
% s pocatecni podminkou
%                       y(x0)=y0
% na intervalu  <x0,xn>.
% Pro diskretizaci pouzije krok h 
%-------------------------------------------------------------------------

[X,Y]=modifikovana_eulerova_metoda('x-y', 1, 0, 4, 0.2, 1);


%-------------------------------------------------------------------------
% function [X,Y]=heunova_metoda(f, y0, x0, xn, h, zobraz);
%
% Vypocte reseni obycejne diferencialni rovnice 1. radu
%                      y'=f(x,y(x))
% s pocatecni podminkou
%                       y(x0)=y0
% na intervalu  <x0,xn>.
% Pro diskretizaci pouzije krok h 
%-------------------------------------------------------------------------

[X,Y]=heunova_metoda('x-y', 1, 0, 4, 0.2, 1);


%-------------------------------------------------------------------------
%                   Porovnani jednokrokovych metod
%-------------------------------------------------------------------------

[X,Y]=jednokrokove_metody('x-y', 1, 0, 4, 0.3);

[X,Y]=jednokrokove_metody('-y', 1, 0, 10, 0.3);

[X,Y]=jednokrokove_metody('sin(x)', 1, 0, 4*pi, 0.3);

[X,Y]=jednokrokove_metody('sin(x^2*y)-y', 1, 0, 4, 0.1);
