Generando matrices simétricas positivas definidas usando índices


8

Estaba tratando de ejecutar casos de prueba para CG y necesito generar:

  • matrices definidas positivas simétricas
  • de tamaño> 10,000
  • DENSIDAD COMPLETA
  • Usando solo índices de matriz y, si es necesario, 1 vector (como )A(i,j)=x(i)x(j)(i+j)

  • Con número de condición inferior a 1000.

Yo he tratado:

  1. Generando matrices aleatorias usando A=rand(N,N)y luego A'Apara convertirlo en Sym. PD. [Esto aumenta el número de condición]

  2. Usando el vector appraoch como se muestra, pero parece que no puedo obtener una función (x,i,j)que garantice Sym y PD.

Después de mucha experimentación, se me ocurrió:

a(it,jt) = (vec(it)+vec(jt))/((it-1)^2+(jt-1)^2);Siitjt

a(it,it) = x(it)si it=jt

Pero esto es PD hasta aproximadamente 500x500.

  1. XLATMR . [Con todas las calificaciones y escalas, es muy difícil de entender. Especialmente porque no puedo entender el álgebra lineal subyacente]

¿Alguien puede darme una función en x (vector) e i, j (índices) que cumpla con los requisitos anteriores?


1
Intente agregar un gran número (en el orden del número de condición) a las entradas diagonales de su matriz. Esto es equivalente a agregar a cada uno de sus valores propios y debería mejorar el número de condición. ααα
Aron Ahmadia

@AronAhmadia, ¡funciona genial! ¡Gracias! Sin embargo, ¿qué gran número debo agregar? Intenté N en sí y funcionó hasta 5000x5000 (solo terminé las simulaciones), ¿se a+N*eye(N,N)asegurará de que funcionará para todos los valores más allá de 5000? ¿Puedes convertir tu comentario en una respuesta?
Investigación

Respuestas:


10

Para obtener una matriz definida positiva densa con el número de condición bajo costo, elija una matriz diagonal cuya diagonal consista en números de (que serán los valores propios), con y elegidos al menos una vez, y un vector . Luego aplique una transformación de similitud, a través de las transformaciones de Householder, para formar la matriz , donde .D [ 1 , c ] 1 c u A : = ( I - t u u T ) D ( I - t u u T ) t = 2 / u T ucD[1,c]1cuA:=(ItuuT)D(ItuuT)t=2/uTu

Para formar esta matriz con operaciones , calcule , , en operaciones y luego como . (Si elige como el vector todo en uno, el número de multiplicaciones necesarias es solo .v : = D u s : = t 2 u T v / 2 w : = t v - s u O ( n ) A A = D - u w T - w u T u O ( n )O(n2)v:=Dus:=t2uTv/2w:=tvsuO(n)AUNA=re-tuwT-wtuTtuO(norte)

Tenga en cuenta que el comportamiento de CG depende mucho de la distribución de valores propios, que se puede confirmar fácilmente variando .re

(Agregar a una matriz simétrica arbitraria necesita más grande que el valor propio más grande. Esto es difícil de calcular; por lo tanto, habría que elegir , pero el número de condición generalmente será muy pequeño , no es un caso de prueba realista para CG).A α α = A αUNAαα=UNA


¡Esto es perfecto!
Investigación

¿Cómo debo cambiar el algoritmo para proporcionarme matrices cuando proporciono los valores propios? Por ejemplo, quiero una matriz no simétrica con valores propios 1,-1,2,-2...50,-50.
Investigación

1
en la receta anterior le da estos valores propios, pero con esta elección la matriz ahora es simétrica indefinida, y CG no resolvería tal problema. Y en su comentario incluso pide una matriz no simétrica, donde el CG tampoco se aplica. Tal vez sea mejor hacer una nueva pregunta con lo que precisamente quieres. re=reyounasol(-50:50)
Arnold Neumaier

3

Intente agregar un gran número (en el orden de la norma de la matriz) a las entradas diagonales de su matriz. Esto es equivalente a agregar α a cada uno de sus valores propios y debería mejorar el número de condición al reducir la brecha entre los valores propios más grandes y más pequeños. αα



2

No estoy seguro de cómo lo haría con un solo vector, pero con dos vectores aleatorios y θ de tamaño N , puede producir una matriz semi-definida positiva a través de U = i R i ( θ i )Xθnorte donde R i ( ) es una rotación en el plano de los ejes i y i + 1  mod  N .

U=yoRyo(θyo)UNA=Udiag(abdominales(X))U
Ryo()yoyo+1 modificación norte

Si desea mejorar el número de condición, puede agregar un valor positivo fijo a y volver a escalar si es necesario.X


Lo siento, pero mis matemáticas aún no son tan buenas. ¿ denota transposición? ¿Qué significa la rotación en el plano? Además, almacenar 2 vectores será un poco caro, pero aún así, este aspecto le gusta de una manera muy interesante. U
Investigación

Ryo(θyo)=(10 00 0cosθyopecadoθyo-pecadoθyocosθyo1)U

2

XUNA=XXTnorte-1X2X

METROXyo

UNA=yo=1METROXyoXyoT
METROnorteXyoUNAMETROMETROnorteMETROnorte
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.