1. The problem statement, all variables and given/known data 2. Relevant equations Pk = A*Xk - F τk = ((A*Xk - F)*(A*Xk - F))/(A*(A*Xk - F))*(A*Xk - F) Xk+1 = Xk - τk * (A*Xk - F) 3. The attempt at a solution We are given a system of equations: AX=F, where A3x3= (2 1 0.95; 1 2 1; 0.95 1 2) and F= (3.95;4;3.95)τ (The solution is (1;1;1)τ) We choose the first X freely: X0 = (0;0;0)τ Therefore: (1) AX0-F = -F = (-3.95;-4;-3.95)τ (2) (A*X0 - F)*(A*X0 - F) = 47.205 (3) A*(A*X0 - F) = (-15.6525;-15.9;-15.6525)τ (4) (A*(A*Xk - F))*(A*Xk - F) = 187.25475 So τ0 = 0.252090 Therefore our new approximate X is: (5) X1 = X0 - τ0 * (A*Xk - F) = (0;0;0)τ - 0.252090 * (-3.95;-4;-3.95)τ ≈ (0.995754;1.008359;0.995754)τ We repeat this process with the new approximation of X, until we reach the desired accuracy. This is the method of steepest descent without preconditioning. Can anyone show me how each step of this algorithm changes with preconditioning applied? Suppose we use a preconditioner matrix B which is equal to the inverse of A (or any matrix that you think would be the best). I'd highly appreciate any help. I've made a program to calculate solutions of a system of equations using SDM already, and it works fine, I just don't understand how to apply preconditioning. Hopefully the equations I've written are readable, apologies.