Download as pdf or txt
Download as pdf or txt
You are on page 1of 23

EXERCISE #5.

1
Question#2
PART(A)

% RK4 Method

% to approximate the solution of initial value problem y'= f(t,y) with y(a)=y0, over
[a,b]
clear all, close all, clc

f=@(t,y) exp(1).^(t-y); %% define the function

a=0; b=1; %% define the domain

h=0.8; %% step size

n=(b-a)/h; %%5 number of grid points

t=a:h:b; % % grid points in [a,b]


w(1)=0.5;
for j=1:n
k1=h*feval(f,t(j),w(j));
k2=h*feval(f,t(j)+h/2,w(j)+k1/2);
k3=h*feval(f,t(j)+h/2,w(j)+k2/2);
k4=h*feval(f,t(j)+h,w(j)+k3);
w(j+1)=w(j)+(1/6)*(k1+2*k2+2*k3+k4); end
y=@(t) (t+1).^2-0.5*exp(t); %% define exact solution if given

y=y(t); %% compute the exact soltion over the grid points t_i in [a,b]
fprintf(' ti, wi, yi, actual-error ')
E=[t; w; y; abs(y-w)]'

plot(t,y,'--',t,w,'-o') grid on
legend('Exact solution','Numerical solution','Location','NorthEastOutside');

Answer:
ti, wi, yi, actual-error

E=

0 0.5000 0.5000 0

0.8000 1.0562 2.1272 1.0710


Part: B
% RK4 method

% to approximate the solution of initial value problem y'= f(t,y) with y(a)=y0, over [a,b]
clear all, close all, clc
f=@(t,y) (sin(2*t)-(2*t*y))*(t.^-2) %% define the function
a=1; b=2; %% define the domain
h=0.8; %% step size
n=(b-a)/h; %% number of grid points
t=a:h:b; %% grid points in [a,b]
w(1)=0.5;
for j=1:n
k1=h*feval(f,t(j),w(j));
k2=h*feval(f,t(j)+h/2,w(j)+k1/2);
k3=h*feval(f,t(j)+h/2,w(j)+k2/2);
k4=h*feval(f,t(j)+h,w(j)+k3);
w(j+1)=w(j)+(1/6)*(k1+2*k2+2*k3+k4); end
y=@(t) (t+1).^2-0.5*exp(t); %% define exact solution if given y=y(t); %% compute the exact soltion
over the grid points t_i in [a,b]
fprintf(' ti, wi, yi, actual-error ')
E=[t; w; y; abs(y-w)]'

plot(t,y,'--',t,w,'-o') grid on
legend('Exact solution','Numerical solution','Location','NorthEastOutside');

Answer:
f=

@(t,y)(sin(2*t)-(2*t*y))*(t.^-2)
ti, wi, yi, actual-error

E=

1.0000 0.5000 2.6409 2.1409

1.8000 0.2257 4.8152 4.5895

Part: C
% RK4 method

% to approximate the solution of initial value problem y'= f(t,y) with y(a)=y0, over
[a,b]

clear all, close all, clc

f=@(t,y) -y+t*y.^0.5; %% define the function

a=2; b=3; %% define the domain

h=0.8; %% step size

n=(b-a)/h; %% number of grid points

t=a:h:b; %% grid points in [a,b]


w(1)=0.5;
for j=1:n
k1=h*feval(f,t(j),w(j));
k2=h*feval(f,t(j)+h/2,w(j)+k1/2);
k3=h*feval(f,t(j)+h/2,w(j)+k2/2);
k4=h*feval(f,t(j)+h,w(j)+k3);
w(j+1)=w(j)+(1/6)*(k1+2*k2+2*k3+k4); end
y=@(t) (t+1).^2-0.5*exp(t); %% define exact solution if given

y=y(t); %% compute the exact soltion over the grid points t_i in [a,b]
fprintf(' ti, wi, yi, actual-error ')
E=[t; w; y; abs(y-w)]'

plot(t,y,'--',t,w,'-o') grid on
legend('Exact solution','Numerical solution','Location','NorthEastOutside');

Answer
ti, wi, yi, actual-error

E=

2.0000 0.5000 5.3055 4.8055

2.8000 1.6214 6.2177 4.5962

Part: D
% RK4 method

% to approximate the solution of initial value problem y'= f(t,y) with y(a)=y0, over
[a,b]
clear all, close all, clc

f=@(t,y) ((t*y)+y)/((t*y)+y); %% define the function

a=2; b=4; %% define the domain


h=0.8; %% step size

n=(b-a)/h; %% number of grid points

t=a:h:b; %% grid points in [a,b]


w(1)=0.5;
for j=1:n
k1=h*feval(f,t(j),w(j));
k2=h*feval(f,t(j)+h/2,w(j)+k1/2);
k3=h*feval(f,t(j)+h/2,w(j)+k2/2);
k4=h*feval(f,t(j)+h,w(j)+k3);
w(j+1)=w(j)+(1/6)*(k1+2*k2+2*k3+k4); end
y=@(t) (t+1).^2-0.5*exp(t); %% define exact solution if given

y=y(t); %% compute the exact soltion over the grid points t_i in [a,b]
fprintf(' ti, wi, yi, actual-error ')
E=[t; w; y; abs(y-w)]'

plot(t,y,'--',t,w,'-o')
grid on
legend('Exact solution','Numerical solution','Location','NorthEastOutside');

Answer:
ti, wi, yi, actual-error

E=

2.0000 0.5000 5.3055 4.8055

2.8000 1.3000 6.2177 4.9177

3.6000 2.1000 2.8609 0.7609


EXERCISE#5.2
Question#3
Part : A format
long

% Taylor's method of order 2 for initial value problems % solve y'=f(t.y), 0n [0,2] with y(0)=0.5;
clear all, close all, clc, format short
f=@(t,y) (0.2*t*exp(1).^(3*t))-(0.04*exp(1).^(3*t))+(0.04*exp(1).^(-2*t)); %% define f(t,y)

d1f= @(t,y) t*exp(1).^(3*t)-(2*y) ; %% define the derivative if f(t,y) a=0;


b=1; %% define the domain
h=0.5; %% define the step size
n=(b-a)/h; %% define the number of points
t=a:h:b; %% define the grid points
w(1)=0.5; %% define the initial conditions
for j=1:n
w(j+1)=w(j)+h*feval(f,t(j),w(j))+(h.^2/factorial(2))*feval(d1f,t(j),w(j)) ;
end y=@(t) (t+1).^2-0.5*exp(t); %% define exact solution if given

y=y(t); %% compute the exact soltion over the grid points t_i in [a,b] fprintf(' ti, wi, yi, actual-error
')

E=[t; w; y; abs(y-w)]'
plot(t,y,'--',t,w,'-o')
grid on legend('Exact solution','Numerical solution','Location','NorthEastOutside');

Answer:
ti, wi, yi, actual-error

E=

0 0.5000 0.5000 0

0.8000 2.1220 2.1272 0.0053

1.6000 4.2685 4.2835 0.0150


Part: B format
long

% Taylor's method of order 2 for initial value problems % solve y'=f(t.y), 0n [0,2] with y(0)=0.5;
clear all, close all, clc, format short
f=@(t,y) t+(1/(1-t)); %% define f(t,y)
d1f= @(t,y) (1+(t-y).^2) ; %% define the derivative if f(t,y) a=1; b=2; %%
define the domain
h=0.5; %% define the step size
n=(b-a)/h; %% define the number of points
t=a:h:b; %% define the grid points
w(1)=0.5; %% define the initial conditions
for j=1:n

w(j+1)=w(j)+h*feval(f,t(j),w(j))+(h.^2/factorial(2))*feval(d1f,t(j),w(j)) ;
end
y=@(
t)
(t+1).
^2-
0.5*e
xp(t);
%%
define
exact
soluti
on if
given
y=y(t); %% compute the exact soltion over the grid points t_i in [a,b] fprintf(' ti, wi, yi, actual-error
')

E=[t; w; y; abs(y-w)]'
plot(t,y,'--',t,w,'-o')
grid on legend('Exact solution','Numerical solution','Location','NorthEastOutside');

Answer:
ti, wi, yi, actual-error
E=

1.0000 0.5000 2.6409 2.1409 1.5000 Inf 4.0092


Inf 2.0000 Inf 5.3055 Inf

Part: C format
long

% Taylor's method of order 2 for initial value problems % solve y'=f(t.y), 0n [0,2] with y(0)=0.5;
clear all, close all, clc, format short
f=@(t,y) t*log(t)+(2*t); %% define f(t,y) d1f= @(t,y) y +
t*y.^1/2 ; %% define the derivative if f(t,y) a=2;
b=3; %% define the domain
h=0.25; %% define the step size
n=(b-a)/h; %% define the number of points
t=a:h:b; %% define the grid points
w(1)=0.5; %% define the initial conditions
for j=1:n
w(j+1)=w(j)+h*feval(f,t(j),w(j))+(h.^2/factorial(2))*feval(d1f,t(j),w(j)) ;
end y=@(t) (t+1).^2-0.5*exp(t); %% define exact solution if given
y=y(t); %% compute the exact soltion over the grid points t_i in [a,b] fprintf(' ti, wi, yi, actual-error
')

E=[t; w; y; abs(y-w)]'
plot(t,y,'--',t,w,'-o')
grid on legend('Exact solution','Numerical solution','Location','NorthEastOutside');

Answer:
ti, wi, yi, actual-error

E=

2.0000 0.5000 5.3055 4.8055

2.2500 1.8778 5.8186 3.9408

2.5000 3.5837 6.1588 2.5751

2.7500 5.6583 6.2412 0.5829

3.0000 8.1488 5.9572 2.1915

EXERCISE#5.3
Question#1
Part A:
% Euler's method
% to approximate the solution of initial value problem y'= f(t,y) with y(a)=y0, over [a,b] clear all, close
all, clc f=@(t,y) t*exp(1).^(3*t)-(2*y); %% define f(t,y)
y=@(t) (t+1).^2-0.5*exp(t); %% define exact solution if given
a=0; b=1; %% define the domain of variable t
h=0.5; %% define the stepsize
n=(b-a)/h; %% define number of grid points over [a,b] t=a:h:b; %% define
the grid points in [a,b]
w(1)=0.5; %% Define the intial cobdition
for j=1:n
w(j+1)=w(j)+h*feval(f,t(j),w(j)); % Euler numerical scheme end

L=1; %% for this problem Lipschitz constantant


M=0.5*exp(2)-2; %% upper bound of double derivative of y

err_estimate=(h*M/2*L)*(exp(L*(t-a))-1);

y=y(t); %% compute the exact soltion over the grid points t_i in [a,b] fprintf(' ti, wi, yi, actual-error,
error estimate ')
E=[t; w; y; abs(y-w); err_estimate]'

plot(t,y,'--',t,w,'-o') grid on
legend('Exact solution','Numerical solution','Location','NorthEastOutside');

Answer:
ti, wi, yi, actual-error, error estimate

E=

0 0.5000 0.5000 0 0

0.5000 0 1.4256 1.4256 0.2748

1.0000 1.1204 2.6409 1.5204 0.7279


Part B:
% Euler's method
% to approximate the solution of initial value problem y'= f(t,y) with y(a)=y0, over [a,b] clear all, close
all, clc f=@(t,y) 1+(t-y)^2; %% define f(t,y)
y=@(t) (t+1).^2-0.5*exp(t); %% define exact solution if given
a=2; b=3; %% define the domain of variable t

h=0.5; %% define the stepsize


n=(b-a)/h; %% define number of grid points over [a,b] t=a:h:b; %% define
the grid points in [a,b]
w(1)=0.5; %% Define the intial cobdition
for j=1:n
w(j+1)=w(j)+h*feval(f,t(j),w(j)); % Euler numerical scheme end

L=1; %% for this problem Lipschitz constantant


M=0.5*exp(2)-2; %% upper bound of double derivative of y

err_estimate=(h*M/2*L)*(exp(L*(t-a))-1);

y=y(t); %% compute the exact soltion over the grid points t_i in [a,b] fprintf(' ti, wi, yi, actual-error,
error estimate ')
E=[t; w; y; abs(y-w); err_estimate]'

plot(t,y,'--',t,w,'-o') grid on
legend('Exact solution','Numerical solution','Location','NorthEastOutside');

Answer:
ti, wi, yi, actual-error, error estimate

E=

2.0000 0.5000 5.3055 4.8055 0

2.5000 2.1250 6.1588 4.0338 0.2748

3.0000 2.6953 5.9572 3.2619 0.7279


Part C:
% Euler's method
% to approximate the solution of initial value problem y'= f(t,y) with y(a)=y0, over [a,b] clear all, close
all, clc f=@(t,y) 1+(y/t); %% define f(t,y)
y=@(t) (t+1).^2-0.5*exp(t); %% define exact solution if given
a=1; b=2; %% define the domain of variable t
h=0.25; %% define the stepsize
n=(b-a)/h; %% define number of grid points over [a,b] t=a:h:b; %% define
the grid points in [a,b]
w(1)=0.5; %% Define the intial cobdition
for j=1:n
w(j+1)=w(j)+h*feval(f,t(j),w(j)); % Euler numerical scheme end

L=1; %% for this problem Lipschitz constantant


M=0.5*exp(2)-2; %% upper bound of double derivative of y

err_estimate=(h*M/2*L)*(exp(L*(t-a))-1);

y=y(t); %% compute the exact soltion over the grid points t_i in [a,b] fprintf(' ti, wi, yi, actual-error,
error estimate ')
E=[t; w; y; abs(y-w); err_estimate]'

plot(t,y,'--',t,w,'-o') grid on
legend('Exact solution','Numerical solution','Location','NorthEastOutside');

Answer:
ti, wi, yi, actual-error, error estimate

E=
1.0000 0.5000 2.6409 2.1409 0

1.2500 0.8750 3.3173 2.4423 0.0602

1.5000 1.3000 4.0092 2.7092 0.1374

1.7500 1.7667 4.6852 2.9185 0.2366

2.0000 2.2690 5.3055 3.0364 0.3640

Part D:
% Euler's method
% to approximate the solution of initial value problem y'= f(t,y) with y(a)=y0, over [a,b] clear all, close
all, clc f=@(t,y) cos(2*t)+sin(3*t); %% define f(t,y)
y=@(t) (t+1).^2-0.5*exp(t); %% define exact solution if given

a=0; b=1; %% define the domain of variable t h=0.25; %% define the


stepsize
n=(b-a)/h; %% define number of grid points over [a,b] t=a:h:b; %% define
the grid points in [a,b]
w(1)=0.5; %% Define the intial cobdition
for j=1:n
w(j+1)=w(j)+h*feval(f,t(j),w(j)); % Euler numerical scheme end

L=1; %% for this problem Lipschitz constantant


M=0.5*exp(2)-2; %% upper bound of double derivative of y

err_estimate=(h*M/2*L)*(exp(L*(t-a))-1);
y=y(t); %% compute the exact soltion over the grid points t_i in [a,b] fprintf(' ti, wi, yi, actual-error,
error estimate ')
E=[t; w; y; abs(y-w); err_estimate]'

plot(t,y,'--',t,w,'-o') grid on
legend('Exact solution','Numerical solution','Location','NorthEastOutside');

Answer:
ti, wi, yi, actual-error, error estimate

E=

0 0.5000 0.5000 0 0

0.2500 0.7500 0.9205 0.1705 0.0602

0.5000 1.1398 1.4256 0.2858 0.1374

0.7500 1.5243 2.0040 0.4797 0.2366

1.0000 1.7365 2.6409 0.9044 0.3640

EXERCISE#5.4
Question#1
(By RK2 Method)
Part A:
% Runge-Kutta's method of order 2
% to approximate the solution of initial value problem y'= f(t,y) with y(a)=y0, over [a,b]

clear all, close all, clc f=@(t,y) (0.2*t*exp(1).^(3*t))-(0.04*exp(1).^(3*t))+(0.04*exp(1).^(-2*t)); %%


define function f(t,y)
a=0; b=1; %% define the domain
h=0.5; %% define step-size
n=(b-a)/h; %% define number of points
t=a:h:b;
w(1)=0.5;
for j=1:n
k=h*feval(f,t(j),w(j));
w(j+1)=w(j)+ h* feval(f,t(j)+h/2,w(j)+k/2); end
y=@(t) (t+1).^2-0.5*exp(t); %% define exact solution if given y=y(t); %% compute the exact soltion
over the grid points t_i in [a,b]
fprintf(' ti, wi, yi, actual-error ') E=[t; w; y; abs(y-w)]'

plot(t,y,'--',t,w,'-o') grid on
legend('Exact solution','Numerical solution','Location','NorthEastOutside');

Answer:
ti, wi, yi, actual-error

E=

0 0.5000 0.5000 0

0.5000 0.5227 1.4256 0.9029

1.0000 1.0490 2.6409 1.5919

Part B;
% Runge-Kutta's method of order 2
% to approximate the solution of initial value problem y'= f(t,y) with y(a)=y0, over [a,b]

clear all, close all, clc f=@(t,y) t+(1/(1-t)); %% define function f(t,y)
a=1; b=2; %% define the domain
h=0.5; %% define step-size
n=(b-a)/h; %% define number of points t=a:h:b;
w(1)=0.5;
for j=1:n
k=h*feval(f,t(j),w(j));
w(j+1)=w(j)+ h* feval(f,t(j)+h/2,w(j)+k/2); end
y=@(t) (t+1).^2-0.5*exp(t); %% define exact solution if given y=y(t); %% compute the exact soltion
over the grid points t_i in [a,b]
fprintf(' ti, wi, yi, actual-error ')

E=[t; w; y; abs(y-w)]'

plot(t,y,'--',t,w,'-o') grid on
legend('Exact solution','Numerical solution','Location','NorthEastOutside');

Answer:
ti, wi, yi, actual-error

E=

1.0000 0.5000 2.6409 2.1409

1.5000 -0.8750 4.0092 4.8842

2.0000 -0.6667 5.3055 5.9721

Part C:
% Runge-Kutta's method of order 2
% to approximate the solution of initial value problem y'= f(t,y) with y(a)=y0, over [a,b]

clear all, close all, clc f=@(t,y) (t*log(t)+(2*t)); %% define function f(t,y)
a=2; b=3; %% define the domain
h=0.25; %% define step-size
n=(b-a)/h; %% define number of points
t=a:h:b;
w(1)=0.5;
for j=1:n
k=h*feval(f,t(j),w(j));
w(j+1)=w(j)+ h* feval(f,t(j)+h/2,w(j)+k/2); end
y=@(t) (t+1).^2-0.5*exp(t); %% define exact solution if given y=y(t); %% compute the exact soltion
over the grid points t_i in [a,b]
fprintf(' ti, wi, yi, actual-error ')

E=[t; w; y; abs(y-w)]'

plot(t,y,'--',t,w,'-o') grid on
legend('Exact solution','Numerical solution','Location','NorthEastOutside');
Answer:

ti, wi, yi, actual-error

E=

2.0000 0.5000 5.3055 4.8055

2.2500 1.9629 5.8186 3.8557

2.5000 3.6640 6.1588 2.4947

2.7500 5.6099 6.2412 0.6313

3.0000 7.8064 5.9572 1.8492


EXERCISE#5.4
Question#1
(By RK4 Method)
Part A:
% RK4 method

% to approximate the solution of initial value problem y'= f(t,y) with y(a)=y0, over [a,b]
clear all, close all, clc
f=@(t,y) (0.2*t*exp(1).^(3*t))-(0.04*exp(1).^(3*t))+(0.04*exp(1).^(-2*t)) %% define the function
a=0; b=1; %% define the domain
h=0.5; %% step size
n=(b-a)/h; %% number of grid points
t=a:h:b; %% grid points in [a,b]
w(1)=0.5;
for j=1:n
k1=h*feval(f,t(j),w(j)); k2=h*feval(f,t(j)+h/2,w(j)+k1/2);
k3=h*feval(f,t(j)+h/2,w(j)+k2/2); k4=h*feval(f,t(j)+h,w(j)+k3);
w(j+1)=w(j)+(1/6)*(k1+2*k2+2*k3+k4); end y=@(t) (t+1).^2-0.5*exp(t); %%
define exact solution if given
y=y(t); %% compute the exact soltion over the grid points t_i in [a,b]
fprintf(' ti, wi, yi, actual-error ')
E=[t; w; y; abs(y-w)]'

plot(t,y,'--',t,w,'-o') grid on
legend('Exact solution','Numerical solution','Location','NorthEastOutside');

Answer:

f= ti, wi, yi,

actual-error

E=

0 0.5000 0.5000 0

0.5000 0.5388 1.4256 0.8869

1.0000 1.1815 2.6409 1.4593


Part B:
% RK4 method

% to approximate the solution of initial value problem y'= f(t,y) with y(a)=y0, over [a,b]
clear all, close all, clc
f=@(t,y) t+(1/(1-t)) %% define the function
a=1; b=2; %% define the domain
h=0.5; %% step size
n=(b-a)/h; %% number of grid points
t=a:h:b; %% grid points in [a,b]
w(1)=0.5;
for j=1:n
k1=h*feval(f,t(j),w(j)); k2=h*feval(f,t(j)+h/2,w(j)+k1/2); k3=h*feval(f,t(j)+h/2,w(j)+k2/2);
k4=h*feval(f,t(j)+h,w(j)+k3); w(j+1)=w(j)+(1/6)*(k1+2*k2+2*k3+k4); end y=@(t) (t+1).^2-
0.5*exp(t); %% define exact solution if given
y=y(t); %% compute the exact soltion over the grid points t_i in [a,b] fprintf(' ti, wi, yi, actual-error
')
E=[t; w; y; abs(y-w)]'

plot(t,y,'--',t,w,'-o') grid on
legend('Exact solution','Numerical solution','Location','NorthEastOutside');

Answer:

f=

@(t,y)t+(1/(1-t))
ti, wi, yi, actual-error

E=

1.0000 0.5000 2.6409 2.1409

1.5000 Inf 4.0092 Inf

2.0000 Inf 5.3055 In

Part C:
% RK4 method

% to approximate the solution of initial value problem y'= f(t,y) with y(a)=y0, over [a,b]
clear all, close all, clc
f=@(t,y) y + t*y.^1/2 %% define the function
a=2; b=3; %% define the domain
h=0.25; %% step size
n=(b-a)/h; %% number of grid points
t=a:h:b; %% grid points in [a,b]
w(1)=0.5;
for j=1:n
k1=h*feval(f,t(j),w(j));
k2=h*feval(f,t(j)+h/2,w(j)+k1/2); k3=h*feval(f,t(j)+h/2,w(j)+k2/2); k4=h*feval(f,t(j)+h,w(j)+k3);
w(j+1)=w(j)+(1/6)*(k1+2*k2+2*k3+k4); end y=@(t) (t+1).^2-0.5*exp(t); %% define exact
solution if given
y=y(t); %% compute the exact soltion over the grid points t_i in [a,b]
fprintf(' ti, wi, yi, actual-error ')
E=[t; w; y; abs(y-w)]'

plot(t,y,'--',t,w,'-o') grid on
legend('Exact solution','Numerical solution','Location','NorthEastOutside');
Answer:
f=

@(t,y)y+t*y.^1/2

ti, wi, yi, actual-error

E=

2.0000 0.5000 5.3055 4.8055

2.2500 0.8372 5.8186 4.9815

2.5000 1.4461 6.1588 4.7126

2.7500 2.5771 6.2412 3.6640

3.0000 4.7381 5.9572 1.2192

Part D:
% RK4 method

% to approximate the solution of initial value problem y'= f(t,y) with y(a)=y0, over [a,b]
clear all, close all, clc
f=@(t,y) cos(2*t) + sin (3*t) %% define the function
a=0; b=1; %% define the domain
h=0.25; %% step size
n=(b-a)/h; %% number of grid points
t=a:h:b; %% grid points in [a,b]
w(1)=0.5;
for j=1:n
k1=h*feval(f,t(j),w(j));
k2=h*feval(f,t(j)+h/2,w(j)+k1/2);
k3=h*feval(f,t(j)+h/2,w(j)+k2/2);
k4=h*feval(f,t(j)+h,w(j)+k3);
w(j+1)=w(j)+(1/6)*(k1+2*k2+2*k3+k4); end
y=@(t) (t+1).^2-0.5*exp(t); %% define exact solution if given y=y(t); %% compute the exact soltion
over the grid points t_i in [a,b]
fprintf(' ti, wi, yi, actual-error ')
E=[t; w; y; abs(y-w)]'

plot(t,y,'--',t,w,'-o') grid on
legend('Exact solution','Numerical solution','Location','NorthEastOutside');

Answer:

f=

@(t,y)cos(2*t)+sin(3*t)

ti, wi, yi, actual-error

E=

0 0.5000 0.5000 0

0.2500 0.8292 0.9205 0.0913

0.5000 1.2305 1.4256 0.1951

0.7500 1.5415 2.0040 0.4625

1.0000 1.6181 2.6409 1.0228


END
==========================================================

You might also like