cortner / NBodyIPs.jl

Interatomic Potentials for Materials via Many-Body Expansion
Other
1 stars 1 forks source link

Polynomial Degrees #2

Open cortner opened 6 years ago

cortner commented 6 years ago

This looks sufficiently hard that it deserves an issue: given a polynomial p(r) defined in terms of the invariants, p(r) = prod( Ij^aj for j = 1:n ) how to we determine the "vectorial polynomial degree", i.e. the vector b such that p(r) = prod( rj^bj ). What does this even mean? Intuitively I'd think we can write p(r) as a polynomial + permutations, but this seems only true for the fundamental invariants, not for the proper primary + secondary invariants. (and I'm not sure there either)

CC @dussong

cortner commented 6 years ago

maybe a better way to go about this would be to specify p(r) = prod( rj^bj ), then symmetrise it, and then determine the linear combinations of invariants that we need to represent this p(r).

This would lead to a natural way to sparsity

dussong commented 6 years ago

Now that I think about it, I don't find it easy to express any symmetrised monomial as a linear combination of invariants.

cortner commented 6 years ago

I think we may need to start by representing the invariants differently.

Just as a first attempt for 3B

I1 = ( (1,0,0), (0,1,0), (0,0,1) )
I2 = ( (1,1,0), (1,0,1), (0,0,1) )
I3 = ( (1,1,1), )

Then given any monomial M = (a,b,c) we apply the permutation group to it to obtain

P = ( (a1,b1,c1), (a2,b2,c2), ... )

Now it should be a simple matter to setup a linear system that expresses P as a linear combination of I1, I2, I3. There may even be some basic computer algebra for this implemented in the various Polynomial Julia packages, but if not, I don't think it would be a big deal for us to carry this out.

dussong commented 6 years ago

I think it might be easier to stick to a compact representation: for 3B I1 = ( (1,0,0) ) I2 = ( (1,1,0) ) I3 = ( (1,1,1) ) Then, we can express the invariant basis functions in a compact form, e.g. I1^2 = ( (2,0,0) , 2*(1,1,0)) (which is not the same as ( (2,0,0) , (2,2,0)) ), and then setup a linear system expressing P = ( (a1,b1,c1) ) as a linear combination of the invariants. This should work if the multiplication is done correctly (without forgetting non-equivalent monomials).

cortner commented 6 years ago

that sounds good. I actually don't mind particularly how the invariants are represented, as long as we can (1) agree that the problem is all about solving a linear system and (2) we can setup and solve this linear system correctly

dussong commented 6 years ago

I try that.