Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

PROPOSAL to add auto-regularizing solvers for systems of linear equations to GONUM #43578

Closed
rejones7go opened this issue Jan 8, 2021 · 4 comments

Comments

@rejones7go
Copy link

PROPOSAL

I am using go version go1.15.5 windows/amd64,
on an up-to-date version of Windows 10.
See details listing below.

I have supported a state-of-the-art C++ package for a decade that automatically
regularizes (and solves) ill-conditioned linear systems of equations.
Recently I converted this package to Python. It is under consideration currently for adding to their curated matrix library.
Now I have converted the main functions from those libraries to Go.
Please see the attached README file for some details.
Also please see my web page at http://www.rejtrix.net/ for the current versions I am offering for these three libraries.
Since you probably have not heard of this auto-regularizing package please see the links on http://www.rejtrix.net/ for some tutorial material.

LAPACK is of course the definitive package for linear equation solutions.
But it is quite old, and was defined before usable auto-regularizing methods were available. My package provides a significant new capability which would impact absolutely nothing else in the Go libraries. It would just sit above gonum's svd decompostion, perhaps in a parallel package. Obviously you might want to initially place it in your "experimental" package. That would be fine with me.

It also provides an updated version of the classic "nnls" algorithm for producing non-negative solutions. I do not believe Go has an implementation of nnls, which is just as well as it often fails to converge, and when it does converge it is too casual about deleting variables. My version cannot fail to converge, unless the svd itself fails, which is very rare, and it generally zeros fewer of the columns of the matrix.

I should mention that this class of methods, based on the Picard Condition (see web site) is inherently free of error states. These routines simply have no error conditions to report, except for failure of the SVD. They always work, if the SVD works.

I do not mean that they always produce a pleasing regularized solution... all such algorithms contain heuristic parameter, and will fail to please the user sometimes. But this package has been "tuned" on many problems, over more than a decade.

For example applications, please see the Python and Go sections of www.rejtrix.net
(I need to rearrange my web site now that I have 3 versions... haven't done that yet.)

Interested?

README.txt

Ron Jones rejones7@gmail.com

C:\Go\hello>go env
set GO111MODULE=
set GOARCH=amd64
set GOBIN=
set GOCACHE=C:\Users\rejon\AppData\Local\go-build
set GOENV=C:\Users\rejon\AppData\Roaming\go\env
set GOEXE=.exe
set GOFLAGS=
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOINSECURE=
set GOMODCACHE=C:\Users\rejon\go\pkg\mod
set GONOPROXY=
set GONOSUMDB=
set GOOS=windows
set GOPATH=C:\Users\rejon\go
set GOPRIVATE=
set GOPROXY=https://proxy.golang.org,direct
set GOROOT=c:\go
set GOSUMDB=sum.golang.org
set GOTMPDIR=
set GOTOOLDIR=c:\go\pkg\tool\windows_amd64
set GCCGO=gccgo
set AR=ar
set CC=gcc
set CXX=g++
set CGO_ENABLED=1
set GOMOD=C:\Go\hello\go.mod
set CGO_CFLAGS=-g -O2
set CGO_CPPFLAGS=
set CGO_CXXFLAGS=-g -O2
set CGO_FFLAGS=-g -O2
set CGO_LDFLAGS=-g -O2
set PKG_CONFIG=pkg-config
set GOGCCFLAGS=-m64 -mthreads -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=C:\Users\rejon\AppData\Local\Temp\go-build288389150=/tmp/go-build -gno-record-gcc-switches

@davecheney
Copy link
Contributor

Thank you for raising this issue. Gonum is not part of this project, did you mean to register this issue here, or was this unintentional?

@randall77
Copy link
Contributor

I think you want https://github.com/gonum/gonum/issues

@mdlayher
Copy link
Member

mdlayher commented Jan 8, 2021

See above, closing.

@mdlayher mdlayher closed this as completed Jan 8, 2021
@rejones7go
Copy link
Author

Like I said, I am new to GItHub. Thanks. I will resubmit there.

@golang golang locked and limited conversation to collaborators Jan 8, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

5 participants