Buscando un programa en Matlab para la descomposición trigonométrica directa. Es necesario explicar cada paso.
Le expliqué su código. De hecho, es un trabajo complicado. La siguiente función hl=zhjLU(A) %La función se llama zhiLU. La matriz de entrada A se utiliza para realizar la descomposición de LU. el valor hl es A. Determinante de cada orden de subformas principales [n n] =tamaño(A);% devuelve la dimensión de la matriz A
RA=rank(A) % devuelve el rango de la matriz A si; RA~=n % Determine si el rango RA de la matriz A no es igual a la dimensión n de A. Cuando no sea igual a n, es decir, cuando sea menor que n, ejecute la sentencia disp en if ('Por favor nota: debido a que el determinante de orden n hl de A es igual a cero, A no se puede realizar la descomposición LU. El rango RA de A es el siguiente:'), RA,hl=det(A);% Muestra la cadena en disp. , el valor de RA, el valor de hl (en este momento su valor es el determinante de la matriz A) devuelve % y sale del programa end % if final del bloque de declaración, end marca el final de la declaración if if RA==n % Determine si el rango de A es igual a n. Cuando es igual a n, es decir, cuando el rango está completo, ejecute la siguiente instrucción para p = 1: n%. Bucle de 1 a n, el objetivo principal es obtener. el determinante h(p)=det(A(1:p, 1:p));%A(1:p, 1:p) de la subexpresión principal de orden 1 a n. Las primeras p filas de la primera p. las columnas de A son la subfórmula principal de orden p de A, por lo que h(p) es el valor de la fórmula principal de orden p de A. end %for Statement end mark hl=h(1:n);% put A's El valor determinante de la subexpresión principal de cada orden se asigna al almacenamiento hl para i=1:n % bucles de 1 a n, principalmente para determinar si la subexpresión principal de cada orden es 0 si h(1,i)==0. %juzga el iésimo segmento ¿El determinante de la subexpresión principal de orden es 0? Si es 0, genera la siguiente declaración disp('Tenga en cuenta: debido a que la expresión principal de orden r de A es igual a cero, A no puede ser descompuesto por LU El rango RA de A y los valores de las expresiones principales de orden de cada orden hl son los siguientes: '), hl;RA% Genera la cadena en disp, el valor del determinante de la subexpresión principal de cada orden. y el rango de la matriz A devuelve % Salga del programa cuando uno sea 0 final %si marca de fin de declaración fin %para bandera de fin de declaración si h(1,i)~=0 %Si se ejecuta esta oración, significa que lo anterior para Se ha ejecutado el bucle y no hay retorno, entonces el valor de i es n en este momento y se determina si el determinante de enésimo orden es 0, es decir, todavía se juzga si el determinante de A no es 0. Si no es 0, la siguiente declaración disp('Tenga en cuenta: debido a que las subfórmulas principales de cada orden de A no son iguales a cero, A puede descomponerse mediante LU. El rango RA y el valor de la subfórmula principal hl de cada orden son como sigue: ')% Muestra la cadena en disp para j=1:n% Bucle de 1 a n U(1,j)=A(1,j);% Cada valor en la primera fila de A se asigna a cada variable en la primera fila de U end%for bandera de fin de bucle para k=2:n% bucles desde la segunda columna hasta la enésima columna, es decir, hasta la k-ésima columna de LU a su vez Asignación de columnas para i=2:n% bucles de 2 a n, y el bucle de j está interconectado, es decir, cuando i>j, se asigna la matriz triangular inferior L, y cuando j>=i, a la triangular superior U se le asigna un valor para j =2:n % recorre de 2 a n, y el bucle de i está interconectado, es decir, cuando i>j, a la matriz triangular inferior L se le asigna un valor, y cuando j>=i, a la matriz triangular superior U se le asigna un valor L (1,1) =1;L(i,i)=1; %Siempre mantenga los elementos en la diagonal de L como 1 si i>j %Cuando i>j, a L se le asigna un valor en este momento, porque cuando i lse % De lo contrario, es decir, cuando i RA=rank(A); %Devuelve el rango de la matriz A si RA~=n %Juzga si el rango RA de la matriz A no es igual a la dimensión n de A. Cuando no es igual a n, es decir, cuando es menor que n, ejecute la instrucción disp en if ('Tenga en cuenta: debido a que el determinante de orden n hl de A es igual a cero, LU no puede descomponer A. El rango RA de A es el siguiente:'), RA,hl=det(A);% Genera la cadena en disp, el valor de RA, el valor de hl (en este momento su valor es el determinante de la matriz A) devuelve % y salir del programa elsefor p=1:n% bucle de 1 a n, principalmente para obtener el determinante h de la subexpresión principal de orden 1 a n (p)=det(A(1:p, 1:p)); %A(1:p, 1:p) es la primera p fila y la primera p columna de A, es decir, la subfórmula principal de orden p de A, por lo que h( p) es el valor de la subfórmula principal de orden p of A. end %for Statement end flag hl=h(1:n %); asigna el valor determinante de la subfórmula principal de cada orden de A al almacenamiento de hl. disp('Tenga en cuenta: porque las fórmulas principales de cada orden de A no son iguales a cero, A puede descomponerse mediante LU. El rango RA de A y los valores secuenciales de la fórmula principal hl de cada orden son los siguientes:')% Genera la cadena para j. in disp =1:n% bucle U(1,j)=A(1,j) de 1 a n;% asigna cada valor en la primera fila de A a cada variable en la primera fila de U end%for extremos del bucle El signo para k=2:n% recorre desde la segunda columna a la enésima columna, es decir, asigna valores a la k-ésima columna de LU a su vez. For i=2:n% recorre desde 2 hasta n. con j están interconectados, es decir, cuando i>j, asigne un valor a la matriz triangular inferior L, y cuando j>=i, asigne un valor al triángulo superior U. Para j=2:n% se realiza un bucle de 2 a. n, y los bucles de i están interconectados, es decir, cuando i> Cuando j, asigne un valor a la matriz triangular inferior L. Cuando j> = i, asigne un valor a la matriz triangular superior U. L (1,1 )=1;L(i,i)=1; %Siempre mantenga los elementos en la diagonal de L como 1si i>j %Cuando i>j, L debe asignarse en este momento, porque cuando i ,j)=0, no te preocupes por U(k,j)=A(k,j)-L(k,1:k-1)*U(1:k-1,j);% según la relación de descomposición LU Sabiendo que el valor de U(k,j) es igual a A(k,j)-L(k,1:k-1)*U(1:k-1,j), luego asigne el valor de la k-ésima columna de Uend %if Flag end %for j=2:n end flag end %for i=2:n end flag end %for k=2:n end flag hl;RA,U,L %The rango RA de la matriz de salida, la función trigonométrica superior U, función trigonométrica inferior Prestar %RA~=n marca final