0% encontró este documento útil (0 votos)
3 vistas13 páginas

Métodos Numéricos para Encontrar Raíces

El documento presenta una serie de problemas y ejemplos relacionados con métodos numéricos para encontrar raíces de funciones, incluyendo el método de Newton-Raphson, iteración de punto fijo, y el método de la secante. Se incluyen gráficos y resultados de cálculos para ilustrar la solución de sistemas de ecuaciones y optimización lineal. Además, se discuten aplicaciones prácticas como la extracción de recursos y el análisis de funciones matemáticas.

Cargado por

stevenjb2002
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
3 vistas13 páginas

Métodos Numéricos para Encontrar Raíces

El documento presenta una serie de problemas y ejemplos relacionados con métodos numéricos para encontrar raíces de funciones, incluyendo el método de Newton-Raphson, iteración de punto fijo, y el método de la secante. Se incluyen gráficos y resultados de cálculos para ilustrar la solución de sistemas de ecuaciones y optimización lineal. Además, se discuten aplicaciones prácticas como la extracción de recursos y el análisis de funciones matemáticas.

Cargado por

stevenjb2002
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

PROBLEMAS CHAPRA

NOMBE: Steven Jaramillo FECHA: 23/07/2024


%EJEMPLO 6.3
f=@(x) exp(-x)-x;
df=@(x) -exp(-x)-1;
x0=0;
tol=0.001;
iter=100;
xi=x0;
for i=1:iter
xi_=xi-f(xi)/df(xi);
fprintf('Iteración %d: x = %.10f, Error = %.10f\n',i,xi_,abs(xi_-xi));
if abs(xi_ - xi) < tol
break;
end
xi=xi_;
end
fprintf('La raíz aproximada es x = %.10f después de %d iteraciones\n',xi_,i);

%EJEMPLO 6.5
f=@(x) x^10-1;
df=@(x) 10*x^9;
x0=0.5;
tol=1e-8;
iter=100;
xi=x0;
fprintf('Iteración\t x\n');
for i=0:iter
xi_=xi-f(xi)/df(xi);
fprintf('%d\t\t %.10f\n',i,xi);
if abs(xi_-xi)<tol
break;
end
xi=xi_;
end
fprintf('La raíz aproximada es x = %.10f después de %d iteraciones\n',xi_,i);

%Problema 6.1
g=@(x) 2*sin(sqrt(x));
x0=0.5;
tol=0.001/100;
iter=100;
xi=x0;
fprintf('Iteración\t x\t\t Error\n');
for i=1:iter
xi_=g(xi);
ea=abs((xi_-xi)/xi_)*100;
fprintf('%d\t\t %.10f\t %.10f\n',i,xi,ea);
if ea<tol
break;
end
xi=xi_;
end
fprintf('La raíz aproximada es x = %.10f después de %d iteraciones con un error relativo porcentual de
%.10f%%\n',xi_,i,ea);

%Problema 6.2
%(a):Gráfica
f=@(x) 2*x.^3-11.7*x.^2+17.7*x-5;
x=linspace(0,5,1000);
y=f(x);
figure;
plot(x,y,'b-','LineWidth',2);
hold on;
plot(x, zeros(size(x)),'k--');
title('Gráfica de f(x)=2x^3-11.7x^2+17.7x-5');
xlabel('x');
ylabel('f(x)');
grid on;
%(b):Iteración simple de punto fijo
g=@(x) nthroot((5+11.7*x.^2-17.7*x)/2,3);
x0=3;
iter=3;
fprintf('Iteración simple de punto fijo:\n');
xi=x0;
for i=1:iter
xi_=g(xi);
ea=abs((xi_-xi)/xi_)*100;
fprintf('Iteración %d: x=%.10f,Error=%.10f%%\n',i,xi_,ea);
xi=xi_;
end
%(c):Método de Newton-Raphson
f=@(x) 2*x.^3-11.7*x.^2+17.7*x - 5;
df=@(x) 6*x.^2-23.4*x+17.7;
x0=3;
iter=3;
ea=0.001;
fprintf('Método de Newton-Raphson:\n');
xi=x0;
for i=1:iter
xi_=xi-ea*f(xi)/df(xi);
ea=abs((xi_-xi)/xi_)*100;
fprintf('Iteración %d: x = %.10f, Error = %.10f%%\n',i,xi_,ea);
xi=xi_;
end
%(d):Método de la secante
f=@(x) 2*x.^3-11.7*x.^2+17.7*x-5;
x_m1=3;
x0=4;
iter=3;
fprintf('Método de la secante:\n');
for i=1:iter
xi_=x0-f(x0)*(x0-x_m1)/(f(x0)-f(x_m1));
ea=abs((xi_-x0)/xi_)*100;
fprintf('Iteración %d:x=%.10f,Error=%.10f%%\n',i,xi_,ea);
x_m1=x0;
x0=xi_;
end
%(e):Método de la secante modificado
f=@(x) 2*x.^3-11.7*x.^2+17.7*x-5;
x0=3;
d=0.01;
iter=3;
fprintf('Método de la secante modificado:\n');
for i=1:iter
f_x0=f(x0);
f_x0_=f(x0+d);
xi_=x0-f_x0*d/(f_x0_-f_x0);
ea=abs((xi_-x0)/xi_)*100;
fprintf('Iteración %d:x = %.10f,Error=%.10f%%\n',i,xi_,ea);
x0=xi_;
end

%Problema 6.3
f=@(x) -x^2+1.8*x+2.5;
g=@(x) sqrt(1.8*x+2.5);
df=@(x) -2*x+1.8;
x0=5;
es=0.05;
ea=100;
%(a):Método de iteración de punto fijo
fprintf('Iteración de punto fijo:\n');
xi=x0;
iter=0;
while ea>es
xi_n=g(xi);
ea=abs((xi_n-xi)/xi_n)*100;
fprintf('Iteración %d:x = %.10f, Error=%.10f%%\n',iter,xi_n,ea);
xi=xi_n;
iter=iter+1;
end
fprintf('Comprobación final de error para iteración de punto fijo: f(x) = %.10f\n', f(xi));
%(b):Método de Newton-Raphson
fprintf('\nMétodo de Newton-Raphson:\n');
xi=x0;
ea=100;
iter=0;
while ea>es
xi_n=xi-f(xi)/df(xi);
ea=abs((xi_n-xi)/xi_n)*100;
fprintf('Iteración %d: x=%.10f,Error=%.10f%%\n',iter,xi_n,ea);
xi=xi_n;
iter=iter+1;
end
fprintf('Comprobación final de error para Newton-Raphson: f(x) = %.10f\n',f(xi));

%Problema 6.5
f=@(x) -1+5.5*x-4*x^2+0.5*x^3;
df=@(x) 5.5-8*x+1.5*x^2;
tol=1e-6;
iter=100;
function [root,iter,ea]=newton_raphson(f,df,x0,tol,iter)
ea=100;
iter=0;
xi=x0;
while ea>tol && iter<iter
xi_n=xi-f(xi)/df(xi);
ea=abs((xi_n-xi)/xi_n)*100;
xi=xi_n;
iter=iter+1;
end
root=xi;
end
%(a):
x0_i=4.52;
[root_a,iter_a,ea_a]=newton_raphson(f,df,x0_i,tol,iter);
fprintf('Resultado con x0=4.52:raíz=%.10f,iteraciones=%d,error aproximado = %.10f%%\n',root_a,iter_a,ea_a);
%(b)
x0_b=4.54;
[rt_b,iter_b,ea_b]=newton_raphson(f,df,x0_b,tol,iter);
fprintf('Resultado con x0 = 4.54: raíz = %.10f, iteraciones = %d, error aproximado = %.10f%%\n', rt_b, iter_b,
ea_b);
x=linspace(4.5, 4.6, 400);
y=f(x);
figure;
plot(x, y,'b-',root_a,f(root_a),'ro',rt_b,f(rt_b),'go');
title('Método de Newton-Raphson para f(x)=-1+5.5x-4x^2+0.5x^3');
xlabel('x');
ylabel('f(x)');
legend('f(x)','Raíz con x0=4.52','Raíz con x0=4.54');
grid on;

%Problema 6.6
f=@(x) -12-21*x+18*x^2-2.4*x^3;
x0=-2;
x1=-3;
tol=1e-4;
iter_max=100;
iter=0;
while abs(x1-x0)>=tol && iter<iter_max
x2=x1-f(x1)*(x1-x0)/(f(x1)-f(x0));
x0=x1;
x1=x2;
iter=iter+1;
end
root_secante=x1;
fprintf('Raíz encontrada con el método de la secante: %.4f\n',root_secante);

%Problema 8.4
cent=12;
c0=5;
dr=0.85;
f=@(t) cent*(1-exp(-0.04*t))+c0*exp(-0.04*t);
t=fzero(@(t) f(t)-dr*cent,10);
fprintf('El tiempo requerido para que c sea el 85%% de cent es: %.2f unidades de tiempo\n', t);

%Problema 8.8
r=2;
L=5;
V=8.5;
f=@(h) (r^2*(pi/2-atan(sqrt((r-h)*(r+h)/(r^2-h^2))))-(r-h)*sqrt(2*r*h-h^2))*L-V;
h=fzero(f,1);
fprintf('La profundidad h del líquido es: %.4f metros\n', h);
%Problema 8.9
r=1;
V=0.75;
coefficients=[1,0,-V*3/(pi*r)];
roots_h=roots(coefficients);
h=max(roots_h);
fprintf('La profundidad h del líquido es: %.4f metros\n', h);

%Ejemplo 9.12
A=[3,-0.1,-0.2;0.1,7,-0.3;0.3,-0.2, 0];
B=[7.85;-19.3;71.4];
AB=[A,B];
n=size(AB,1);
for i=1:n
AB(i,:)=AB(i,:)/AB(i,i);
for j=1:n
if i~=j
AB(j,:)=AB(j,:)-AB(j,i)*AB(i,:);
end
end
end
solucion=AB(:,end);
fprintf('Solución del sistema de ecuaciones:\n');
fprintf('x1 = %.4f\n', solucion(1));
fprintf('x2 = %.4f\n', solucion(2));
fprintf('x3 = %.4f\n', solucion(3));

%Ejemplo 9.5
%a)
x2_1=@(x1) (1.1*x1+120)/10;
x2_2=@(x1) (2*x1-174)/17.4;
figure;
fplot(x2_1,[-10, 100],'LineWidth',2);
hold on;
fplot(x2_2,[-10, 100],'LineWidth',2);
grid on;
xlabel('x1');
ylabel('x2');
title('Gráfico del sistema de ecuaciones');
legend('-1.1x1+10x2=120', '-2x1+17.4x2=174', 'Location','best');
[x1_interseccion, x2_interseccion]=intersection(x2_1,x2_2,0,100);
fprintf('Solución gráfica del sistema de ecuaciones:\n');
fprintf('x1=%.4f\n',x1_interseccion);
fprintf('x2=%.4f\n',x2_interseccion);
ecuacion1=-1.1*x1_interseccion+10*x2_interseccion;
ecuacion2=-2*x1_interseccion+17.4*x2_interseccion;
fprintf('\nVerificación con sustitución:\n');
fprintf('Ecuación 1: %.4f\n', ecuacion1);
fprintf('Ecuación 2: %.4f\n', ecuacion2);
% b)
fprintf('\nDado que las ecuaciones intersectan en un único punto, el sistema es consistente y tiene una
solución única.\n');
%c)
A=[-1.1, 10; -2, 17.4];
determinante=det(A);
fprintf('\nDeterminante de la matriz de coeficientes A: %.4f\n', determinante);
%d)
B=[120; 174];
AB=[A, B];
n=size(AB,1);
for i=1:n-1
for j=i+1:n
factor=AB(j,i)/AB(i,i);
AB(j,:)=AB(j,:)-factor*AB(i,:);
end
end
x=zeros(n,1);
x(n)=AB(n,n+1)/AB(n,n);
for i=n-1:-1:1
sumatoria=0;
for j=i+1:n
sumatoria=sumatoria+AB(i,j)*x(j);
end
x(i)=(AB(i,n+1)-sumatoria)/AB(i,i);
end
fprintf('\nSolución por eliminación de incógnitas:\n');
fprintf('x1 = %.4f\n',x(1));
fprintf('x2 = %.4f\n',x(2));

%Ejemplo 9.11
A=[2,-6,-1;-3,-1,7;-8,1,-2];
B=[-38;-34;-20];
n=size(A,1);
for k=1:n-1
[~, maxRow]=max(abs(A(k:n,k)));
maxRow=maxRow+k-1;
if maxRow~=k
A([k maxRow],:)=A([maxRow k],:);
B([k maxRow])=B([maxRow k]);
end
for i=k+1:n
factor=A(i,k)/A(k,k);
A(i,k:n)=A(i,k:n)-factor*A(k,k:n);
B(i)=B(i)-factor*B(k);
end
end
X=zeros(n,1);
X(n)=B(n)/A(n,n);
for i=n-1:-1:1
X(i)=(B(i)-A(i,i+1:n)*X(i+1:n))/A(i,i);
end
fprintf('Solución por eliminación de Gauss con pivoteo parcial:\n');
fprintf('x1 = %.4f\n',X(1));
fprintf('x2 = %.4f\n',X(2));
fprintf('x3 = %.4f\n',X(3));

%Ejemplo 12.13
A=[-0.55,-0.25,-0.25;-0.30,-0.45,-0.20;-0.15,-0.30,-0.55];
b=[-4800;-5800;-5700];
c=[1;1;1];
[x,Z]=linprog(c,A,b);
fprintf('Cantidad a extraer de cada cantera:\n');
fprintf('Cantera 1: %.2f m3\n',x(1));
fprintf('Cantera 2: %.2f m3\n',x(2));
fprintf('Cantera 3: %.2f m3\n',x(3));
fprintf('\nCantidad total extraída: %.2f m3\n',sum(x));
fprintf('Valor objetivo (suma total extraída): %.2f\n',Z);

%Ejemplo 18.6
x0=1; fx0=0;
x1=4; fx1=1.386294;
x2=6; fx2=1.791760;
P1=@(x) fx0*(x-x1)/(x0-x1)+fx1*(x-x0)/(x1-x0);
P2=@(x) fx0*(x-x1)*(x-x2)/((x0-x1)*(x0-x2))+ ...
fx1*(x-x0)*(x-x2)/((x1-x0)*(x1-x2)) + ...
fx2*(x-x0)*(x-x1)/((x2-x0)*(x2-x1));
x_eval=linspace(0,7,100);
P1_eval=P1(x_eval);
P2_eval=P2(x_eval);
figure;
plot(x_eval, P1_eval, 'b-', 'LineWidth', 1.5);
hold on;
plot(x_eval, P2_eval, 'r-', 'LineWidth', 1.5);
plot([x0 x1 x2], [fx0 fx1 fx2], 'ko', 'MarkerFaceColor', 'k', 'MarkerSize', 8);
xlabel('x');
ylabel('f(x)');
title('Interpolación de Lagrange');
legend('P1(x) - Primer grado', 'P2(x) - Segundo grado', 'Puntos dados');
grid on;
hold off;
fprintf('Valor de P1(2) = %.6f\n', P1(2));
fprintf('Valor de P2(2) = %.6f\n', P2(2));

%Ejemplo 18.6
x0=1; fx0=0;
x1=4; fx1=1.386294;
x2=6; fx2=1.791760;
P1=@(x) fx0*(x-x1)/(x0-x1)+fx1*(x-x0)/(x1-x0);
P2=@(x) fx0*(x-x1)*(x-x2)/((x0-x1)*(x0-x2))+ ...
fx1*(x-x0)*(x-x2)/((x1-x0)*(x1-x2)) + ...
fx2*(x-x0)*(x-x1)/((x2-x0)*(x2-x1));
x_eval=linspace(0,7,100);
P1_eval=P1(x_eval);
P2_eval=P2(x_eval);
figure;
plot(x_eval, P1_eval, 'b-', 'LineWidth', 1.5);
hold on;
plot(x_eval, P2_eval, 'r-', 'LineWidth', 1.5);
plot([x0 x1 x2], [fx0 fx1 fx2], 'ko', 'MarkerFaceColor', 'k', 'MarkerSize', 8);
xlabel('x');
ylabel('f(x)');
title('Interpolación de Lagrange');
legend('P1(x) - Primer grado', 'P2(x) - Segundo grado', 'Puntos dados');
grid on;
hold off;
fprintf('Valor de P1(2) = %.6f\n', P1(2));
fprintf('Valor de P2(2) = %.6f\n', P2(2));
%Problema 18.1
%a)
log8=0.9030900;
log12=1.0791812;
x0=8;
x1=12;
x_interp=10;
log10_a=log8+(log12-log8)*(x_interp-x0)/(x1-x0);
log10_verdadero=log(10);
error_relativo_a=abs((log10_a-log10_verdadero)/log10_verdadero)*100;
fprintf('a) log(10) estimado (interpolación entre log 8 y log 12): %.6f\n', log10_a);
fprintf(' Error relativo porcentual: %.2f%%\n\n', error_relativo_a);
% b)
log9=0.9542425;
log11=1.0413927;
x0=9;
x1=11;
x_interp=10;
log10_b=log9+(log11-log9)*(x_interp-x0)/(x1-x0);
error_relativo_b=abs((log10_b-log10_verdadero)/log10_verdadero)*100;
fprintf('b) log(10) estimado (interpolación entre log 9 y log 11): %.6f\n',log10_b);
fprintf(' Error relativo porcentual: %.2f%%\n',error_relativo_b);

%Problema 18.22
%a)
v=[0.10377,0.11144,0.1254];
s=[6.4147,6.5453,6.7664];
v_inter=0.108;
s_linear=interp1(v,s,v_inter,'linear');
fprintf('a) Entropía estimada (interpolación lineal): %.4f kJ/kg·K\n',s_linear);
% b)
s_quadratic=interp1(v,s,v_inter,'pchip');
fprintf('b) Entropía estimada (interpolación cuadrática): %.4f kJ/kg·K\n',s_quadratic);
%c)
s_inverse=6.6;
v_inverse=interp1(s,v,s_inverse, 'linear', 'extrap');
fprintf('c) Volumen específico estimado para s = 6.6 kJ/kg·K: %.4f m^3/kg\n',v_inverse);

%Ejemplo 21.1
f=@(x) 0.2+25*x-200*x.^2+675*x.^3-900*x.^4+400*x.^5;
a=0;
b=0.8;
n=100;
h=(b-a)/n;
x=a:h:b;
y=f(x);
integral=h*(sum(y)-0.5*(y(1)+y(end)));
fprintf('La integral de f(x) es aproximadamente: %.6f\n', a, b, integral);
%Problema 21.1
f=@(x) 1-exp(-2*x);
a=0;
b=4;
%a)
integral_=4-0.5+exp(-8)/2;
fprintf('a): %.10f\n',integral_);
%b)
TS=(b-a)/2*(f(a)+f(b));
errorTR=abs((TS-integral_)/integral_)*100;
fprintf('b) Regla del trapecio (una sola aplicación): %.10f\n',TS);
fprintf('Error relativo porcentual: %.4f%%\n',errorTR);
%c)
n2=2;
n4=4;
h2=(b-a)/n2;
h4=(b-a)/n4;
x2=a:h2:b;
x4=a:h4:b;
TR_2=h2*(sum(f(x2))-0.5*(f(a)+f(b)));
TR_4=h4*(sum(f(x4))-0.5*(f(a)+f(b)));
errorTR_2=abs((TR_2-integral_)/integral_)*100;
errorTR_4=abs((TR_4-integral_)/integral_)*100;
fprintf('c) Regla del trapecio (n=2): %.10f\n',TR_2);
fprintf('Error relativo porcentual (n=2): %.4f%%\n',errorTR_2);

%Problema 21.2
f=@(x) 6+cos(x);
a=0;
b=pi/2;
%a)
Int=3*pi/2+1;
fprintf('a)Integral analítica: %.5f\n',Int);
% b) Regla del trapecio con una aplicación
Regla_Trap=(b-a)/2*(f(a)+f(b));
Error_RT=abs((Regla_Trap-Int)/Int)*100;
fprintf('b) Regla del trapecio (una sola aplicación): %.10f\n',Regla_Trap);
fprintf('Error relativo porcentual: %.4f%%\n',Error_RT);
% c) Regla del trapecio múltiple
n2=2;
n4=4;
h2=(b-a)/n2;
h4=(b-a)/n4;
x2=a:h2:b;
x4=a:h4:b;
RT_M_2=h2*(sum(f(x2))-0.5*(f(a)+f(b)));
RT_M_4=h4*(sum(f(x4))-0.5*(f(a)+f(b)));
ErrorTR_2=abs((RT_M_2-Int)/Int)*100;
Error_TR_4=abs((RT_M_4-Int)/Int)*100;
fprintf('c) Regla del trapecio (n=2): %.10f\n',RT_M_2);
fprintf('Error relativo porcentual (n=2): %.4f%%\n',ErrorTR_2);
fprintf('Regla del trapecio (n=4): %.10f\n',RT_M_4);
fprintf('Error relativo porcentual (n=4): %.4f%%\n',Error_TR_4);
% d) Regla de Simpson
Regla_Simpson=(b-a)/6*(f(a)+4*f((a)))

%Problema 21.3
f=@(x) 1-x-4*x.^3+2*x.^5;
a=-4;
b=-2;
% a)
Eval=1.3333-1097.3333;
fprintf('a)Integral analítica: %.10f\n',Eval);
% b) Regla del trapecio con una aplicación
RT=(b-a)/2*(f(a)+f(b));
Error_TR=abs((RT-Eval)/Eval)*100;
fprintf('b) Regla del trapecio: %.5f\n',RT);
fprintf('Error relativo porcentual: %.4f%%\n',Error_TR);
% c) Regla del trapecio múltiple
n2=2;
n4=4;
h2=(b-a)/n2;
h4=(b-a)/n4;
x2=a:h2:b;
x4=a:h4:b;
TR_M_2=h2*(sum(f(x2))-0.5*(f(a)+f(b)));
TR_M_4=h4*(sum(f(x4))-0.5*(f(a)+f(b)));
Error_TR_2=abs((TR_M_2-Eval)/Eval)*100;
Error_TR_4=abs((TR_M_4-Eval)/Eval)*100;
fprintf('c) Regla del trapecio (n=2): %.10f\n', TR_M_2);
fprintf('Error relativo porcentual (n=2): %.4f%%\n', Error_TR_2);
fprintf('Regla del trapecio (n=4): %.10f\n', TR_M_4);
fprintf('Error relativo porcentual (n=4):%.4f%%\n',Error_TR_4)

%Problema 21.5
f=@(x) (4*x-3).^3;
a=-3;
b=5;
%a) Evaluación analítica
Int=5210.0625-3164.0625;
fprintf('a) Integral analítica: %.5f\n',Int);
% b) Regla de Simpson
n4=4;
h4=(b-a)/n4;
x4=a:h4:b;
RS_4=h4/3*(f(x4(1))+4*sum(f(x4(2:2:end-1)))+2*sum(f(x4(3:2:end-2)))+f(x4(end)));
Error_s_4=abs((RS_4-Int)/Int)*100;
fprintf('b) Regla de Simpson 1/3: %.10f\n',RS_4);
fprintf('Error relativo porcentual: %.4f%%\n',Error_s_4);
% c) Regla de Simpson 1/3
n5=5;
h5=(b-a)/n5;
x5=a:h5:b;
simpson_5=h5/3*(f(x5(1))+4*sum(f(x5(2:2:end-1)))+2*sum(f(x5(3:2:end-2)))+f(x5(end)));
error_S_5=abs((simpson_5 - Int) / Int) * 100;
fprintf('c) Regla de Simpson 1/3 (n = 5):%.10f\n',simpson_5);
fprintf('Error relativo porcentual (n = 5):%.4f%%\n',error_S_5);

%Problema 23.1
f=@(x) cos(x);
Derivada_corr=-sqrt(2)/2;
%Evaluación y salto
x=pi/4;
h=pi/12;
%Oh
Adelante_Oh=(f(x+h)-f(x))/h;
Atras_Oh=(f(x)-f(x-h))/h;
%O(h^2)
Adelante_Oh2=(-f(x+2*h)+4*f(x+h)-3*f(x))/(2*h);
Atras_Oh2=(3*f(x)-4*f(x-h)+f(x-2*h))/(2*h);
%Central (O(h^2) y O(h^4))
Central_Oh2=(f(x+h)-f(x-h))/(2*h);
Central_Oh4=(-f(x+2*h)+8*f(x+h)-8*f(x-h)+f(x-2*h))/(12*h);
%Errores porcentuales
error_Adel_Oh=abs((Adelante_Oh-Derivada_corr)/Derivada_corr)*100;
error_Atras_Oh=abs((Atras_Oh-Derivada_corr)/Derivada_corr)*100;
error_Adel_Oh2=abs((Adelante_Oh2-Derivada_corr)/Derivada_corr)*100;
error_Atr_Oh2=abs((Atras_Oh2-Derivada_corr)/Derivada_corr)*100;
error_central_Oh2=abs((Central_Oh2-Derivada_corr)/Derivada_corr)*100;
error_central_Oh4=abs((Central_Oh4-Derivada_corr)/Derivada_corr)*100;
fprintf('Diferencia Hacia Adelante (O(h)): %.10f, Error: %.4f%%\n',Adelante_Oh,error_Adel_Oh);
fprintf('Diferencia Hacia Atrás (O(h)): %.10f, Error: %.4f%%\n',Atras_Oh,error_Atras_Oh);
fprintf('Diferencia Hacia Adelante (O(h^2)): %.10f, Error: %.4f%%\n',Adelante_Oh2, error_Adel_Oh2);
fprintf('Diferencia Hacia Atrás (O(h^2)): %.10f, Error: %.4f%%\n',Atras_Oh2,error_Atr_Oh2);
fprintf('Diferencia Central (O(h^2)): %.10f, Error: %.4f%%\n',Central_Oh2,error_central_Oh2);
fprintf('Diferencia Central (O(h^4)): %.10f, Error: %.4f%%\n',Central_Oh4,error_central_Oh4);

%Problema 23.2
f=@(x) log(x);
%x=25
Derivada_corr=1/25;
%Evaluación y salto
x=25;
h=2;
%Oh
Adelante_Oh=(f(x+h)-f(x))/h;
Atras_Oh=(f(x)-f(x-h))/h;
%O(h^2)
Adelante_Oh2=(-f(x+2*h)+4*f(x+h)-3*f(x))/(2*h);
Atras_Oh2=(3*f(x)-4*f(x-h)+f(x-2*h))/(2*h);
%Central (O(h^2) y O(h^4))
Central_Oh2=(f(x+h)-f(x-h))/(2*h);
Central_Oh4=(-f(x+2*h)+8*f(x+h)-8*f(x-h)+f(x-2*h))/(12*h);
%Errores porcentuales
error_Adel_Oh=abs((Adelante_Oh-Derivada_corr)/Derivada_corr)*100;
error_Atras_Oh=abs((Atras_Oh-Derivada_corr)/Derivada_corr)*100;
error_Adel_Oh2=abs((Adelante_Oh2-Derivada_corr)/Derivada_corr)*100;
error_Atr_Oh2=abs((Atras_Oh2-Derivada_corr)/Derivada_corr)*100;
error_central_Oh2=abs((Central_Oh2-Derivada_corr)/Derivada_corr)*100;
error_central_Oh4=abs((Central_Oh4-Derivada_corr)/Derivada_corr)*100;
fprintf('Diferencia Hacia Adelante (O(h)): %.10f, Error: %.4f%%\n',Adelante_Oh,error_Adel_Oh);
fprintf('Diferencia Hacia Atrás (O(h)): %.10f, Error: %.4f%%\n',Atras_Oh,error_Atras_Oh);
fprintf('Diferencia Hacia Adelante (O(h^2)): %.10f, Error: %.4f%%\n',Adelante_Oh2, error_Adel_Oh2);
fprintf('Diferencia Hacia Atrás (O(h^2)): %.10f, Error: %.4f%%\n',Atras_Oh2,error_Atr_Oh2);
fprintf('Diferencia Central (O(h^2)): %.10f, Error: %.4f%%\n',Central_Oh2,error_central_Oh2);
fprintf('Diferencia Central (O(h^4)): %.10f, Error: %.4f%%\n',Central_Oh4,error_central_Oh4);

%Problema 23.3
f=@(x) exp(x);
Primera_Der=exp(2); %x=2
Segunda_Der=exp(2); %x=2
%Evaluación y paso
x=2;
h=0.1;
%O(h^2)
Primera_Der_Oh2=(f(x+h)-f(x-h))/(2*h);
%O(h^4)
Primera_Der_Oh4=(-f(x+2*h)+8*f(x+h)-8*f(x-h)+f(x-2*h))/(12*h);
%O(h^2)
Segunda_Der_Oh2=(f(x+h)-2*f(x)+f(x-h))/h^2;
%O(h^4)
Segunda_Der_Oh4=(-f(x+2*h)+16*f(x+h)-30*f(x)+16*f(x-h)-f(x-2*h))/(12*h^2);
%Errores procentuales de la Primera Derivada
error_prim_Oh2=abs((Primera_Der_Oh2-Primera_Der)/Primera_Der)*100;
error_prim_Oh4=abs((Primera_Der_Oh4-Primera_Der)/Primera_Der)*100;
% Errores porcentuales de la Segunda Derivada)
error_segund_Oh2=abs((Segunda_Der_Oh2-Segunda_Der)/Segunda_Der)*100;
error_segund_Oh4=abs((Segunda_Der_Oh4-Segunda_Der)/Segunda_Der)*100;
fprintf('Primera Derivada O(h^2): %.4f, Error: %.4f%%\n', Primera_Der_Oh2, error_prim_Oh2);
fprintf('Primera Derivada O(h^4): %.4f, Error: %.4f%%\n', Primera_Der_Oh4, error_prim_Oh4);
fprintf('Segunda Derivada O(h^2): %.4f, Error: %.4f%%\n', Segunda_Der_Oh2, error_segund_Oh2);
fprintf('Segunda Derivada O(h^4): %.4f, Error: %.4f%%\n', Segunda_Der_Oh4, error_segund_Oh4);

%Problema 23.8
fun={@(x) x^3 + 4*x - 15,
@(x) x^2 + cos(x),
@(x) tan(x/3),
@(x) sin(0.5 * sqrt(x)) / x,
@(x) exp(x) + x};

%Evaluación de salto
xs=[0,0.4,3,1,2];
hs=[0.25,0.1,0.5,0.2,0.2];
%O(h^4)
for i=1:length(fun)
f=fun{i};
x=xs(i);
h=hs(i);
approx=(-f(x+2*h)+8*f(x+h)-8*f(x-h)+f(x-2*h)) /(12*h);
fprintf('Parte %c) f''(%.1f)=%.10f\n', 'a'+(i-1),x,approx);
end

%Problema 23.14
x=[-2,-1.5,-1,-0.5,0,0.5,1,1.5,2];
f=[0.05399,0.12952,0.24197,0.35207,0.39894,0.35207,0.24197,0.12952,0.5399];
%Rango -1 a 1
x1=[-1,-0.5,0,0.5,1];
f1=[0.24197,0.35207,0.39894,0.35207,0.24197];
% Integración usando la regla del trapecio
integral1=trapz(x1,f1);
disp(['La integral de x=-1 a x=1 es: ',num2str(integral1)]);
integral2 = trapz(x, f);
disp(['La integral de x=-2 a x=2 es: ', num2str(integral2)]);

%Problema 23.9
t=[0,25,50,75,100,125];
y=[0,32,58,78,92,100];
%Intervalo de tiempo
dt=t(2)-t(1);
v=zeros(size(t));
for i=2:length(t)-1
v(i)=(y(i+1)-y(i-1))/(2*dt);
end
v(1)=(y(2)-y(1))/dt;
v(end)=(y(end)-y(end-1))/dt;
a=zeros(size(t));
for i=2:length(t)-1
a(i)=(v(i+1)-v(i-1))/(2*dt);
end
a(1)=(v(2)-v(1))/dt;
a(end)=(v(end)-v(end-1))/dt;
disp('Tiempo (s) Distancia (km) Velocidad (km/s) Aceleración (km/s^2)');
for i = 1:length(t)
fprintf('%5d %15.2f %17.4f %16.4f\n',t(i),y(i),v(i),a(i));
end

%Problema 24.17
dist=[0 2 4 6 8 10 12];
prof=[0 2 3 4 3 2 1];
h=dist(2)-dist(1);
n=length(dist)-1;
Area_T=(h/2)*(prof(1)+2*sum(prof(2:end-1))+prof(end));
if mod(n,2)==0
area_simpson=(h/3)*(prof(1)+4*sum(prof(2:2:end-1))+2*sum(prof(3:2:end-2))+prof(end));
else
error('El número de intervalos debe ser par para aplicar la regla de Simpson 1/3.');
end
fprintf('Área estimada usando la regla del trapecio: %.4f m^2\n', Area_T);
fprintf('Área estimada usando la regla de Simpson 1/3: %.4f m^2\n', area_simpson);

%Problema 24.17
x=[0 2 4 6 8 10 12 14 16 18 20];
y=[0 1.8 2 4 6 4 3.6 3.4 2.8 0 0];
n=length(x)-1;
if mod(n, 2) ~=0
error('El número de intervalos debe ser par.');
end
h=(x(end)-x(1))/n;
area=y(1)+y(end);
for i=2:n
if mod(i,2)==0
area=area+4*y(i);
else
area=area+2*y(i);
end
end
area=area*(h/3);
fprintf('El área del terreno es aproximadamente %.2f metros cuadrados.\n', area);

También podría gustarte