stvoffutt
- 15
- 0
Homework Statement
Solve the following system for 0<t<5
u^\prime = u-e^{-2t} v, u(0) = 1
v^\prime = u+3v, v(0) = -2
using Forward Euler method and implement the numerical scheme into a MATLAB code.
Homework Equations
Forward Euler : \vec x^(\prime)_{n+1} = \vec F(t,\vec x)
\frac{\vec x_{n+1} - \vec x_n}{k} = \vec F(t,\vec x)
\vec x_{n+1} = \vec x_n + k\vec F(t,\vec x)
The Attempt at a Solution
This seems simple enough but I am having trouble within MATLAB code. First,
\vec F(t,\vec x) = <br /> \left(\begin{array}{cc}<br /> u-e^{-2t} v\\ <br /> u+3v <br /> \end{array} <br /> \right)<br />
So, I implemented this into Matlab and got that both u(t) and v(t) diverge to +inf and -inf respectively. Below is my Matlab code.
Code:
function result = hw_2_2(a,b,k)
T = b-a;
N = T/k;
t = [a:k:T];
y_forward = zeros(2,N+1);
y_forward(:,1) = [1;-2];
% y_backward(:,1) = [1;-2];
for n = 1:N
y_forward(:,n+1) = fun_FE(y_forward(:,n),t(n),k);
% y_backward(:,n+1) = fun_BE(y_backward(:,n),t(n+1),k);
end
u = y_forward(1,:);
v = y_forward(2,:);
figure;
plot(t,u,'-r')
title('forward euler')
figure';
plot(t,v,'-b')
% hold off;
% hold on;
% title('backward euler')
% w= y_backward(1,:)
% z = y_backward(2,:)
% plot(t,w,'-r')
% plot(t,z,'-b')
function solFE = fun_FE(u0,t,k)
A = [1 -exp(-2*t);1 3];
solFE = u0 + k*A*u0;
function solBE = fun_BE(u0,t,k)
solBE = inv(1-k*[1,-exp(-2*t);1,3])*u0;
Eventually I will need to use this code to do the same thing for Backward Euler but I wanted to make sure that this code was OK for Forward Euler method first before I proceeded. The function call that I used is
Code:
hw_2_2(0,5,0.005)