Red de conocimiento informático - Conocimiento sistemático - Buscando un programa en Matlab para la descomposición trigonométrica directa. Es necesario explicar cada paso.

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 j, U (i, j) = 0, independientemente de 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, el valor de U(k,j) es igual a A(k,j) -L(k,1:k-1)*U(1:k-1,j) y luego asigne la k-ésima columna de U end %if end mark end %for j=2:n end mark end %for i= 2:n end Flag end %for k=2:n End flag hl;RA,U,L %Rango de matriz de salida RA, función trigonométrica superior U, función trigonométrica inferior Prestar %si h(1,i)~=0 End flag end %RA ==n end flag%%%%%%%%%%%%%%%%%%%%%%%%% Hay mucha redundancia en el código anterior cuando se juzga el rango de A. para ser n, otras fórmulas principales son Los determinantes ya no son 0 y el juicio es redundante, por lo que hice mejoras de la siguiente manera%%%%%%%%%%%%%%%%%%%%%%%%% función hl=LUfenJie(A) % El nombre de la función es zhiLU. La matriz de entrada A se utiliza para la descomposición LU. El valor de retorno hl es el determinante de cada orden de subformas principales de A [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 %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 ij, U(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