I am reading an iteration method for computing the Moore- Penrose genralized inverse
of a given matrix $A$, which is given as follows:
$X_{k+1} = (1+\beta)X_{k} – \beta X_{k} A X_{k}$
where $X_{k}$, k = 0,1,… is a sequence of approximations for computing Moore- Penrose genralized inverse
$ X_{0} = \beta A' $ is the initial approximation , $0<\beta\leq 1$ and $A'$ is the transpose of matrix $A$
$d_{k} = \|X_{k+1} – X_{k}\|_{fro}$ is the error matrix norm (frobenius norm)
I have made following matlab program for computing Moore- Penrose genralized inverse by above mentioned method. But i am unable to make code for stopping criterion which says that.
perform the iteration untill
$|d_{k+1}/d_{k} – \beta -1|> 10^{-4}$
Please help me with this. I would be very much thankful to you.
Best Answer
The prep before your loop should stay the same. The appropriate script is
I am wondering why you are using this convergence test at all. I would recommend using
which measures how close
X1
is to the left inverse of $A$. Your termination criteria would then beAs you currently have, you are measuring how much
X1
changes fromX0
, which may be small, but still not an approximate inverse (or pseudoinverse) for $A$.