MATLAB Answers

Error Reduction using a Preconditioner for Linear System Ax =b

3 views (last 30 days)
hamzah khan
hamzah khan on 26 Aug 2020
Edited: Rishabh Mishra on 2 Sep 2020
Hello,
I am trying to solve the Ax =b for a non linear system, my A matrix is 10x4 complex double and b matrix is 10x1 double
A matrix :
b matrix :
I already have the original values of x and they are
x_original = [800000000;200000000;10000;10000]; % coefficients to find
I need to solve the system such that the values of x I find are close to x_original. The system is badly scaled and I need to use a pre conditioner.
Does anyone knows how to make a good pre conditioner ? or how to solve this problem.
I have done this till far
Pre_Conditioner = [1;1;1;1;1;1;1;1;1;1].^(-1);
A = bsxfun(@times,A,Pre_Conditioner);
b = Pre_Conditioner.*b;
% Solve the equation Ax = b using Least Squares Method
% Numerical Method
x_2 = inv(A.'*A)*A.'*b; % Least Square Estimation
x_2 = abs(x_2);
x_original = [800000000;200000000;10000;10000]; % coefficients to find
% Error calculation
for i =1:1:size(x_original,1)
error_percent(i,1) = (abs((x_original(i)-x_2(i)))/x_original(i))*100
end
Does anybody know...?

  0 Comments

Sign in to comment.

Answers (1)

Rishabh Mishra
Rishabh Mishra on 2 Sep 2020
Edited: Rishabh Mishra on 2 Sep 2020
Hi,
I would suggest you use following preconditioner column vectors
Pre_Conditioner = [1e-9;1e-9;1e-9;1e-9;1e-9;1e-9;1e-9;1e-9;1e-9;1e-9].^(-1);
To simply put, the above statement can be simplified as:
Pre_Conditioner = 1e9
Additionally, I would advise you to use any 4 rows (as number of unknown variables = 4) from the ‘A’ matrix to evaluate the solution of the system of linear equations.

  0 Comments

Sign in to comment.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!