Metodo de la Secante
Ejercicio 1
% Método de la Secante: f(x) = x^4 - 2x^3 - 4x^2 + 4x + 4
clc;
clear;
% Definición de la función
f = @(x) x.^4 - 2*x.^3 - 4*x.^2 + 4*x + 4;
% Condiciones iniciales
x_i_1 = -2;
x_i = -1;
tol = 1e-3;
decimales_redondeo = 4;
maxIter = 100;
% Inicializar almacenamiento
tabla = zeros(maxIter, 7);
Errors = [];
fprintf('Método de la Secante - Ejercicio\n');
fprintf('f(x) = x^4 - 2x^3 - 4x^2 + 4x + 4\n');
fprintf('\nResolución detallada de cada iteración con fórmulas:\n');
% Iteración 0: solo cálculo de error con valores iniciales
fx_i_1 = f(x_i_1);
fx_i = f(x_i);
error0 = abs((x_i - x_i_1) / x_i) * 100;
error0_red = round(error0, decimales_redondeo);
tabla(1, :) = [0, x_i_1, x_i, fx_i_1, fx_i, NaN, error0_red];
fprintf('\nIteración 0 (usando valores iniciales):\n');
fprintf('
f(%.5f) = %.5f\n', x_i_1, fx_i_1);
fprintf('
f(%.5f) = %.5f\n', x_i, fx_i);
fprintf('
Error = |%.5f - %.5f| / |%.5f| * 100 = %.4f%%\n', x_i, x_i_1, x_i, error0_red);
% Iteraciones siguientes
for i = 1:maxIter
fx_i_1 = f(x_i_1);
fx_i = f(x_i);
fprintf('\nIteración %d:\n', i);
fprintf('1. Evaluación de f(x_{i-1}):\n');
fprintf('
f(%.5f) = (%.5f)^4 - 2*(%.5f)^3 - 4*(%.5f)^2 + 4*(%.5f) + 4 = %.5f\n', ...
x_i_1, x_i_1, x_i_1, x_i_1, x_i_1, fx_i_1);
fprintf('2. Evaluación de f(x_i):\n');
fprintf('
f(%.5f) = (%.5f)^4 - 2*(%.5f)^3 - 4*(%.5f)^2 + 4*(%.5f) + 4 = %.5f\n', ...
x_i, x_i, x_i, x_i, x_i, fx_i);
fprintf('3. Aplicación de la fórmula de la secante:\n');
fprintf('
x_{i+1} = x_i - f(x_i) * (x_i - x_{i-1}) / (f(x_i) - f(x_{i-1}))\n');
fprintf('
x_{i+1} = %.5f - (%.5f * (%.5f - %.5f)) / (%.5f - %.5f)\n', ...
x_i, fx_i, x_i, x_i_1, fx_i, fx_i_1);
x_i1 = x_i - fx_i*(x_i - x_i_1)/(fx_i - fx_i_1);
fprintf('
Resultado: x_{i+1} = %.5f\n', x_i1);
fprintf('4. Cálculo del error relativo en porcentaje:\n');
error = abs((x_i1 - x_i)/x_i1) * 100;
error_red = round(error, decimales_redondeo);
fprintf('
Error = |%.5f - %.5f| / |%.5f| * 100 = %.4f%%\n', x_i1, x_i, x_i1, error_red);
tabla(i+1, :) = [i, x_i_1, x_i, fx_i_1, fx_i, x_i1, error_red];
if error <= tol * 100
fprintf('
Tolerancia alcanzada en iteración %d (error = %.4f%% <= tol = %.4f%%)\n',
i, error_red, tol*100);
fprintf('------------------------------------------------\n');
fprintf('Raíz aproximada: x = %.5f\n', x_i1);
break;
end
% Actualizar valores para la siguiente iteración
x_i_1 = x_i;
x_i = x_i1;
end
% Mostrar tabla final
fprintf('\nTabla de resultados:\n');
fprintf('Iter\tX_i-1\t\tX_i\t\tf(X_i-1)\t\tf(X_i)\t\tX_i+1\t\tError (%%)\n');
fprintf('----------------------------------------------------------------------------------------\n');
for j = 1:i+1
if isnan(tabla(j,6))
fprintf('%4d\t%.5f\t%.5f\t%.5f\t%.5f\t%s\t%.4f%%\n', ...
tabla(j,1), tabla(j,2), tabla(j,3), tabla(j,4), tabla(j,5), 'N/A', tabla(j,7));
else
fprintf('%4d\t%.5f\t%.5f\t%.5f\t%.5f\t%.5f\t%.4f%%\n', ...
tabla(j,1), tabla(j,2), tabla(j,3), tabla(j,4), tabla(j,5), tabla(j,6),
tabla(j,7));
end
end
Resolucion del ejercicio
Método de la Secante - Ejercicio
f(x) = x^4 - 2x^3 - 4x^2 + 4x + 4
Resolución detallada de cada iteración con fórmulas:
Iteración 0 (usando valores iniciales):
f(-2.00000) = 12.00000
f(-1.00000) = -1.00000
Error = |-1.00000 - -2.00000| / |-1.00000| * 100 = 100.0000%
Iteración 1:
1. Evaluación de f(x_{i-1}):
f(-2.00000) = (-2.00000)^4 - 2*(-2.00000)^3 - 4*(-2.00000)^2 + 4*(-2.00000) + 4 = 12.00000
2. Evaluación de f(x_i):
f(-1.00000) = (-1.00000)^4 - 2*(-1.00000)^3 - 4*(-1.00000)^2 + 4*(-1.00000) + 4 = -1.00000
3. Aplicación de la fórmula de la secante:
x_{i+1} = x_i - f(x_i) * (x_i - x_{i-1}) / (f(x_i) - f(x_{i-1}))
x_{i+1} = -1.00000 - (-1.00000 * (-1.00000 - -2.00000)) / (-1.00000 - 12.00000)
Resultado: x_{i+1} = -1.07692
4. Cálculo del error relativo en porcentaje:
Error = |-1.07692 - -1.00000| / |-1.07692| * 100 = 7.1429%
Iteración 2:
1. Evaluación de f(x_{i-1}):
f(-1.00000) = (-1.00000)^4 - 2*(-1.00000)^3 - 4*(-1.00000)^2 + 4*(-1.00000) + 4 = -1.00000
2. Evaluación de f(x_i):
f(-1.07692) = (-1.07692)^4 - 2*(-1.07692)^3 - 4*(-1.07692)^2 + 4*(-1.07692) + 4 = -1.10374
3. Aplicación de la fórmula de la secante:
x_{i+1} = x_i - f(x_i) * (x_i - x_{i-1}) / (f(x_i) - f(x_{i-1}))
x_{i+1} = -1.07692 - (-1.10374 * (-1.07692 - -1.00000)) / (-1.10374 - -1.00000)
Resultado: x_{i+1} = -0.25852
4. Cálculo del error relativo en porcentaje:
Error = |-0.25852 - -1.07692| / |-0.25852| * 100 = 316.5696%
Iteración 3:
1. Evaluación de f(x_{i-1}):
f(-1.07692) = (-1.07692)^4 - 2*(-1.07692)^3 - 4*(-1.07692)^2 + 4*(-1.07692) + 4 = -1.10374
2. Evaluación de f(x_i):
f(-0.25852) = (-0.25852)^4 - 2*(-0.25852)^3 - 4*(-0.25852)^2 + 4*(-0.25852) + 4 = 2.73760
3. Aplicación de la fórmula de la secante:
x_{i+1} = x_i - f(x_i) * (x_i - x_{i-1}) / (f(x_i) - f(x_{i-1}))
x_{i+1} = -0.25852 - (2.73760 * (-0.25852 - -1.07692)) / (2.73760 - -1.10374)
Resultado: x_{i+1} = -0.84177
4. Cálculo del error relativo en porcentaje:
Error = |-0.84177 - -0.25852| / |-0.84177| * 100 = 69.2883%
Iteración 4:
1. Evaluación de f(x_{i-1}):
f(-0.25852) = (-0.25852)^4 - 2*(-0.25852)^3 - 4*(-0.25852)^2 + 4*(-0.25852) + 4 = 2.73760
2. Evaluación de f(x_i):
f(-0.84177) = (-0.84177)^4 - 2*(-0.84177)^3 - 4*(-0.84177)^2 + 4*(-0.84177) + 4 = -0.50639
3. Aplicación de la fórmula de la secante:
x_{i+1} = x_i - f(x_i) * (x_i - x_{i-1}) / (f(x_i) - f(x_{i-1}))
x_{i+1} = -0.84177 - (-0.50639 * (-0.84177 - -0.25852)) / (-0.50639 - 2.73760)
Resultado: x_{i+1} = -0.75072
4. Cálculo del error relativo en porcentaje:
Error = |-0.75072 - -0.84177| / |-0.75072| * 100 = 12.1276%
Iteración 5:
1. Evaluación de f(x_{i-1}):
f(-0.84177) = (-0.84177)^4 - 2*(-0.84177)^3 - 4*(-0.84177)^2 + 4*(-0.84177) + 4 = -0.50639
2. Evaluación de f(x_i):
f(-0.75072) = (-0.75072)^4 - 2*(-0.75072)^3 - 4*(-0.75072)^2 + 4*(-0.75072) + 4 = -0.09342
3. Aplicación de la fórmula de la secante:
x_{i+1} = x_i - f(x_i) * (x_i - x_{i-1}) / (f(x_i) - f(x_{i-1}))
x_{i+1} = -0.75072 - (-0.09342 * (-0.75072 - -0.84177)) / (-0.09342 - -0.50639)
Resultado: x_{i+1} = -0.73013
4. Cálculo del error relativo en porcentaje:
Error = |-0.73013 - -0.75072| / |-0.73013| * 100 = 2.8208%
Iteración 6:
1. Evaluación de f(x_{i-1}):
f(-0.75072) = (-0.75072)^4 - 2*(-0.75072)^3 - 4*(-0.75072)^2 + 4*(-0.75072) + 4 = -0.09342
2. Evaluación de f(x_i):
f(-0.73013) = (-0.73013)^4 - 2*(-0.73013)^3 - 4*(-0.73013)^2 + 4*(-0.73013) + 4 = 0.00976
3. Aplicación de la fórmula de la secante:
x_{i+1} = x_i - f(x_i) * (x_i - x_{i-1}) / (f(x_i) - f(x_{i-1}))
x_{i+1} = -0.73013 - (0.00976 * (-0.73013 - -0.75072)) / (0.00976 - -0.09342)
Resultado: x_{i+1} = -0.73208
4. Cálculo del error relativo en porcentaje:
Error = |-0.73208 - -0.73013| / |-0.73208| * 100 = 0.2661%
Iteración 7:
1. Evaluación de f(x_{i-1}):
f(-0.73013) = (-0.73013)^4 - 2*(-0.73013)^3 - 4*(-0.73013)^2 + 4*(-0.73013) + 4 = 0.00976
2. Evaluación de f(x_i):
f(-0.73208) = (-0.73208)^4 - 2*(-0.73208)^3 - 4*(-0.73208)^2 + 4*(-0.73208) + 4 = -0.00013
3. Aplicación de la fórmula de la secante:
x_{i+1} = x_i - f(x_i) * (x_i - x_{i-1}) / (f(x_i) - f(x_{i-1}))
x_{i+1} = -0.73208 - (-0.00013 * (-0.73208 - -0.73013)) / (-0.00013 - 0.00976)
Resultado: x_{i+1} = -0.73205
4. Cálculo del error relativo en porcentaje:
Error = |-0.73205 - -0.73208| / |-0.73205| * 100 = 0.0036%
Tolerancia alcanzada en iteración 7 (error = 0.0036% <= tol = 0.1000%)
-----------------------------------------------Raíz aproximada: x = -0.73205
Tabla de resultados:
Iter X_i-1
X_i
f(X_i-1)
f(X_i)
X_i+1
Error (%)
----------------------------------------------------------------------------------------0 -2.00000
-1.00000
12.00000
-1.00000
N/A
100.0000%
1 -2.00000
-1.00000
12.00000
-1.00000
-1.07692
7.1429%
2 -1.00000
-1.07692
-1.00000
-1.10374
-0.25852
316.5696%
3 -1.07692
-0.25852
-1.10374
2.73760
-0.84177
69.2883%
4 -0.25852
-0.84177
2.73760
-0.50639
-0.75072
12.1276%
5 -0.84177
-0.75072
-0.50639
-0.09342
-0.73013
2.8208%
6 -0.75072
-0.73013
-0.09342
0.00976
-0.73208
0.2661%
7 -0.73013
-0.73208
0.00976
-0.00013
-0.73205
0.0036%
>>
Ejercicio 2
% Método de la Secante: f(x) = x^2 - 2x*e^(-x) + e^(-2x)
clc;
clear;
% Definición de la función
f = @(x) x.^2 - 2*x.*exp(-x) + exp(-2*x);
% Condiciones iniciales
x_i_1 = 0;
x_i = 1;
tol = 1e-5;
maxIter = 100;
decimales_redondeo = 8;
% Inicializar almacenamiento para la tabla
tabla = zeros(maxIter, 7);
exp_fx_i_1 = strings(maxIter,1);
exp_fx_i = strings(maxIter,1);
fprintf('Método de la Secante - Ejercicio 2\n');
fprintf('f(x) = x^2 - 2x*e^(-x) + e^(-2x)\n');
fprintf('\nResolución detallada de cada iteración con fórmulas:\n');
% Iteración 0: cálculo de error con valores iniciales
fx_i_1 = f(x_i_1);
fx_i = f(x_i);
error0 = abs((x_i - x_i_1) / x_i) * 100;
error0_red = round(error0, decimales_redondeo);
tabla(1, :) = [0, x_i_1, x_i, fx_i_1, fx_i, NaN, error0_red];
fprintf('\nIteración 0 (usando valores iniciales):\n');
fprintf('
f(%.5f) = %.8f\n', x_i_1, fx_i_1);
fprintf('
f(%.5f) = %.8f\n', x_i, fx_i);
fprintf('
Error = |%.5f - %.5f| / |%.5f| * 100 = %.8f%%\n', x_i, x_i_1, x_i, error0_red);
% Iteraciones siguientes
for i = 1:maxIter
fx_i_1 = f(x_i_1);
fx_i = f(x_i);
exp_fx_i_1(i) = sprintf('(%.5f)^2 - 2*%.5f*exp(-%.5f) + exp(-2*%.5f)', ...
x_i_1, x_i_1, x_i_1, x_i_1);
exp_fx_i(i) = sprintf('(%.5f)^2 - 2*%.5f*exp(-%.5f) + exp(-2*%.5f)', ...
x_i, x_i, x_i, x_i);
fprintf('\nIteración %d:\n', i);
fprintf('1. Evaluación de f(x_{i-1}):\n');
fprintf('
f(%.5f) = %s = %.8f\n', x_i_1, exp_fx_i_1(i), fx_i_1);
fprintf('2. Evaluación de f(x_i):\n');
fprintf('
f(%.5f) = %s = %.8f\n', x_i, exp_fx_i(i), fx_i);
fprintf('3. Aplicación de la fórmula de la secante:\n');
fprintf('
x_{i+1} = x_i - f(x_i) * (x_i - x_{i-1}) / (f(x_i) - f(x_{i-1}))\n');
fprintf('
x_{i+1} = %.8f - (%.8f * (%.8f - %.8f)) / (%.8f - %.8f)\n', ...
x_i, fx_i, x_i, x_i_1, fx_i, fx_i_1);
x_i1 = x_i - fx_i*(x_i - x_i_1)/(fx_i - fx_i_1);
fprintf('
Resultado: x_{i+1} = %.8f\n', x_i1);
error = abs((x_i1 - x_i)/x_i1) * 100;
error_red = round(error, decimales_redondeo);
fprintf('4. Cálculo del error relativo:\n');
fprintf('
Error = |%.8f - %.8f| / |%.8f| * 100 = %.8f%%\n', x_i1, x_i, x_i1, error_red);
tabla(i+1, :) = [i, x_i_1, x_i, fx_i_1, fx_i, x_i1, error_red];
if error <= tol * 100
fprintf('\nConvergencia alcanzada con error <= %.e\n', tol);
fprintf('
Error redondeado a %d decimales = %.8f\n', decimales_redondeo, error_red);
fprintf('
Tolerancia alcanzada en iteración %d (error = %.8f <= tol = %.8f)\n', i,
error_red, tol);
fprintf('------------------------------------------------\n');
fprintf('Raíz aproximada: x = %.8f\n', x_i1);
break;
end
x_i_1 = x_i;
x_i = x_i1;
end
% Mostrar tabla final
fprintf('\nTabla de resultados:\n');
fprintf('Iter\tX_i-1\t\tX_i\t\tf(X_i-1)\t\tf(X_i)\t\tX_i+1\t\tError (%%)\n');
fprintf('----------------------------------------------------------------------------------------\n');
for j = 1:i+1
if isnan(tabla(j,6))
fprintf('%4d\t%.8f\t%.8f\t%.8f\t%.8f\t%s\t%.8f%%\n', ...
tabla(j,1), tabla(j,2), tabla(j,3), tabla(j,4), tabla(j,5), 'N/A', tabla(j,7));
else
fprintf('%4d\t%.8f\t%.8f\t%.8f\t%.8f\t%.8f\t%.8f%%\n', ...
tabla(j,1), tabla(j,2), tabla(j,3), tabla(j,4), tabla(j,5), tabla(j,6),
tabla(j,7));
end
end
Resolucion del ejercicio
Método de la Secante - Ejercicio 2
f(x) = x^2 - 2x*e^(-x) + e^(-2x)
Resolución detallada de cada iteración con fórmulas:
Iteración 0 (usando valores iniciales):
f(0.00000) = 1.00000000
f(1.00000) = 0.39957640
Error = |1.00000 - 0.00000| / |1.00000| * 100 = 100.00000000%
Iteración 1:
1. Evaluación de f(x_{i-1}):
f(0.00000) = (0.00000)^2 - 2*0.00000*exp(-0.00000) + exp(-2*0.00000) = 1.00000000
2. Evaluación de f(x_i):
f(1.00000) = (1.00000)^2 - 2*1.00000*exp(-1.00000) + exp(-2*1.00000) = 0.39957640
3. Aplicación de la fórmula de la secante:
x_{i+1} = x_i - f(x_i) * (x_i - x_{i-1}) / (f(x_i) - f(x_{i-1}))
x_{i+1} = 1.00000000 - (0.39957640 * (1.00000000 - 0.00000000)) / (0.39957640 - 1.00000000)
Resultado: x_{i+1} = 1.66549083
4. Cálculo del error relativo:
Error = |1.66549083 - 1.00000000| / |1.66549083| * 100 = 39.95764009%
Iteración 2:
1. Evaluación de f(x_{i-1}):
f(1.00000) = (1.00000)^2 - 2*1.00000*exp(-1.00000) + exp(-2*1.00000) = 0.39957640
2. Evaluación de f(x_i):
f(1.66549) = (1.66549)^2 - 2*1.66549*exp(-1.66549) + exp(-2*1.66549) = 2.17973633
3. Aplicación de la fórmula de la secante:
x_{i+1} = x_i - f(x_i) * (x_i - x_{i-1}) / (f(x_i) - f(x_{i-1}))
x_{i+1} = 1.66549083 - (2.17973633 * (1.66549083 - 1.00000000)) / (2.17973633 - 0.39957640)
Resultado: x_{i+1} = 0.85062329
4. Cálculo del error relativo:
Error = |0.85062329 - 1.66549083| / |0.85062329| * 100 = 95.79652363%
Iteración 3:
1. Evaluación de f(x_{i-1}):
f(1.66549) = (1.66549)^2 - 2*1.66549*exp(-1.66549) + exp(-2*1.66549) = 2.17973633
2. Evaluación de f(x_i):
f(0.85062) = (0.85062)^2 - 2*0.85062*exp(-0.85062) + exp(-2*0.85062) = 0.17933080
3. Aplicación de la fórmula de la secante:
x_{i+1} = x_i - f(x_i) * (x_i - x_{i-1}) / (f(x_i) - f(x_{i-1}))
x_{i+1} = 0.85062329 - (0.17933080 * (0.85062329 - 1.66549083)) / (0.17933080 - 2.17973633)
Resultado: x_{i+1} = 0.77757268
4. Cálculo del error relativo:
Error = |0.77757268 - 0.85062329| / |0.77757268| * 100 = 9.39469919%
Iteración 4:
1. Evaluación de f(x_{i-1}):
f(0.85062) = (0.85062)^2 - 2*0.85062*exp(-0.85062) + exp(-2*0.85062) = 0.17933080
2. Evaluación de f(x_i):
f(0.77757) = (0.77757)^2 - 2*0.77757*exp(-0.77757) + exp(-2*0.77757) = 0.10115747
3. Aplicación de la fórmula de la secante:
x_{i+1} = x_i - f(x_i) * (x_i - x_{i-1}) / (f(x_i) - f(x_{i-1}))
x_{i+1} = 0.77757268 - (0.10115747 * (0.77757268 - 0.85062329)) / (0.10115747 - 0.17933080)
Resultado: x_{i+1} = 0.68304409
4. Cálculo del error relativo:
Error = |0.68304409 - 0.77757268| / |0.68304409| * 100 = 13.83930910%
Iteración 5:
1. Evaluación de f(x_{i-1}):
f(0.77757) = (0.77757)^2 - 2*0.77757*exp(-0.77757) + exp(-2*0.77757) = 0.10115747
2. Evaluación de f(x_i):
f(0.68304) = (0.68304)^2 - 2*0.68304*exp(-0.68304) + exp(-2*0.68304) = 0.03167223
3. Aplicación de la fórmula de la secante:
x_{i+1} = x_i - f(x_i) * (x_i - x_{i-1}) / (f(x_i) - f(x_{i-1}))
x_{i+1} = 0.68304409 - (0.03167223 * (0.68304409 - 0.77757268)) / (0.03167223 - 0.10115747)
Resultado: x_{i+1} = 0.63995679
4. Cálculo del error relativo:
Error = |0.63995679 - 0.68304409| / |0.63995679| * 100 = 6.73284603%
Iteración 6:
1. Evaluación de f(x_{i-1}):
f(0.68304) = (0.68304)^2 - 2*0.68304*exp(-0.68304) + exp(-2*0.68304) = 0.03167223
2. Evaluación de f(x_i):
f(0.63996) = (0.63996)^2 - 2*0.63996*exp(-0.63996) + exp(-2*0.63996) = 0.01268813
3. Aplicación de la fórmula de la secante:
x_{i+1} = x_i - f(x_i) * (x_i - x_{i-1}) / (f(x_i) - f(x_{i-1}))
x_{i+1} = 0.63995679 - (0.01268813 * (0.63995679 - 0.68304409)) / (0.01268813 - 0.03167223)
Resultado: x_{i+1} = 0.61115917
4. Cálculo del error relativo:
Error = |0.61115917 - 0.63995679| / |0.61115917| * 100 = 4.71196709%
Iteración 7:
1. Evaluación de f(x_{i-1}):
f(0.63996) = (0.63996)^2 - 2*0.63996*exp(-0.63996) + exp(-2*0.63996) = 0.01268813
2. Evaluación de f(x_i):
f(0.61116) = (0.61116)^2 - 2*0.61116*exp(-0.61116) + exp(-2*0.61116) = 0.00468373
3. Aplicación de la fórmula de la secante:
x_{i+1} = x_i - f(x_i) * (x_i - x_{i-1}) / (f(x_i) - f(x_{i-1}))
x_{i+1} = 0.61115917 - (0.00468373 * (0.61115917 - 0.63995679)) / (0.00468373 - 0.01268813)
Resultado: x_{i+1} = 0.59430840
4. Cálculo del error relativo:
Error = |0.59430840 - 0.61115917| / |0.59430840| * 100 = 2.83535746%
Iteración 8:
1. Evaluación de f(x_{i-1}):
f(0.61116) = (0.61116)^2 - 2*0.61116*exp(-0.61116) + exp(-2*0.61116) = 0.00468373
2. Evaluación de f(x_i):
f(0.59431) = (0.59431)^2 - 2*0.59431*exp(-0.59431) + exp(-2*0.59431) = 0.00179473
3. Aplicación de la fórmula de la secante:
x_{i+1} = x_i - f(x_i) * (x_i - x_{i-1}) / (f(x_i) - f(x_{i-1}))
x_{i+1} = 0.59430840 - (0.00179473 * (0.59430840 - 0.61115917)) / (0.00179473 - 0.00468373)
Resultado: x_{i+1} = 0.58384022
4. Cálculo del error relativo:
Error = |0.58384022 - 0.59430840| / |0.58384022| * 100 = 1.79298710%
Iteración 9:
1. Evaluación de f(x_{i-1}):
f(0.59431) = (0.59431)^2 - 2*0.59431*exp(-0.59431) + exp(-2*0.59431) = 0.00179473
2. Evaluación de f(x_i):
f(0.58384) = (0.58384)^2 - 2*0.58384*exp(-0.58384) + exp(-2*0.58384) = 0.00068058
3. Aplicación de la fórmula de la secante:
x_{i+1} = x_i - f(x_i) * (x_i - x_{i-1}) / (f(x_i) - f(x_{i-1}))
x_{i+1} = 0.58384022 - (0.00068058 * (0.58384022 - 0.59430840)) / (0.00068058 - 0.00179473)
Resultado: x_{i+1} = 0.57744576
4. Cálculo del error relativo:
Error = |0.57744576 - 0.58384022| / |0.57744576| * 100 = 1.10736929%
Iteración 10:
1. Evaluación de f(x_{i-1}):
f(0.58384) = (0.58384)^2 - 2*0.58384*exp(-0.58384) + exp(-2*0.58384) = 0.00068058
2. Evaluación de f(x_i):
f(0.57745) = (0.57745)^2 - 2*0.57745*exp(-0.57745) + exp(-2*0.57745) = 0.00025971
3. Aplicación de la fórmula de la secante:
x_{i+1} = x_i - f(x_i) * (x_i - x_{i-1}) / (f(x_i) - f(x_{i-1}))
x_{i+1} = 0.57744576 - (0.00025971 * (0.57744576 - 0.58384022)) / (0.00025971 - 0.00068058)
Resultado: x_{i+1} = 0.57349990
4. Cálculo del error relativo:
Error = |0.57349990 - 0.57744576| / |0.57349990| * 100 = 0.68803250%
Iteración 11:
1. Evaluación de f(x_{i-1}):
f(0.57745) = (0.57745)^2 - 2*0.57745*exp(-0.57745) + exp(-2*0.57745) = 0.00025971
2. Evaluación de f(x_i):
f(0.57350) = (0.57350)^2 - 2*0.57350*exp(-0.57350) + exp(-2*0.57350) = 0.00009901
3. Aplicación de la fórmula de la secante:
x_{i+1} = x_i - f(x_i) * (x_i - x_{i-1}) / (f(x_i) - f(x_{i-1}))
x_{i+1} = 0.57349990 - (0.00009901 * (0.57349990 - 0.57744576)) / (0.00009901 - 0.00025971)
Resultado: x_{i+1} = 0.57106883
4. Cálculo del error relativo:
Error = |0.57106883 - 0.57349990| / |0.57106883| * 100 = 0.42570543%
Iteración 12:
1. Evaluación de f(x_{i-1}):
f(0.57350) = (0.57350)^2 - 2*0.57350*exp(-0.57350) + exp(-2*0.57350) = 0.00009901
2. Evaluación de f(x_i):
f(0.57107) = (0.57107)^2 - 2*0.57107*exp(-0.57107) + exp(-2*0.57107) = 0.00003779
3. Aplicación de la fórmula de la secante:
x_{i+1} = x_i - f(x_i) * (x_i - x_{i-1}) / (f(x_i) - f(x_{i-1}))
x_{i+1} = 0.57106883 - (0.00003779 * (0.57106883 - 0.57349990)) / (0.00003779 - 0.00009901)
Resultado: x_{i+1} = 0.56956800
4. Cálculo del error relativo:
Error = |0.56956800 - 0.57106883| / |0.56956800| * 100 = 0.26350279%
Iteración 13:
1. Evaluación de f(x_{i-1}):
f(0.57107) = (0.57107)^2 - 2*0.57107*exp(-0.57107) + exp(-2*0.57107) = 0.00003779
2. Evaluación de f(x_i):
f(0.56957) = (0.56957)^2 - 2*0.56957*exp(-0.56957) + exp(-2*0.56957) = 0.00001443
3. Aplicación de la fórmula de la secante:
x_{i+1} = x_i - f(x_i) * (x_i - x_{i-1}) / (f(x_i) - f(x_{i-1}))
x_{i+1} = 0.56956800 - (0.00001443 * (0.56956800 - 0.57106883)) / (0.00001443 - 0.00003779)
Resultado: x_{i+1} = 0.56864136
4. Cálculo del error relativo:
Error = |0.56864136 - 0.56956800| / |0.56864136| * 100 = 0.16295640%
Iteración 14:
1. Evaluación de f(x_{i-1}):
f(0.56957) = (0.56957)^2 - 2*0.56957*exp(-0.56957) + exp(-2*0.56957) = 0.00001443
2. Evaluación de f(x_i):
f(0.56864) = (0.56864)^2 - 2*0.56864*exp(-0.56864) + exp(-2*0.56864) = 0.00000551
3. Aplicación de la fórmula de la secante:
x_{i+1} = x_i - f(x_i) * (x_i - x_{i-1}) / (f(x_i) - f(x_{i-1}))
x_{i+1} = 0.56864136 - (0.00000551 * (0.56864136 - 0.56956800)) / (0.00000551 - 0.00001443)
Resultado: x_{i+1} = 0.56806895
4. Cálculo del error relativo:
Error = |0.56806895 - 0.56864136| / |0.56806895| * 100 = 0.10076410%
Iteración 15:
1. Evaluación de f(x_{i-1}):
f(0.56864) = (0.56864)^2 - 2*0.56864*exp(-0.56864) + exp(-2*0.56864) = 0.00000551
2. Evaluación de f(x_i):
f(0.56807) = (0.56807)^2 - 2*0.56807*exp(-0.56807) + exp(-2*0.56807) = 0.00000210
3. Aplicación de la fórmula de la secante:
x_{i+1} = x_i - f(x_i) * (x_i - x_{i-1}) / (f(x_i) - f(x_{i-1}))
x_{i+1} = 0.56806895 - (0.00000210 * (0.56806895 - 0.56864136)) / (0.00000210 - 0.00000551)
Resultado: x_{i+1} = 0.56771531
4. Cálculo del error relativo:
Error = |0.56771531 - 0.56806895| / |0.56771531| * 100 = 0.06229247%
Iteración 16:
1. Evaluación de f(x_{i-1}):
f(0.56807) = (0.56807)^2 - 2*0.56807*exp(-0.56807) + exp(-2*0.56807) = 0.00000210
2. Evaluación de f(x_i):
f(0.56772) = (0.56772)^2 - 2*0.56772*exp(-0.56772) + exp(-2*0.56772) = 0.00000080
3. Aplicación de la fórmula de la secante:
x_{i+1} = x_i - f(x_i) * (x_i - x_{i-1}) / (f(x_i) - f(x_{i-1}))
x_{i+1} = 0.56771531 - (0.00000080 * (0.56771531 - 0.56806895)) / (0.00000080 - 0.00000210)
Resultado: x_{i+1} = 0.56749679
4. Cálculo del error relativo:
Error = |0.56749679 - 0.56771531| / |0.56749679| * 100 = 0.03850597%
Iteración 17:
1. Evaluación de f(x_{i-1}):
f(0.56772) = (0.56772)^2 - 2*0.56772*exp(-0.56772) + exp(-2*0.56772) = 0.00000080
2. Evaluación de f(x_i):
f(0.56750) = (0.56750)^2 - 2*0.56750*exp(-0.56750) + exp(-2*0.56750) = 0.00000031
3. Aplicación de la fórmula de la secante:
x_{i+1} = x_i - f(x_i) * (x_i - x_{i-1}) / (f(x_i) - f(x_{i-1}))
x_{i+1} = 0.56749679 - (0.00000031 * (0.56749679 - 0.56771531)) / (0.00000031 - 0.00000080)
Resultado: x_{i+1} = 0.56736175
4. Cálculo del error relativo:
Error = |0.56736175 - 0.56749679| / |0.56736175| * 100 = 0.02380056%
Iteración 18:
1. Evaluación de f(x_{i-1}):
f(0.56750) = (0.56750)^2 - 2*0.56750*exp(-0.56750) + exp(-2*0.56750) = 0.00000031
2. Evaluación de f(x_i):
f(0.56736) = (0.56736)^2 - 2*0.56736*exp(-0.56736) + exp(-2*0.56736) = 0.00000012
3. Aplicación de la fórmula de la secante:
x_{i+1} = x_i - f(x_i) * (x_i - x_{i-1}) / (f(x_i) - f(x_{i-1}))
x_{i+1} = 0.56736175 - (0.00000012 * (0.56736175 - 0.56749679)) / (0.00000012 - 0.00000031)
Resultado: x_{i+1} = 0.56727830
4. Cálculo del error relativo:
Error = |0.56727830 - 0.56736175| / |0.56727830| * 100 = 0.01471057%
Iteración 19:
1. Evaluación de f(x_{i-1}):
f(0.56736) = (0.56736)^2 - 2*0.56736*exp(-0.56736) + exp(-2*0.56736) = 0.00000012
2. Evaluación de f(x_i):
f(0.56728) = (0.56728)^2 - 2*0.56728*exp(-0.56728) + exp(-2*0.56728) = 0.00000004
3. Aplicación de la fórmula de la secante:
x_{i+1} = x_i - f(x_i) * (x_i - x_{i-1}) / (f(x_i) - f(x_{i-1}))
x_{i+1} = 0.56727830 - (0.00000004 * (0.56727830 - 0.56736175)) / (0.00000004 - 0.00000012)
Resultado: x_{i+1} = 0.56722673
4. Cálculo del error relativo:
Error = |0.56722673 - 0.56727830| / |0.56722673| * 100 = 0.00909201%
Iteración 20:
1. Evaluación de f(x_{i-1}):
f(0.56728) = (0.56728)^2 - 2*0.56728*exp(-0.56728) + exp(-2*0.56728) = 0.00000004
2. Evaluación de f(x_i):
f(0.56723) = (0.56723)^2 - 2*0.56723*exp(-0.56723) + exp(-2*0.56723) = 0.00000002
3. Aplicación de la fórmula de la secante:
x_{i+1} = x_i - f(x_i) * (x_i - x_{i-1}) / (f(x_i) - f(x_{i-1}))
x_{i+1} = 0.56722673 - (0.00000002 * (0.56722673 - 0.56727830)) / (0.00000002 - 0.00000004)
Resultado: x_{i+1} = 0.56719486
4. Cálculo del error relativo:
Error = |0.56719486 - 0.56722673| / |0.56719486| * 100 = 0.00561932%
Iteración 21:
1. Evaluación de f(x_{i-1}):
f(0.56723) = (0.56723)^2 - 2*0.56723*exp(-0.56723) + exp(-2*0.56723) = 0.00000002
2. Evaluación de f(x_i):
f(0.56719) = (0.56719)^2 - 2*0.56719*exp(-0.56719) + exp(-2*0.56719) = 0.00000001
3. Aplicación de la fórmula de la secante:
x_{i+1} = x_i - f(x_i) * (x_i - x_{i-1}) / (f(x_i) - f(x_{i-1}))
x_{i+1} = 0.56719486 - (0.00000001 * (0.56719486 - 0.56722673)) / (0.00000001 - 0.00000002)
Resultado: x_{i+1} = 0.56717516
4. Cálculo del error relativo:
Error = |0.56717516 - 0.56719486| / |0.56717516| * 100 = 0.00347299%
Iteración 22:
1. Evaluación de f(x_{i-1}):
f(0.56719) = (0.56719)^2 - 2*0.56719*exp(-0.56719) + exp(-2*0.56719) = 0.00000001
2. Evaluación de f(x_i):
f(0.56718) = (0.56718)^2 - 2*0.56718*exp(-0.56718) + exp(-2*0.56718) = 0.00000000
3. Aplicación de la fórmula de la secante:
x_{i+1} = x_i - f(x_i) * (x_i - x_{i-1}) / (f(x_i) - f(x_{i-1}))
x_{i+1} = 0.56717516 - (0.00000000 * (0.56717516 - 0.56719486)) / (0.00000000 - 0.00000001)
Resultado: x_{i+1} = 0.56716299
4. Cálculo del error relativo:
Error = |0.56716299 - 0.56717516| / |0.56716299| * 100 = 0.00214644%
Iteración 23:
1. Evaluación de f(x_{i-1}):
f(0.56718) = (0.56718)^2 - 2*0.56718*exp(-0.56718) + exp(-2*0.56718) = 0.00000000
2. Evaluación de f(x_i):
f(0.56716) = (0.56716)^2 - 2*0.56716*exp(-0.56716) + exp(-2*0.56716) = 0.00000000
3. Aplicación de la fórmula de la secante:
x_{i+1} = x_i - f(x_i) * (x_i - x_{i-1}) / (f(x_i) - f(x_{i-1}))
x_{i+1} = 0.56716299 - (0.00000000 * (0.56716299 - 0.56717516)) / (0.00000000 - 0.00000000)
Resultado: x_{i+1} = 0.56715546
4. Cálculo del error relativo:
Error = |0.56715546 - 0.56716299| / |0.56715546| * 100 = 0.00132658%
Iteración 24:
1. Evaluación de f(x_{i-1}):
f(0.56716) = (0.56716)^2 - 2*0.56716*exp(-0.56716) + exp(-2*0.56716) = 0.00000000
2. Evaluación de f(x_i):
f(0.56716) = (0.56716)^2 - 2*0.56716*exp(-0.56716) + exp(-2*0.56716) = 0.00000000
3. Aplicación de la fórmula de la secante:
x_{i+1} = x_i - f(x_i) * (x_i - x_{i-1}) / (f(x_i) - f(x_{i-1}))
x_{i+1} = 0.56715546 - (0.00000000 * (0.56715546 - 0.56716299)) / (0.00000000 - 0.00000000)
Resultado: x_{i+1} = 0.56715081
4. Cálculo del error relativo:
Error = |0.56715081 - 0.56715546| / |0.56715081| * 100 = 0.00081988%
Convergencia alcanzada con error <= 1e-05
Error redondeado a 8 decimales = 0.00081988
Tolerancia alcanzada en iteración 24 (error = 0.00081988 <= tol = 0.00001000)
-----------------------------------------------Raíz aproximada: x = 0.56715081
Tabla de resultados:
Iter X_i-1
X_i
f(X_i-1)
f(X_i)
X_i+1
Error (%)
----------------------------------------------------------------------------------------0 0.00000000
1.00000000
1.00000000
0.39957640
N/A
100.00000000%
1 0.00000000
1.00000000
1.00000000
0.39957640
1.66549083
39.95764009%
2 1.00000000
1.66549083
0.39957640
2.17973633
0.85062329
95.79652363%
3 1.66549083
0.85062329
2.17973633
0.17933080
0.77757268
9.39469919%
4 0.85062329
0.77757268
0.17933080
0.10115747
0.68304409
13.83930910%
5 0.77757268
0.68304409
0.10115747
0.03167223
0.63995679
6.73284603%
6 0.68304409
0.63995679
0.03167223
0.01268813
0.61115917
4.71196709%
7 0.63995679
0.61115917
0.01268813
0.00468373
0.59430840
2.83535746%
8 0.61115917
0.59430840
0.00468373
0.00179473
0.58384022
1.79298710%
9 0.59430840
0.58384022
0.00179473
0.00068058
0.57744576
1.10736929%
10 0.58384022
0.57744576
0.00068058
0.00025971
0.57349990
0.68803250%
11 0.57744576
0.57349990
0.00025971
0.00009901
0.57106883
0.42570543%
12 0.57349990
0.57106883
0.00009901
0.00003779
0.56956800
0.26350279%
13 0.57106883
0.56956800
0.00003779
0.00001443
0.56864136
0.16295640%
14 0.56956800
0.56864136
0.00001443
0.00000551
0.56806895
0.10076410%
15 0.56864136
0.56806895
0.00000551
0.00000210
0.56771531
0.06229247%
16 0.56806895
0.56771531
0.00000210
0.00000080
0.56749679
0.03850597%
17 0.56771531
0.56749679
0.00000080
0.00000031
0.56736175
0.02380056%
18 0.56749679
0.56736175
0.00000031
0.00000012
0.56727830
0.01471057%
19 0.56736175
0.56727830
0.00000012
0.00000004
0.56722673
0.00909201%
20 0.56727830
0.56722673
0.00000004
0.00000002
0.56719486
0.00561932%
21 0.56722673
0.56719486
0.00000002
0.00000001
0.56717516
0.00347299%
22 0.56719486
0.56717516
0.00000001
0.00000000
0.56716299
0.00214644%
23 0.56717516
0.56716299
0.00000000
0.00000000
0.56715546
0.00132658%
24 0.56716299
0.56715546
0.00000000
0.00000000
0.56715081
0.00081988%
>>
Ejercicio 3
% Método de la Secante: f(x) = (x - 2)^2 - ln(x)
clc;
clear;
% Definición de la función
f = @(x) (x - 2).^2 - log(x);
% Condiciones iniciales
x_i_1 = 1;
x_i = 2;
tol = 1e-5;
maxIter = 100;
decimales_redondeo = 6;
% Inicializar almacenamiento para la tabla
tabla = zeros(maxIter, 7);
fprintf('Método de la Secante - Ejercicio 3\n');
fprintf('f(x) = (x - 2)^2 - ln(x)\n');
fprintf('\nFÓRMULAS GENERALES UTILIZADAS:\n');
fprintf('1. Secante: x_{i+1} = x_i - f(x_i) * (x_i - x_{i-1}) / (f(x_i) - f(x_{i-1}))\n');
fprintf('2. Error relativo: Error = |x_{i+1} - x_i| / |x_{i+1}| * 100\n');
fprintf('\nResolución detallada de cada iteración con fórmulas:\n');
for i = 1:maxIter
fx_i_1 = f(x_i_1);
fx_i = f(x_i);
fprintf('\nIteración %d:\n', i);
% Paso 1: Evaluación de f(x_{i-1})
fprintf('1. Evaluación de f(x_{i-1}):\n');
fprintf('
f(%.5f) = (%.5f - 2)^2 - ln(%.5f) = %.6f\n', x_i_1, x_i_1, x_i_1, fx_i_1);
% Paso 2: Evaluación de f(x_i)
fprintf('2. Evaluación de f(x_i):\n');
fprintf('
f(%.5f) = (%.5f - 2)^2 - ln(%.5f) = %.6f\n', x_i, x_i, x_i, fx_i);
% Paso 3: Aplicación de la fórmula de la secante
fprintf('3. Aplicación de la fórmula de la secante:\n');
fprintf('
x_{i+1} = %.6f - (%.6f * (%.6f - %.6f)) / (%.6f - %.6f)\n', ...
x_i, fx_i, x_i, x_i_1, fx_i, fx_i_1);
x_i1 = x_i - fx_i * (x_i - x_i_1) / (fx_i - fx_i_1);
fprintf('
Resultado: x_{i+1} = %.6f\n', x_i1);
% Paso 4: Cálculo del error relativo en porcentaje
error = abs((x_i1 - x_i) / x_i1) * 100;
error_red = round(error, decimales_redondeo);
fprintf('4. Cálculo del error relativo:\n');
fprintf('
Error = |%.6f - %.6f| / |%.6f| * 100 = %.6f%%\n', x_i1, x_i, x_i1, error_red);
% Guardar en la tabla
tabla(i, :) = [i, x_i_1, x_i, fx_i_1, fx_i, x_i1, error_red];
% Verificar tolerancia
if error <= tol * 100
fprintf('\nConvergencia alcanzada con error <= %.e\n', tol);
fprintf('
Tolerancia alcanzada en iteración %d (error = %.6f%% <= tol = %.6f%%)\n',
i, error_red, tol*100);
break;
end
% Actualizar valores
x_i_1 = x_i;
x_i = x_i1;
end
if i == maxIter
fprintf('\nNo se alcanzó la tolerancia en %d iteraciones.\n', maxIter);
end
% Imprimir tabla final
fprintf('\nTabla de resultados:\n');
fprintf('Iter\tX_i-1\t\tX_i\t\tf(X_i-1)\t\tf(X_i)\t\tX_i+1\t\tError (%%)\n');
fprintf('----------------------------------------------------------------------------------------\n');
for j = 1:i
fprintf('%4d\t%.6f\t%.6f\t%.6f\t%.6f\t%.6f\t%.6f%%\n', ...
tabla(j,1), tabla(j,2), tabla(j,3), tabla(j,4), tabla(j,5), tabla(j,6), tabla(j,7));
end
Resolucion del ejercicio
Método de la Secante - Ejercicio 3
f(x) = (x - 2)^2 - ln(x)
FÓRMULAS GENERALES UTILIZADAS:
1. Secante: x_{i+1} = x_i - f(x_i) * (x_i - x_{i-1}) / (f(x_i) - f(x_{i-1}))
2. Error relativo: Error = |x_{i+1} - x_i| / |x_{i+1}| * 100
Resolución detallada de cada iteración con fórmulas:
Iteración 1:
1. Evaluación de f(x_{i-1}):
f(1.00000) = (1.00000 - 2)^2 - ln(1.00000) = 1.000000
2. Evaluación de f(x_i):
f(2.00000) = (2.00000 - 2)^2 - ln(2.00000) = -0.693147
3. Aplicación de la fórmula de la secante:
x_{i+1} = 2.000000 - (-0.693147 * (2.000000 - 1.000000)) / (-0.693147 - 1.000000)
Resultado: x_{i+1} = 1.590616
4. Cálculo del error relativo:
Error = |1.590616 - 2.000000| / |1.590616| * 100 = 25.737442%
Iteración 2:
1. Evaluación de f(x_{i-1}):
f(2.00000) = (2.00000 - 2)^2 - ln(2.00000) = -0.693147
2. Evaluación de f(x_i):
f(1.59062) = (1.59062 - 2)^2 - ln(1.59062) = -0.296526
3. Aplicación de la fórmula de la secante:
x_{i+1} = 1.590616 - (-0.296526 * (1.590616 - 2.000000)) / (-0.296526 - -0.693147)
Resultado: x_{i+1} = 1.284548
4. Cálculo del error relativo:
Error = |1.284548 - 1.590616| / |1.284548| * 100 = 23.826926%
Iteración 3:
1. Evaluación de f(x_{i-1}):
f(1.59062) = (1.59062 - 2)^2 - ln(1.59062) = -0.296526
2. Evaluación de f(x_i):
f(1.28455) = (1.28455 - 2)^2 - ln(1.28455) = 0.261465
3. Aplicación de la fórmula de la secante:
x_{i+1} = 1.284548 - (0.261465 * (1.284548 - 1.590616)) / (0.261465 - -0.296526)
Resultado: x_{i+1} = 1.427966
4. Cálculo del error relativo:
Error = |1.427966 - 1.284548| / |1.427966| * 100 = 10.043534%
Iteración 4:
1. Evaluación de f(x_{i-1}):
f(1.28455) = (1.28455 - 2)^2 - ln(1.28455) = 0.261465
2. Evaluación de f(x_i):
f(1.42797) = (1.42797 - 2)^2 - ln(1.42797) = -0.029028
3. Aplicación de la fórmula de la secante:
x_{i+1} = 1.427966 - (-0.029028 * (1.427966 - 1.284548)) / (-0.029028 - 0.261465)
Resultado: x_{i+1} = 1.413635
4. Cálculo del error relativo:
Error = |1.413635 - 1.427966| / |1.413635| * 100 = 1.013803%
Iteración 5:
1. Evaluación de f(x_{i-1}):
f(1.42797) = (1.42797 - 2)^2 - ln(1.42797) = -0.029028
2. Evaluación de f(x_i):
f(1.41363) = (1.41363 - 2)^2 - ln(1.41363) = -0.002340
3. Aplicación de la fórmula de la secante:
x_{i+1} = 1.413635 - (-0.002340 * (1.413635 - 1.427966)) / (-0.002340 - -0.029028)
Resultado: x_{i+1} = 1.412378
4. Cálculo del error relativo:
Error = |1.412378 - 1.413635| / |1.412378| * 100 = 0.088960%
Iteración 6:
1. Evaluación de f(x_{i-1}):
f(1.41363) = (1.41363 - 2)^2 - ln(1.41363) = -0.002340
2. Evaluación de f(x_i):
f(1.41238) = (1.41238 - 2)^2 - ln(1.41238) = 0.000024
3. Aplicación de la fórmula de la secante:
x_{i+1} = 1.412378 - (0.000024 * (1.412378 - 1.413635)) / (0.000024 - -0.002340)
Resultado: x_{i+1} = 1.412391
4. Cálculo del error relativo:
Error = |1.412391 - 1.412378| / |1.412391| * 100 = 0.000920%
Convergencia alcanzada con error <= 1e-05
Tolerancia alcanzada en iteración 6 (error = 0.000920% <= tol = 0.001000%)
Tabla de resultados:
Iter
X_i-1
X_i
f(X_i-1)
f(X_i)
X_i+1
Error (%)
----------------------------------------------------------------------------------------1
1.000000
2.000000
1.000000
-0.693147
1.590616
25.737442%
2
2.000000
1.590616
-0.693147
-0.296526
1.284548
23.826926%
3
1.590616
1.284548
-0.296526
0.261465
1.427966
10.043534%
4
1.284548
1.427966
0.261465
-0.029028
1.413635
1.013803%
5
1.427966
1.413635
-0.029028
-0.002340
1.412378
0.088960%
6
1.413635
1.412378
-0.002340
0.000024
1.412391
0.000920%
>>
Ejercicio 4
% Método de la Secante: f(x) = e^(-x) - ln|x|
clc;
clear;
% Definición de la función
f = @(x) exp(-x) - log(abs(x));
% Condiciones iniciales
x_i_1 = 1;
x_i = 2;
tol = 1e-5;
maxIter = 100;
decimales_redondeo = 6;
% Inicializar almacenamiento para la tabla
tabla = zeros(maxIter, 7);
exp_fx_i_1 = strings(maxIter,1);
exp_fx_i = strings(maxIter,1);
fprintf('Método de la Secante - Ejercicio 4\n');
fprintf('f(x) = e^(-x) - ln|x|\n');
fprintf('\nFÓRMULAS GENERALES UTILIZADAS:\n');
fprintf('1. Secante: x_{i+1} = x_i - f(x_i) * (x_i - x_{i-1}) / (f(x_i) - f(x_{i-1}))\n');
fprintf('2. Error relativo: Error = |x_{i+1} - x_i| / |x_{i+1}| * 100\n');
fprintf('\nResolución detallada de cada iteración con fórmulas:\n');
% Iteración 0: cálculo de error con valores iniciales
fx_i_1 = f(x_i_1);
fx_i = f(x_i);
error0 = abs((x_i - x_i_1) / x_i) * 100;
error0_red = round(error0, decimales_redondeo);
tabla(1, :) = [0, x_i_1, x_i, fx_i_1, fx_i, NaN, error0_red];
fprintf('\nIteración 0 (usando valores iniciales):\n');
fprintf('
f(%.5f) = %.6f\n', x_i_1, fx_i_1);
fprintf('
f(%.5f) = %.6f\n', x_i, fx_i);
fprintf('
Error = |%.5f - %.5f| / |%.5f| * 100 = %.6f%%\n', x_i, x_i_1, x_i, error0_red);
% Iteraciones siguientes
for i = 1:maxIter
fx_i_1 = f(x_i_1);
fx_i = f(x_i);
exp_fx_i_1(i) = sprintf('exp(-%.5f) - ln|%.5f|', x_i_1, x_i_1);
exp_fx_i(i) = sprintf('exp(-%.5f) - ln|%.5f|', x_i, x_i);
fprintf('\nIteración %d:\n', i);
fprintf('1. Evaluación de f(x_{i-1}):\n');
fprintf('
f(%.5f) = %s = %.6f\n', x_i_1, exp_fx_i_1(i), fx_i_1);
fprintf('2. Evaluación de f(x_i):\n');
fprintf('
f(%.5f) = %s = %.6f\n', x_i, exp_fx_i(i), fx_i);
fprintf('3. Aplicación de la fórmula de la secante:\n');
fprintf('
x_{i+1} = x_i - f(x_i) * (x_i - x_{i-1}) / (f(x_i) - f(x_{i-1}))\n');
fprintf('
x_{i+1} = %.6f - (%.6f * (%.6f - %.6f)) / (%.6f - %.6f)\n', ...
x_i, fx_i, x_i, x_i_1, fx_i, fx_i_1);
x_i1 = x_i - fx_i*(x_i - x_i_1)/(fx_i - fx_i_1);
fprintf('
Resultado: x_{i+1} = %.6f\n', x_i1);
error = abs((x_i1 - x_i)/x_i1) * 100;
error_red = round(error, decimales_redondeo);
fprintf('4. Cálculo del error relativo:\n');
fprintf('
Error = |%.6f - %.6f| / |%.6f| * 100 = %.6f%%\n', x_i1, x_i, x_i1, error_red);
tabla(i+1, :) = [i, x_i_1, x_i, fx_i_1, fx_i, x_i1, error_red];
if error <= tol * 100
fprintf('\nConvergencia alcanzada con error <= %.e\n', tol);
fprintf('
Error redondeado a %d decimales = %.6f\n', decimales_redondeo, error_red);
fprintf('
Tolerancia alcanzada en iteración %d (error = %.6f <= tol = %.6f)\n', i,
error_red, tol);
fprintf('------------------------------------------------\n');
fprintf('Raíz aproximada: x = %.6f\n', x_i1);
break;
end
x_i_1 = x_i;
x_i = x_i1;
end
if i == maxIter
fprintf('\nNo se alcanzó la tolerancia en %d iteraciones.\n', maxIter);
end
fprintf('\nTabla de resultados:\n');
fprintf('Iter\tX_i-1\t\tX_i\t\tf(X_i-1)\t\tf(X_i)\t\tX_i+1\t\tError (%%)\n');
fprintf('----------------------------------------------------------------------------------------\n');
for j = 1:i+1
if isnan(tabla(j,6))
fprintf('%4d\t%.6f\t%.6f\t%.6f\t%.6f\t%s\t%.6f%%\n', ...
tabla(j,1), tabla(j,2), tabla(j,3), tabla(j,4), tabla(j,5), 'N/A', tabla(j,7));
else
fprintf('%4d\t%.6f\t%.6f\t%.6f\t%.6f\t%.6f\t%.6f%%\n', ...
tabla(j,1), tabla(j,2), tabla(j,3), tabla(j,4), tabla(j,5), tabla(j,6),
tabla(j,7));
end
end
Resolucion del ejercicio
Método de la Secante - Ejercicio 4
f(x) = e^(-x) - ln|x|
FÓRMULAS GENERALES UTILIZADAS:
1. Secante: x_{i+1} = x_i - f(x_i) * (x_i - x_{i-1}) / (f(x_i) - f(x_{i-1}))
2. Error relativo: Error = |x_{i+1} - x_i| / |x_{i+1}| * 100
Resolución detallada de cada iteración con fórmulas:
Iteración 0 (usando valores iniciales):
f(1.00000) = 0.367879
f(2.00000) = -0.557812
Error = |2.00000 - 1.00000| / |2.00000| * 100 = 50.000000%
Iteración 1:
1. Evaluación de f(x_{i-1}):
f(1.00000) = exp(-1.00000) - ln|1.00000| = 0.367879
2. Evaluación de f(x_i):
f(2.00000) = exp(-2.00000) - ln|2.00000| = -0.557812
3. Aplicación de la fórmula de la secante:
x_{i+1} = x_i - f(x_i) * (x_i - x_{i-1}) / (f(x_i) - f(x_{i-1}))
x_{i+1} = 2.000000 - (-0.557812 * (2.000000 - 1.000000)) / (-0.557812 - 0.367879)
Resultado: x_{i+1} = 1.397410
4. Cálculo del error relativo:
Error = |1.397410 - 2.000000| / |1.397410| * 100 = 43.121869%
Iteración 2:
1. Evaluación de f(x_{i-1}):
f(2.00000) = exp(-2.00000) - ln|2.00000| = -0.557812
2. Evaluación de f(x_i):
f(1.39741) = exp(-1.39741) - ln|1.39741| = -0.087385
3. Aplicación de la fórmula de la secante:
x_{i+1} = x_i - f(x_i) * (x_i - x_{i-1}) / (f(x_i) - f(x_{i-1}))
x_{i+1} = 1.397410 - (-0.087385 * (1.397410 - 2.000000)) / (-0.087385 - -0.557812)
Resultado: x_{i+1} = 1.285476
4. Cálculo del error relativo:
Error = |1.285476 - 1.397410| / |1.285476| * 100 = 8.707619%
Iteración 3:
1. Evaluación de f(x_{i-1}):
f(1.39741) = exp(-1.39741) - ln|1.39741| = -0.087385
2. Evaluación de f(x_i):
f(1.28548) = exp(-1.28548) - ln|1.28548| = 0.025390
3. Aplicación de la fórmula de la secante:
x_{i+1} = x_i - f(x_i) * (x_i - x_{i-1}) / (f(x_i) - f(x_{i-1}))
x_{i+1} = 1.285476 - (0.025390 * (1.285476 - 1.397410)) / (0.025390 - -0.087385)
Resultado: x_{i+1} = 1.310677
4. Cálculo del error relativo:
Error = |1.310677 - 1.285476| / |1.310677| * 100 = 1.922720%
Iteración 4:
1. Evaluación de f(x_{i-1}):
f(1.28548) = exp(-1.28548) - ln|1.28548| = 0.025390
2. Evaluación de f(x_i):
f(1.31068) = exp(-1.31068) - ln|1.31068| = -0.000906
3. Aplicación de la fórmula de la secante:
x_{i+1} = x_i - f(x_i) * (x_i - x_{i-1}) / (f(x_i) - f(x_{i-1}))
x_{i+1} = 1.310677 - (-0.000906 * (1.310677 - 1.285476)) / (-0.000906 - 0.025390)
Resultado: x_{i+1} = 1.309808
4. Cálculo del error relativo:
Error = |1.309808 - 1.310677| / |1.309808| * 100 = 0.066297%
Iteración 5:
1. Evaluación de f(x_{i-1}):
f(1.31068) = exp(-1.31068) - ln|1.31068| = -0.000906
2. Evaluación de f(x_i):
f(1.30981) = exp(-1.30981) - ln|1.30981| = -0.000009
3. Aplicación de la fórmula de la secante:
x_{i+1} = x_i - f(x_i) * (x_i - x_{i-1}) / (f(x_i) - f(x_{i-1}))
x_{i+1} = 1.309808 - (-0.000009 * (1.309808 - 1.310677)) / (-0.000009 - -0.000906)
Resultado: x_{i+1} = 1.309800
4. Cálculo del error relativo:
Error = |1.309800 - 1.309808| / |1.309800| * 100 = 0.000673%
Convergencia alcanzada con error <= 1e-05
Error redondeado a 6 decimales = 0.000673
Tolerancia alcanzada en iteración 5 (error = 0.000673 <= tol = 0.000010)
-----------------------------------------------Raíz aproximada: x = 1.309800
Tabla de resultados:
Iter
X_i-1
X_i
f(X_i-1)
f(X_i)
X_i+1
Error (%)
----------------------------------------------------------------------------------------0
1.000000
2.000000
0.367879
-0.557812
N/A
1
1.000000
2.000000
0.367879
-0.557812
1.397410
43.121869%
2
2.000000
1.397410
-0.557812
-0.087385
1.285476
8.707619%
3
1.397410
1.285476
-0.087385
0.025390
1.310677
1.922720%
4
1.285476
1.310677
0.025390
-0.000906
1.309808
0.066297%
5
1.310677
1.309808
-0.000906
-0.000009
1.309800
0.000673%
>>
Ejercicio 5
% Método de la Secante: f(x) = ln(x - 1) + cos(x - 1)
clc;
clear;
% Definición de la función
f = @(x) log(x - 1) + cos(x - 1);
% Condiciones iniciales
x_i_1 = 1.3;
x_i = 2;
tol = 1e-5;
maxIter = 100;
decimales_redondeo = 6;
% Inicializar almacenamiento para la tabla
tabla = zeros(maxIter, 7);
fprintf('Método de la Secante - Ejercicio\n');
fprintf('f(x) = ln(x - 1) + cos(x - 1)\n');
fprintf('\nFÓRMULAS GENERALES UTILIZADAS:\n');
50.000000%
fprintf('1. Secante: x_{i+1} = x_i - f(x_i) * (x_i - x_{i-1}) / (f(x_i) - f(x_{i-1}))\n');
fprintf('2. Error relativo: Error = |x_{i+1} - x_i| / |x_{i+1}| * 100\n');
% Iteración 0: cálculo de error con valores iniciales
fx_i_1 = f(x_i_1);
fx_i = f(x_i);
error0 = abs((x_i - x_i_1) / x_i) * 100;
error0_red = round(error0, decimales_redondeo);
tabla(1, :) = [0, x_i_1, x_i, fx_i_1, fx_i, NaN, error0_red];
fprintf('\nIteración 0 (usando valores iniciales):\n');
fprintf('
f(%.5f) = %.6f\n', x_i_1, fx_i_1);
fprintf('
f(%.5f) = %.6f\n', x_i, fx_i);
fprintf('
Error = |%.5f - %.5f| / |%.5f| * 100 = %.6f%%\n', x_i, x_i_1, x_i, error0_red);
% Iteraciones siguientes
for i = 1:maxIter
fx_i_1 = f(x_i_1);
fx_i = f(x_i);
fprintf('\nIteración %d:\n', i);
fprintf('1. Evaluación de f(x_{i-1}): f(%.5f) = %.6f\n', x_i_1, fx_i_1);
fprintf('2. Evaluación de f(x_i):
f(%.5f) = %.6f\n', x_i, fx_i);
fprintf('3. Aplicación de la fórmula de la secante:\n');
fprintf('
x_{i+1} = %.6f - (%.6f * (%.6f - %.6f)) / (%.6f - %.6f)\n', ...
x_i, fx_i, x_i, x_i_1, fx_i, fx_i_1);
x_i1 = x_i - fx_i*(x_i - x_i_1)/(fx_i - fx_i_1);
fprintf('
Resultado: x_{i+1} = %.6f\n', x_i1);
error = abs((x_i1 - x_i)/x_i1) * 100;
error_red = round(error, decimales_redondeo);
fprintf('4. Cálculo del error relativo:\n');
fprintf('
Error = |%.6f - %.6f| / |%.6f| * 100 = %.6f%%\n', x_i1, x_i, x_i1, error_red);
tabla(i+1, :) = [i, x_i_1, x_i, fx_i_1, fx_i, x_i1, error_red];
if error <= tol * 100
fprintf('\nConvergencia alcanzada con error <= %.e%%\n', tol * 100);
fprintf('
Tolerancia alcanzada en iteración %d (error = %.6f%% <= tol = %.6f%%)\n',
...
i, error_red, tol * 100);
fprintf('------------------------------------------------\n');
fprintf('Raíz aproximada: x = %.6f\n', x_i1);
break;
end
x_i_1 = x_i;
x_i = x_i1;
end
if i == maxIter
fprintf('\nNo se alcanzó la tolerancia en %d iteraciones.\n', maxIter);
end
% Mostrar tabla final
fprintf('\nTabla de resultados:\n');
fprintf('Iter\tX_i-1\t\tX_i\t\tf(X_i-1)\t\tf(X_i)\t\tX_i+1\t\tError (%%)\n');
fprintf('----------------------------------------------------------------------------------------\n');
for j = 1:i+1
if isnan(tabla(j,6))
fprintf('%4d\t%.6f\t%.6f\t%.6f\t%.6f\t%s\t%.6f%%\n', ...
tabla(j,1), tabla(j,2), tabla(j,3), tabla(j,4), tabla(j,5), 'N/A', tabla(j,7));
else
fprintf('%4d\t%.6f\t%.6f\t%.6f\t%.6f\t%.6f\t%.6f%%\n', ...
tabla(j,1), tabla(j,2), tabla(j,3), tabla(j,4), tabla(j,5), tabla(j,6),
tabla(j,7));
end
end
Resolcuion del ejercicio
Método de la Secante - Ejercicio
f(x) = ln(x - 1) + cos(x - 1)
FÓRMULAS GENERALES UTILIZADAS:
1. Secante: x_{i+1} = x_i - f(x_i) * (x_i - x_{i-1}) / (f(x_i) - f(x_{i-1}))
2. Error relativo: Error = |x_{i+1} - x_i| / |x_{i+1}| * 100
Iteración 0 (usando valores iniciales):
f(1.30000) = -0.248636
f(2.00000) = 0.540302
Error = |2.00000 - 1.30000| / |2.00000| * 100 = 35.000000%
Iteración 1:
1. Evaluación de f(x_{i-1}): f(1.30000) = -0.248636
2. Evaluación de f(x_i): f(2.00000) = 0.540302
3. Aplicación de la fórmula de la secante:
x_{i+1} = 2.000000 - (0.540302 * (2.000000 - 1.300000)) / (0.540302 - -0.248636)
Resultado: x_{i+1} = 1.520607
4. Cálculo del error relativo:
Error = |1.520607 - 2.000000| / |1.520607| * 100 = 31.526419%
Iteración 2:
1. Evaluación de f(x_{i-1}): f(2.00000) = 0.540302
2. Evaluación de f(x_i): f(1.52061) = 0.214758
3. Aplicación de la fórmula de la secante:
x_{i+1} = 1.520607 - (0.214758 * (1.520607 - 2.000000)) / (0.214758 - 0.540302)
Resultado: x_{i+1} = 1.204358
4. Cálculo del error relativo:
Error = |1.204358 - 1.520607| / |1.204358| * 100 = 26.258760%
Iteración 3:
1. Evaluación de f(x_{i-1}): f(1.52061) = 0.214758
2. Evaluación de f(x_i): f(1.20436) = -0.608692
3. Aplicación de la fórmula de la secante:
x_{i+1} = 1.204358 - (-0.608692 * (1.204358 - 1.520607)) / (-0.608692 - 0.214758)
Resultado: x_{i+1} = 1.438128
4. Cálculo del error relativo:
Error = |1.438128 - 1.204358| / |1.438128| * 100 = 16.255209%
Iteración 4:
1. Evaluación de f(x_{i-1}): f(1.20436) = -0.608692
2. Evaluación de f(x_i): f(1.43813) = 0.080304
3. Aplicación de la fórmula de la secante:
x_{i+1} = 1.438128 - (0.080304 * (1.438128 - 1.204358)) / (0.080304 - -0.608692)
Resultado: x_{i+1} = 1.410882
4. Cálculo del error relativo:
Error = |1.410882 - 1.438128| / |1.410882| * 100 = 1.931170%
Iteración 5:
1. Evaluación de f(x_{i-1}): f(1.43813) = 0.080304
2. Evaluación de f(x_i): f(1.41088) = 0.027320
3. Aplicación de la fórmula de la secante:
x_{i+1} = 1.410882 - (0.027320 * (1.410882 - 1.438128)) / (0.027320 - 0.080304)
Resultado: x_{i+1} = 1.396833
4. Cálculo del error relativo:
Error = |1.396833 - 1.410882| / |1.396833| * 100 = 1.005751%
Iteración 6:
1. Evaluación de f(x_{i-1}): f(1.41088) = 0.027320
2. Evaluación de f(x_i): f(1.39683) = -0.001950
3. Aplicación de la fórmula de la secante:
x_{i+1} = 1.396833 - (-0.001950 * (1.396833 - 1.410882)) / (-0.001950 - 0.027320)
Resultado: x_{i+1} = 1.397769
4. Cálculo del error relativo:
Error = |1.397769 - 1.396833| / |1.397769| * 100 = 0.066945%
Iteración 7:
1. Evaluación de f(x_{i-1}): f(1.39683) = -0.001950
2. Evaluación de f(x_i): f(1.39777) = 0.000044
3. Aplicación de la fórmula de la secante:
x_{i+1} = 1.397769 - (0.000044 * (1.397769 - 1.396833)) / (0.000044 - -0.001950)
Resultado: x_{i+1} = 1.397749
4. Cálculo del error relativo:
Error = |1.397749 - 1.397769| / |1.397749| * 100 = 0.001466%
Iteración 8:
1. Evaluación de f(x_{i-1}): f(1.39777) = 0.000044
2. Evaluación de f(x_i): f(1.39775) = 0.000000
3. Aplicación de la fórmula de la secante:
x_{i+1} = 1.397749 - (0.000000 * (1.397749 - 1.397769)) / (0.000000 - 0.000044)
Resultado: x_{i+1} = 1.397748
4. Cálculo del error relativo:
Error = |1.397748 - 1.397749| / |1.397748| * 100 = 0.000002%
Convergencia alcanzada con error <= 1e-03%
Tolerancia alcanzada en iteración 8 (error = 0.000002% <= tol = 0.001000%)
-----------------------------------------------Raíz aproximada: x = 1.397748
Tabla de resultados:
Iter
X_i-1
X_i
f(X_i-1)
f(X_i)
X_i+1
Error (%)
----------------------------------------------------------------------------------------0
1.300000
2.000000
-0.248636
0.540302
N/A
1
1.300000
2.000000
-0.248636
0.540302
1.520607
31.526419%
2
2.000000
1.520607
0.540302
0.214758
1.204358
26.258760%
3
1.520607
1.204358
0.214758
-0.608692
1.438128
16.255209%
4
1.204358
1.438128
-0.608692
0.080304
1.410882
1.931170%
5
1.438128
1.410882
0.080304
0.027320
1.396833
1.005751%
6
1.410882
1.396833
0.027320
-0.001950
1.397769
0.066945%
7
1.396833
1.397769
-0.001950
0.000044
1.397749
0.001466%
8
1.397769
1.397749
0.000044
0.000000
1.397748
0.000002%
>>
35.000000%
0
Puede agregar este documento a su colección de estudio (s)
Iniciar sesión Disponible sólo para usuarios autorizadosPuede agregar este documento a su lista guardada
Iniciar sesión Disponible sólo para usuarios autorizados(Para quejas, use otra forma )