Fortran Code for Solving Linear System w/ Least Square Method

Join the discussion
Ask a follow-up here, or get your own question answered by working scientists, mathematicians and engineers — people, not an autocomplete.
Real named experts · corrections over time · the nuance an AI answer skips
1 reply · 3K views
passionfly
Messages
1
Reaction score
0
Dear all:

For a standard linear system, y(n*1)=A(n*n)x(n*1)

If y is exact and A is well-conditioned, it is easy to calculate x.

However, if y has some disturbances or some errors, at the same time, A matrix is ill-conditioned. It is difficult to accurately obtain vector x. Alternatively, we can measure more components of y (becomes m*1, where m>n) and use the least square method to calculate the approximate x vector.

It is a common problem so I guess there should be some ready-to-use Fortran codes. Anybody knows where can I find this algorithms or codes? Any advice or suggestion is welcomed!

Thank you very much and with best wishes,
Thomas
 
Physics news on Phys.org


LAPACK is the standard Fortran package to do this. The subroutines you will want end in GELS or GELSS (SGELS is single precision real; DGELS is double precision real, CGELS is single complex, ZGELS is double complex) . LAPACK is free - google will find the package and all the documentation you should need.

_GELS uses QR factorization, I believe. _GELSS uses SVD.

Good luck.

jason