% Integrate the general problem du/dt = Au forward in time % using a trapezoidal integration given: % % dt: timestep % Tf: final time % uinit: initial vector % % The numerical approximation is placed in the vector v % % Set initial condition into v v(:,1) = uinit; n = 1; t(1) = 0; % Calculate inverse of I - dt*A matrix Ginv = inv(eye(size(A)) - 0.5*A*dt); % Integrate using trapezoil while (t(n) < Tf), v(:,n+1) = Ginv*(v(:,n) + 0.5*dt*A*v(:,n)); t(n+1) = t(n) + dt; n = n + 1; end