1 votos

Generación de diferentes tipos de matrices en Matlab

Estoy trabajando en un proyecto para una clase de métodos numéricos que compara dos métodos iterativos para resolver Ax=bAx=b y me preguntaba qué tipo de funciones tiene Matlab para generar matrices cuadradas arbitrariamente grandes que se puedan utilizar para hacer pruebas.

Por ejemplo, ¿hay alguna función que pueda generar fácilmente matrices diagonalmente dominantes? Probablemente podría escribir una fácilmente, pero si ya existe una sería más fácil.

Estoy buscando algo similar a magic(n) que generará una matriz con alguna propiedad dada que puedo mirar. He buscado en la documentación de Matlab pero no he podido encontrar ningún tipo de lista.

2voto

solusipse Puntos 145

Creo que estás buscando el gallery función. Tiene más de 60 tipos de matrices de prueba. Para el caso particular de las matrices diagonalmente dominantes, puede consultar la función 'dorr' opción:

A = full(gallery('dorr',5,0.01))

Puede encontrar el código de la mayoría de estas funciones de generación de matrices en el matlabroot/toolbox/matlab/elmat/private/ directorio, donde matlabroot es el directorio raíz de su instalación de Matlab.

Si necesitas matrices aleatorias diagonalmente dominantes, entonces puedes mirar las respuestas a esta pregunta de StackOverflow . Creo que este es el código Matlab equivalente a la respuesta aceptada (tendrás que comprobar si las matrices resultantes son efectivamente dominantes en diagonal):

rng(1)
n = 5;
mmax = 100;
mat1 = 2*mmax*rand(n)-mmax;
mat = mat1+diag(sum(abs(mat1),2).*sign(diag(mat1)))

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