Loading [MathJax]/jax/element/mml/optable/BasicLatin.js

7 votos

Generar matrices de enteros con valores propios enteros

Quiero generar 500 entero aleatorio matrices con números enteros autovalores.

Gracias a este post, yo sé cómo generar una matriz aleatoria con toda la autovalores:

  1. Generar una matriz diagonal D con la deseada (entero) autovalores.

  2. Generar una matriz invertible A del mismo tamaño como D.

  3. Registro de la matriz A1DA.

Sin embargo, el problema es que esto genera una gran cantidad de float matrices, y en realidad me gustaría tener ambas matrices de enteros y enteros autovalores.

Los valores de coma flotante son introducidos por A.inverse(). De acuerdo con este post, matrices inversas tienen todo el entero de los valores sólo cuando el determinante de la matriz original es 1 o -1 (y por lo tanto una matriz ortogonal).

He intentado utilizar la C++ biblioteca AlgLib, que tiene un rmatrixrndorthogonal función que utiliza G. W. Stewart 1980 algoritmo para generar una aleatorios uniformemente distribuidos (Haar) ortogonal de la matriz. También he intentado usar R's pracma biblioteca, que tiene un randorthofunción que también genera ortogonal de matrices. Sin embargo, ambas funciones generar matrices con valores de coma flotante.

Hay una manera para mí para generar ortogonal, entero matrices?

6voto

SiongthyeGoh Puntos 61

Deje x ser una columna de nuestra deseada ortogonal entero de la matriz.

Para satisfacer la condición de que ni=1x2i=1 where xiZ

requerimos exactamente un xi a satisfacer |xi|=1xj=0,ji.

Por lo tanto las columnas de tales matrices se compone de {±e1,,±en} donde ei es el estándar de la unidad de vectores.

Comentario:

Supongamos P es uno de esos matriz. y supongamos Pei=±ej,

eTiPDPTei=eTjDej=dj

Por lo tanto usted está a solo permutating la diagonal entradas.

Schur de descomposición podrían ser de interés para usted.

2voto

Chris Ballance Puntos 17329

Si sólo desea ortogonal de matrices, es super fácil. Aquí es un uniforme procedimiento de muestreo para todos los n×n entero ortogonal de matrices:

  1. Permutar el conjunto de índices {1,2,,n} al azar (usando, por ejemplo, Fisher-Yates shuffle). Que nos llame a los índices permutados {σ(1),σ(2),,σ(n)}.
  2. Asignar un n×n cero de la matriz A. A continuación, parai=1,2,,n, (i,σ(i))- ésima (o, la (σ(i),i)-ésima si la matriz de los usos principales de la columna de indización; por supuesto, también es necesario hacer los ajustes correspondientes si la matriz de usos de base cero de la indización en lugar de uno basado en la indexación) de A +1o 1 al azar.

1voto

Widawens Puntos 9

Matrices orthogonal con valores enteros pueden tener sólo las entradas 1,0,1. Cada matriz que tiene sólo exactamente una entrada =+1 1 en una columna y una fila donde las entradas de resto son ceros es ortogonal.
Fácil comprobar que productos de columnas (o filas) en este caso son siempre igual 0 y normas para las columnas (filas) son igual 1.

El ejemplo [0100100000100001]

0voto

Spencer Puntos 48

Pregunta 1. ¿Qué entiende usted por "quiero generar entero ALEATORIO matrices con números enteros autovalores" ?

Parece ser una pregunta difícil. Deje Z ser el subconjunto de Mn(Z) constituido de las matrices que han entero de sólo autovalores.

Paso 1. Es fácil: sea G ser un N×N real de la matriz cuyas entradas son independientes idénticamente distribuidas aleatoria normal estándar de las variables de Gi,jN(0,1) (cf. Ginibre 1965).

Paso 2. Por supuesto, podemos elegir una similar discretas de probabilidad, medida a lo largo de Z al azar y construir elementos de Mn(Z). Sigue para obtener las matrices con valores propios en Z.

Por desgracia, si UN es el número real de los autovalores de una matriz G (paso 1), a continuación, E(UN)=2N/π+O(1) al N+; aquí queremos N real de los autovalores! Por otra parte el real de los autovalores de una matriz G no puede ser elegido al azar: cf. por ejemplo https://arxiv.org/abs/1512.01449

Entonces tenemos dos problemas: * ¿cuál es la probabilidad de medida inducida por Mn(Z)Z ?

Por otro lado, podemos escribir nuestra matriz A=P1DP donde D es un número entero de la diagonal de la matriz (si A tiene múltiples valores propios, entonces podemos optar D como una matriz triangular; cf. a continuación); porque de lo que está escrito arriba, yo creo que * la diagonal de D no puede ser elegido al azar.

Pregunta 2. Supongamos que hemos resuelto el problema de la elección de DP1DP. Entonces, ¿cómo elegir a P, de modo que P1DPMn(Z) ? La forma más sencilla es la de imponer PSLn(Z) (las matrices con det son inútiles). Tenga en cuenta que la matriz de \begin{pmatrix}-4&8\\-3&6\end{pmatrix} no puede ser escrito P^{-1}diag(0,2)P donde P\in SL_2(\mathbb{Z}) pero puede ser escrito P^{-1}DP donde D es triangular. Por lo tanto, es mejor que elija D triangular; no sé si cada matriz en Z puede ser escrito P^{-1}DP donde P\in SL_n(\mathbb{Z}) D triangular en M_n(\mathbb{Z}). Si por la extraordinaria, la respuesta es sí, entonces se mantiene al azar para obtener un elemento P\in SL_n(\mathbb{Z}).

  • SL_n(\mathbb{Z}) es generado por el transvections. A continuación, podemos elegir aleatoriamente transvections I_N\pm E_{i,j} y consideran que su producto; creo que si N es grande, entonces debemos considerar muchos transvections.

*También podemos escribir A=L_1U_1L_2U_2\cdots cuando la L_i (resp. el U_i) se triangular inferior (resp. superior triangular) con elementos de la diagonal \pm 1; no creo que esta aleatoriedad es muy buena, pero es fácil escribir!

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