def Q_srk(self, k):
ind = self.index[self.Q_time_var_index, k]<EOL>Q = self.Q[:, :, ind]<EOL>if (Q.shape[<NUM_LIT:0>] == <NUM_LIT:1>):  <EOL><INDENT>square_root = np.sqrt(Q)<EOL><DEDENT>else:<EOL><INDENT>if self.svd_each_time:<EOL><INDENT>(U, S, Vh) = sp.linalg.svd(Q, full_matrices=False,<EOL>compute_uv=True,<EOL>overwrite_a=False,<EOL>check_finite=True)<EOL>square_root = U * np.sqrt(S)<EOL><DEDENT>else:<EOL><INDENT>if ind in self.Q_square_root:<EOL><INDENT>square_root = self.Q_square_root[ind]<EOL><DEDENT>else:<EOL><INDENT>(U, S, Vh) = sp.linalg.svd(Q, full_matrices=False,<EOL>compute_uv=True,<EOL>overwrite_a=False,<EOL>check_finite=True)<EOL>square_root = U * np.sqrt(S)<EOL>self.Q_square_root[ind] = square_root<EOL><DEDENT><DEDENT><DEDENT>return square_root<EOL>
function (k). Returns the square root of noise matrix of dynamic model
              on iteration k.
    k (iteration number). starts at 0

This function is implemented to use SVD prediction step.