Git Product home page Git Product logo

Comments (6)

JanNeuendorf avatar JanNeuendorf commented on September 1, 2024
  1. It is true, that projected can do everything smearing does. But it is a bit awkward to use projected to get a single sub-correlator. I would use it in there for debugging and i plan to add an option to not just pick a single smearing but a sub-matrix
  2. This is true, i left it in there for testing only. It can go, if you want. But i think it is nice to have the simple function for a quick comparison.
  3. smearing symmetric can (and should) be used whenever a correlator is symmetric under flipping the source and sink. I just used it in the Eigenvalue method, because the cholesky decomposition breaks with non-symmetric matrices.
  4. Yes, sum was just there for a test. It should be deleted.

from pyerrors.

fjosw avatar fjosw commented on September 1, 2024

Thanks for your assessment.

  • I removed the sum method in commit 07ca32f as you suggested.
  • I agree that we should keep smearing_symmetric. I am not 100% happy with the name smearing as the matrices used for the GEVP do not necessarily only contain different smearing levels but could contain other correlation functions of operators coupling to the same quantum numbers. Maybe we can discuss this in our next call.
  • For both smearing and Eigenvalue I see two options:
    • We could keep them in the namespace of the Corr class. I would then suggest that smearing internally calls projected with the appropriate arguments to improve future maintenance. Eigenavalue is still lacking a docstring.
    • Alternatively we could remove the two functions from the module, move them to the tests and use them to independently verify their counterparts.

from pyerrors.

JanNeuendorf avatar JanNeuendorf commented on September 1, 2024

Okay, regarding the Eigenvalue Method. I do not know, what your needs are exactly. But it is relatively easy to get the eigenvalues back from the eigenvectors.

With the norm:

leads to

Or in code-form C.projected(C.GEVP()) gives the eigenvalue.
This is why i recently changed the norm in projected() .
There is a good reason to do it this way instead of using the eigenvalues directly.
If you (for example) use the effective mass of the (direct-)eigenvalue to get a ground state,
you might overestimate the error, because the error also includes a measure of how well the GEVP was solved.
That is something, we do not really care about. If i give you any vector, you should be able to project it and get a plateau.
If i gave you a "bad" vector, the plateau will be shorter and or noisier. This should encode all the loss in statistics.
We could of course introduce an extra method which does C.projected(C.GEVP()) for you or the GEVP() method could include the option to return the eigenvalues. I do not really think, this is needed.

from pyerrors.

fjosw avatar fjosw commented on September 1, 2024

That sounds very reasonable. So you would propose to change the Eigenvalue method to internally call something like C.projected(C.GEVP())? Maybe @s-kuberski can assess whether that would work also for the applications he has in mind.

from pyerrors.

JanNeuendorf avatar JanNeuendorf commented on September 1, 2024

Yes, i can not come up with an example, where this would not work.

from pyerrors.

s-kuberski avatar s-kuberski commented on September 1, 2024

I'll try to check this...

from pyerrors.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.