function [matriz_exponencial] = calcular_matriz_exponencial(matriz_inicial, k0) % Inicializarla dimension = length( matriz_inicial); matriz_exponencial = zeros( dimension ); % Bucle de cálculo matriz_exponencial = matriz_exponencial + eye( dimension ); if ~exist('k0','var') % third parameter does not exist, so default it to something k0 = 1000000; end flagRecalculado = false; for k = 2:k0 matriz_exponencial = matriz_exponencial + ( (matriz_inicial / factorial( k ) )^(k-1)) * matriz_inicial ; analisis_de_nan = isnan( matriz_exponencial ); if ( analisis_de_nan (:,:) == 1 ) fprintf('Al calcular con potencia %d, la matriz se ha vuelto demasiado grande, por lo que se recalculará hasta potencia %d y terminará el bucle. !!!!!!!!!\n', k, k-1); [matriz_exponencial] = calcular_matriz_exponencial(matriz_inicial, k - 1); flagRecalculado = true; break; end end if ( flagRecalculado == true ) fprintf('Se ha calculado la matriz exponencial hasta la potencia %d.\n', k-1 ); else fprintf('Se ha calculado la matriz exponencial hasta la potencia %d.\n', k0 ); end end