I have got problem finding x with this equation $Ax = b$ where my matrix
$A=\mu.\Phi^T\Phi+\lambda.I$ where $\Phi$ is $m$ x $n$ Gaussian random matrix. $x,b$ is vector $n$ x $1$
where I already known all $\Phi, \mu, \lambda$, and they donot change. m = 102, n = 1024.
Loop 100 times
find x st. Ax = b
Change b
end
How can i make it fast? I haveben try in Matlab with [L U] = lu(A), A1 = Pinv(A), x = b\A
but they still very slow and Pinv(A) seems to be the best Is there any way to speed it up?
Since I already know about A, i simply pre-calculate $A^{-1}$, and it turns back into Matrix multiplication. That why using Pinv(A) gives me the best performance. But I'm not sure is there any faster solution.
Assuming $\mu, \lambda > 0$ you have a positive-definite matrix, and your fastest option will be to first solve for the Cholesky factors of $A$: $$A = LL^T$$ with $L$ lower-triangular. (If there is a risk that $A$ is poorly-conditioned, e.g. if $\lambda$ is very small, you should do an $LDL^T$ decomposition instead.)
You can then solve all of your linear systems $$LL^Tx_i = b_i$$ using trivial back- and forward-subsitution.
If you have very few different $b_i$, you might want to look at iterative solvers, like the method of conjugate gradients; if the number of $b_i$ is large, though, a decomposition is your best bet.