Cómo usar matlab para crear una matriz de Hilbert
La matriz de Hilbert es una matriz de transformación matemática que es positiva definida y altamente mal condicionada (es decir, si algún elemento cambia un poco, el valor de toda la matriz y la matriz inversa cambiarán dramáticamente ), el grado de morbilidad está relacionado con el orden. En álgebra lineal, una matriz de Hilbert es una matriz cuadrada cuyos coeficientes son todos fracciones unitarias.
Método/pasos
Forma matemática
La matriz de Hilbert es una matriz de "malas condiciones" muy conocida. La expresión matemática de los elementos de esta matriz es a(i,j)=1/(i j-1). A continuación se muestra la representación matemática de la matriz de Hilbert de quinto orden.
Utilice el bucle for para generar la matriz de Hilbert
A continuación, utilizaremos el bucle for para generar la matriz de Hilbert en función de expresiones matemáticas. El código de operación específico y los resultados se muestran en la siguiente figura. Para hacer coincidir el primero, se compara la matriz de Hilbert de la representación matemática en el paso y también se selecciona el orden 5 para este cálculo.
La preconfiguración del espacio de la matriz puede mejorar la velocidad de ejecución
En las operaciones matriciales, la preconfiguración del espacio de la matriz puede mejorar la velocidad de ejecución, especialmente en la velocidad de operación de matrices de alto orden. Podemos verificar esto a través de las funciones de sincronización tic y toc. tic indica el inicio del cronometraje y toc indica el final del cronometraje. La Figura 1 muestra el tiempo de cálculo sin preconfiguración del espacio matricial, que es 3,2464 segundos; la Figura 2 muestra el tiempo de cálculo cuando se realiza la preconfiguración del espacio matricial, que es 0,072233. Se puede ver claramente que se mejora la velocidad de carrera.
La programación de vectorización genera matrices de Hilbert
Cuando usamos la programación de vectorización para generar matrices de Hilbert, la velocidad de ejecución se puede mejorar enormemente, por lo que deberíamos intentar utilizar la programación de vectorización en la programación diaria, pero Debe tener un alto conocimiento de matlab. Como se muestra en la figura, el tiempo utilizado es 0,031616 segundos, que es más corto que los dos anteriores.
Utilice la función integrada de matlab eig para calcular
Aquí utilizamos la función integrada de matlab hilb(n) para generar la matriz de Hilbert para calcular. El tiempo necesario es 0,003173 segundos. Se puede ver que el tiempo utilizado es el más corto, por lo que a la hora de programar debemos intentar utilizar las funciones correspondientes que ya tiene matlab. Si realmente no podemos encontrarlas, podemos cambiarlas nosotros mismos. Esto ahorra tiempo de cálculo.
La inversa de la matriz de Hilbert
Además, matlab también viene con la función invhilb(n) para encontrar la inversa de la matriz de Hilbert. Su función es encontrar la n-. Matriz de Hilbert de orden ésimo. La inversa de la matriz de Herbert. Echemos un vistazo. El código específico y los resultados son los siguientes. Como puede ver en la imagen, el tiempo necesario es relativamente corto.
FIN
Notas
El tiempo de cálculo en esta experiencia se ve afectado por factores como la configuración de la computadora, la versión de Matlab y si el programa se ejecuta por primera vez. , etc., y los resultados se verán afectados. Algo ha cambiado.