#Métodos Numéricos - 2023. IMERL, Fing #Código de ejemplo para el ejercicio 16 del práctico 2 clear all; clc; format long; A=[1,2,1;2,1,1;1,1,1]; D=diag(diag(A)); E=-tril(A,-1); F=-triu(A,1); Q=D\(E+F); b=[1,1,1]'; r=D\b; sol_exacta=A\b; #Vaps y veps de Q [V,D]=eig(Q); ## #Elijo un x0 que haga que e0 #esté en el sep del primer vap de Q ## e0_1=V(:,1); disp('Primer vap de Q:'); disp(D(1,1)); disp('Primer vep de Q:'); disp(e0_1); x0=e0_1+sol_exacta; diff=inf; k=1; tol=1e-3; maxIter=10; x=x0; err1=[zeros(maxIter,1)]; while diff > tol && k < maxIter+1 vec = Q*x + r; diff = norm(x-vec); err1(k)=norm(x-sol_exacta); x = vec; k = k+1; end ## #Elijo un x0 que haga que e0 #esté en el sep del segundo vap de Q ## e0_2=V(:,2); disp('Segundo vap de Q:'); disp(D(2,2)); disp('Segundo vep de Q:'); disp(e0_2); x0=e0_2+sol_exacta; diff=inf; k=1; tol=1e-3; maxIter=10; x=x0; err2=zeros(maxIter,1); while diff > tol && k < maxIter+1 vec = Q*x + r; diff = norm(x-vec); err2(k)=norm(x-sol_exacta); x = vec; k = k+1; end ## #Elijo un x0 que haga que e0 #esté en el sep del tercer vap de Q ## e0_3=V(:,3); disp('Tercer vap de Q:'); disp(D(3,3)); disp('Tercer vep de Q:'); disp(e0_3); x0=e0_3+sol_exacta; diff=inf; k=1; tol=1e-3; maxIter=10; x=x0; err3=zeros(maxIter,1); while diff > tol && k < maxIter+1 vec = Q*x + r; diff = norm(x-vec); err3(k)=norm(x-sol_exacta); x = vec; k = k+1; end #Graficar figure(1); newplot; plot(err1,'LineWidth',2,'DisplayName',strcat('e0 en sep asociado a vap=',num2str(D(1,1)))); hold on; plot(err2,'LineWidth',2,'DisplayName',strcat('e0 en sep asociado a vap=',num2str(D(2,2)))); plot(err3,'LineWidth',2,'DisplayName',strcat('e0 en sep asociado a vap=',num2str(D(3,3)))); set(gca,'fontsize', 26); title('Evolución del error para diferentes e0','FontSize',30); grid on; legend('Location','Northwest');