Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Ejsrepasosistemas
Ejsrepasosistemas
Anónimo
1º Grado en Física
No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
1. Aplicando el método Gauss-Seidel amortiguado o método SOR,
construye un programa que varíe el peso de amortiguamiento w desde
-2 hasta 2 con saltos de 0.01.
Representa la variación del radio espectral según varía w. Se aplicará al
sistema de ecuaciones (el mismo que el del ejercicio 4 del guión de
prácticas).
3x + y + z = 4
2x + 5y + 1z = -1
D=diag(diag(A));
L=A-triu(A);
U=A-tril(A);
I=eye(size(A));
for w=-2:0.01:2
%sentencias para determinar CONVERGENCIA
Ga=-w*inv(L+D)*U+(1-w)*I; %H: matriz convergencia SOR
autovalores=eig(Ga); %eig calcula los autovalores de una matriz
abs_auto=abs(autovalores);
radio_espectral=max(abs_auto);
plot(w,radio_espectral,'*b')
xlabel('w (peso)')
ylabel('radio espectral')
hold on
if radio_espectral<1
if abs(det(A))<3*eps %matriz es singular/se aproxima (NO CONVERGE)
disp('El sistema no converge, no tiene solución');
return
else %CONVERGENCIA ASEGURADA
x=inv(L+D)*(b-U*x0);
x=w*x+(1-w)*x0; %sentencia amortigüamiento (1ª iteración)
it=1;
while norm(x-x0)>tol %condición sobre la tolerancia
x0=x; %revalorizamos x0
x=inv(L+D)*(b-U*x0); %fórmula iterativa para obtener soluciones
x=w*x+(1-w)*x0; %sentencia amortigüamiento
it=it+1;
end
end
end
end
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-6350205
%[x,it]=ej1_repaso(A1,b1,x0,10^(-5))
>> [x,it]=ej1_repaso(A1,b1,x0,10^(-5))
x=
No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
1.0000
-1.0000
2.0000
it =
No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
introdúcelo como argumento de entrada.
function[x,radio_espectral]=ej2_repaso(A,b,x0,tol,k)
xj=jacobi_completo(A,b,x0,tol);
xgs=gaussseidel_completo(A,b,x0,tol);
x=k*xj+(1-k)*xgs;
J=inv(D)*(L+U);
H=inv(L+D)*U;
M=k*J+(1-k)*H;
%[x,radio_espectral]=ej2_repaso(A1,b1,x0,10^-5,0.1)
>> [x,radio_espectral]=ej2_repaso(A1,b1,x0,10^-5,0.1)
x=
1.0000
-1.0000
2.0000
radio_espectral =
0.1963