25 votos

Encontrar$n$ puntos$x_i$ en el plano, con$\sum_{i=1}^n \vert x_i \vert^2=1$, minimizando$\sum_{i\neq j}^n \frac{1}{\sqrt{\vert x_i-x_j \vert}}$

Deje $x_1,..,x_n$ puntos en $\mathbb R^2$ bajo la restricción de

$$\sum_{i=1}^n \vert x_i \vert^2=1.$$ Por lo que no todos los puntos están en el círculo, pero la suma de las normas es limitada.

Estoy buscando la minimización de configuración de la función $$f(x_1,..,x_n):=\sum_{i\neq j}^n \frac{1}{\sqrt{\vert x_i-x_j \vert}}$$

De acuerdo con algunas de las primeras respuestas, parece que tenemos órbitas alrededor de un centro. ¿Hay alguna explicación para eso?

Por favor, hágamelo saber si usted tiene alguna pregunta.

9voto

Mike West Puntos 3124

Después de la ejecución de algunos experimentos numéricos, parece que su conjetura, que el óptimo se alcanza cuando los puntos están dispuestos como un polígono regular, es malo para $n\ge 10$.

Esto no parece demasiado sorprendente para mí: para un gran número de puntos que consigue apretado firmemente en el círculo. Luego de pasar cada segundo punto un poco hacia el centro y cada otro punto un poco lejos del centro, se aumenta la distancia entre los vecinos más cercanos, que es más grande de lo que sea que el aumento está moviendo más cerca de todos los puntos en los que, debido a la singularidad en $x_i=x_j$.

En segundo lugar, se preguntó por qué vemos órbitas alrededor de un punto central. Hacia este fin, es sencillo demostrar que la configuración óptima debe satisfacer $\frac{1}{N}\sum_i x_i = 0$, es decir, su centro de masa debe estar en el origen. La rotación de este tipo de configuración es de curso óptimo de nuevo.

Prueba: Dado un arbitraria, factible de configuración, vamos a $\mu=\frac{1}{N}\sum_i x_i$ ser su centro de masa. Luego de considerar el pasado configuración dada por $\tilde x_i = x_i - \mu$. Obviamente, esto no cambia el valor de la función objetivo. Pero nos da un margen de maniobra en la restricción:

$$\begin{aligned} \sum_i \|\tilde x_i\|^2 &= \sum_i \big(\|x_i\|^2 - 2\langle x_i, \mu\rangle + \|\mu\|^2\big) \\ &= \sum_i \|x_i\|^2 - 2\sum_i \langle x_i \frac{1}{N}\sum_j x_j\rangle + N \|\mu\|^2\\ &= 1 - 2N\|\mu\|^2 + N\|\mu\|^2 = 1- N\|\mu\|^2 \le 1 \end{aligned}$$

Then, we can "blow up" the shifted configuration by mapping $\tilde x_i \a \alpha\tilde x_i$ for some $\alpha\ge 1$ tal que la restricción se satisface de nuevo. Al hacerlo, reduce la función objetivo.

Apéndice: código Python

#!/usr/bin/env python
# coding: utf-8

# In[1]: setup
import matplotlib.pyplot as plt
import numpy as np
from scipy.optimize import NonlinearConstraint, minimize
from scipy.spatial import distance_matrix

N=39
M=2
mask = ~np.eye(N, dtype=bool)

def g(X):
    return np.sum(X**2)-1

def f(X):
    X = X.reshape(N,M)
    D = distance_matrix(X,X,p=2)
    S = np.where(mask, D, np.inf)
    return np.sum(S**(-1/2))

# In[2]: generating regular n-gon
r = N**(-1/2)
phi = np.arange(N)*(2*np.pi/N)
X0 = r* np.stack( (np.sin(phi), np.cos(phi)), axis=1 )

# In[3]: calling solver
sol = minimize(f, X0.flatten(), method='trust-constr',
               constraints = NonlinearConstraint(g, 0, 0))

# In[4]: plotting solution
XS = sol.x.reshape(N,M)
print(F"initial config: f={f(X0):.4f} g={g(X0)}")
print(F"  final config: f={f(XS):.4f} g={g(XS)}")
plt.plot(*X0.T, '+k', *XS.T, 'xr')
plt.legend(["

7voto

Cesar Eo Puntos 61

Con la siguiente secuencia de comandos de MATHEMATICA, podemos encontrar la solución órbitas alrededor del origen. En rojo las soluciones, y en azul las órbitas.

NOTA

El algoritmo general: usted puede elegir alfa y beta para que puedas comparar el tipo de embalaje logrado.

enter image description here enter image description here enter image description here enter image description here enter image description here enter image description here

n = 9;
alpha = 1/4;
beta = 1;
X = Table[Subscript[x, k], {k, 1, n}];
Y = Table[Subscript[y, k], {k, 1, n}];
p[k_] := {Subscript[x, k], Subscript[y, k]};
F = Sum[Sum[1/((p[k] - p[j]).(p[k] - p[j]))^alpha, {j, k + 1, n}], {k, 1, n}];
restr = Sum[(p[k].p[k])^beta, {k, 1, n}] - 1;
sol = NMinimize[{F, restr == 0}, Join[X, Y]];
restr /. sol[[2]]
tabrhos = Table[Sqrt[p[k].p[k]], {k, 1, n}] /. sol[[2]];
tabrhosort = Sort[tabrhos];
tabant = -1;
error = 0.0001;
listr = {};
For[i = 1, i <= n, i++, If[Abs[tabrhosort[[i]] - tabant] > error, AppendTo[listr, tabrhosort[[i]]]]; tabant = tabrhosort[[i]]]
rho = Max[tabrhos];
Show[Table[Graphics[{Red, PointSize[0.02], Point[p[k]]} /.sol[[2]]], {k, 1, n}], Table[Graphics[{Blue, Circle[{0, 0}, listr[[k]]]}], {k, 1, Length[listr]}]]

1voto

greg Puntos 156

Considere la posibilidad de la simulación de la matriz $Y\in{\mathbb R}^{2\times n}$ y con una magnitud $\mu=\sqrt{\operatorname{tr}(Y^TY)}$.

El uso de un signo de dos puntos para indicar el producto de seguimiento, es decir, $\,A:B=\operatorname{tr}(A^TB),\,$ podemos diferenciar la magnitud como $$\mu^2=Y:Y \implies\mu\,d\mu=Y:dY$$

Let the columns of the matrix $X\in{\mathbb R}^{2\times n}$ be the $x_i$ vectors. Then the entries of the Grammian matrix $\,G=X^TX\,$ son los productos de puntos de las columnas, y los de la diagonal principal contiene los cuadrados de las longitudes de las columnas.

Por lo que el problema de la restricción puede ser expresado mediante la traza. $$1 = \operatorname{tr}(G) = X:X$$ Y $X$ se puede construir a partir de $Y$ tal que esta restricción es siempre satisfecho. $$\eqalign{ X &= \mu^{-1}Y \quad\implica X:X = \mu^{-2}(X:Y) = 1 \\ dX &= \mu^{-1}dY - \mu^{-3}Y(Y:dY) \\ }$$

Columnar distances can be calculated using the $G$ matrix and the all-ones vector ${\tt1}$ $$\eqalign{ g &= \operatorname{diag}(G) \\ A_{ij} &= \|x_i-x_j\| \quad\implica A= g{\tt1}^T + {\tt1}g^T - 2G \\ B &= A+I,\quad C= B^{\odot-3/2},\quad L= C-\operatorname{Diag} C{\tt1}) \\ }$$ La adición de la matriz identidad se deshace de la cero los elementos de la diagonal principal, y permite el cálculo de todos los Hadamard $(\odot)$ competencias que necesita el objetivo de la función y su derivada. $$\eqalign{ f &= {\tt11}^T:B^{\odot-1/2} \;-\; {\tt11}^T:I \\ df &= -\tfrac{1}{2}C:dB \\ &= \tfrac{1}{2}C:(2\,la dirección general de la dg\,{\tt1}^T {\tt1}\,dg^T) \\ &= C:dG - \tfrac{1}{2} C{\tt1}:dg+{\tt1}^TC:dg^T) \\ &= C:dG - C{\tt1}:dg \\ &= \Big(C - \operatorname{Diag} C{\tt1})\Big):dG \\ &= -L:dG \\ }$$ Una pausa para aclarar que $L$ es el Laplaciano de $C$ y las matrices $(A,B,C,G,L)$ son todos simétrica. $$\eqalign{ df &= -L:(dX^TX+X^TdX) \\ &= -2L:X^TdX \\ &= -2XL:dX \\ &= -2\mu^{-1}IL:(\mu^{-1}dY - \mu^{-3}Y(Y:dY)) \\ &= 2\mu^{-2}\Big(\mu^{-2}(YL:Y)Y - YL\Big):dY \\ &= 2\mu^{-2}\Big((G:L)Y - YL\Big):dY \\ \frac{\partial f}{\partial Y} &= 2\mu^{-2}\Big((G:L)Y - YL\Big) \\ }$$ Desde $Y$ libre, estableciendo que el gradiente de cero se obtiene un primer orden de la condición de optimalidad. $$\eqalign{ YL &= (G:L)Y \;=\; \lambda Y \\ LY^T &= \lambda Y^T \\ }$$ Este tiene la forma de un autovalor problema, excepto que $L$ es una función no lineal de $Y$.

Sin embargo, la relación pone de manifiesto que ambas filas de $Y$ debe ser vectores propios de $L$ se asocia con algún autovalor de multiplicidad $>1$.

Desde $L$ es un Laplaciano, ${\tt1}$ está garantizado para ser un autovector de $L$ asociado con $\lambda=0.$

Si $\operatorname{rank}(L)\le(n-2)$ luego hay otros vectores en el nullspace de $L$ que puede ser utilizado en la segunda fila. Cuando se representa una solución de este tipo podría aparecer como una línea vertical, ya que la primera componente de cada una de las $x_i$ vector será idéntica.

Resumen

  1. El original restringido problema se puede convertir en un sin restricciones problema.
  2. Todas las soluciones deben satisfacer los pabellones de conveniencia en la forma de una no lineal EV problema.
  3. A pesar de su naturaleza no lineal, uno eigenpair $\big(\{\lambda,v\}=\{0,{\tt1}\}\big)$ ya es conocido.
  4. Iff un segundo eigenpair $\{0,v\}$ existe, entonces los puntos de la solución $Y=\big[{\tt1}\;\;v\big]^T$ se encuentran en una recta.
  5. En cualquier caso, dos $v_k$ con el mismo $\lambda$ son necesarios para una solución de $Y=\big[v_1\;\;v_2\big]^T$
  6. Soc deberá ser calculado y se evalúa para determinar si un en particular FOC solución representa un (local) mínimo o máximo.

Otra manera de enfocar el problema es tratar a cada una de las $x_i$ , como un complejo de escalar en lugar de un verdadero vector. Entonces, en lugar de la matriz $X\in{\mathbb R}^{2\times n}$ el análisis se centrará en los complejos de vectores $z\in{\mathbb C}^{n}$.

Es un sencillo ejercicio para numéricamente verificar que los vértices de un polígono regular $(Y_{poly})$ satisfacer las no lineales EV ecuación.

También es fácil de perturbar $Y_{poly}$ y cheque por cerca de $Y$'s con un pequeño objetivo. De esta forma se comprueba que $Y_{poly}$ es un mínimo, sin necesidad de encontrar la Soc.

#!/usr/bin/env  julia
using LinearAlgebra;
n = 5  # a pentagon
u,v = ones(n,1), 2*pi*collect(1:n)/n
c,s = cos.(v+u/n), sin.(v+u/n)  # add u/n to avoid 0-elements
Y = [c s]'; X = Y/norm(Y); G = X'X; g = diag(G);
A = g*u' + u*g' - 2*G
B = A+I; C = B.^(-3/2); L = C - Diagonal(vec(C*u));

# verify that Y solves the EV equation (via element-wise quotient)
Q = (L*Y') ./ Y'
   -15.3884  -15.3884
   -15.3884  -15.3884
   -15.3884  -15.3884
   -15.3884  -15.3884
   -15.3884  -15.3884
# the eigenvalue is -15.3884
# now verify that the constraint is satisfied
tr(G)
  0.9999999999999998

# objective function
function f(Y)
  m,n = size(Y)
  X = Y/norm(Y); G = X'X; g,u = diag(G), ones(n,1)
  A = g*u' + u*g' - 2*G;  B = A + I
  return sum(B.^(-0.5)) - n
end

# evaluate at *lots* of nearby points
fY,h = f(Y), 1e-3  # "nearby" is defined by h
extrema( [f(Y+randn(size(Y))*h)-fY  for k=1:9999] ) 
  (2.056884355283728e-6, 0.00014463419313415216)
# no negative values  ==>  f(Y) is a minimum
#

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X