Solve ill-conditioned linear systems
Ältere Kommentare anzeigen
Consider the following linear system of equations :
When solving this system using MATLAB, I found that the condition number of matrix
is extremely large, indicating that the system is ill-conditioned. Some characteristics of the system are as follows:
- Condition number of A: 2.715e+06
- Determinant of A: 0.5196
I have attempted several methods, including least squares, normalization, and regularization, but none have produced satisfactory results in terms of accuracy. The matrix A and b is currently stored as double type, and I have also tried using 'vpa' to control the number of significant digits, but it was in vain. Are there any effective methods to solve this system, or is it possible to identify and eliminate highly correlated row vectors to ensure the accuracy of the remaining solutions?
Matlab data ‘.mat’:
%% Load data
load("cal_linear_equations.mat");
%% Evaluate and calculate
DET_A=det(A_coeff);
Cond_A=cond(A_coeff);
Sol_real=A_coeff\b_coeff;
Error=A_coeff*Sol_real-b_coeff;
max(abs(Error));
Akzeptierte Antwort
Weitere Antworten (2)
Ill-conditioning is a property of the problem, not the method of solution. You cannot overcome it with any particular choice of algorithm. You need to add more equations to your linear system to make it less ill-conditioned.
1 Kommentar
Shengfan Bi
am 4 Jun. 2024
Catalytic
am 4 Jun. 2024
If b has no noise in it, you could try normalizing the rows of A
a=vecnorm(A,2,2);
A=A./a;b=b./a;
x=A\b;
1 Kommentar
Shengfan Bi
am 5 Jun. 2024
Kategorien
Mehr zu Linear Algebra finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!