
Graficar (plotear) los resultados de cada iteración
Publicado por Toni (2 intervenciones) el 09/12/2014 23:18:46
¡Hola! Tengo este código de Jacobi que me calcula por ese método las soluciones de una ecuación lineal. Y me gustaría poder graficar (plotear) las soluciones del sistema en cada iteración que hace.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
function [xs1]=jacobicompleto(A,b,x0,tol)
n=size(A,1);
xs1=zeros(n,1);
D=diag(diag(A));
U=A-tril(A);
L=A-triu(A);
f=D^-1*b;
H=-D^-1*(L+U);
%calculamos la primera iteración
xs1=f+H*x0;
it=1;
disp(' x1 x2 x3 ||xs+1-xs|| it')
fprintf('%10.5f',xs1)
fprintf('%11.5f %10.1i\n',norm(xs1-x0),it)
while norm(xs1-x0)>tol
it=it+1;
x0=xs1;
xs1=f+H*xs1;
fprintf('%10.5f',xs1)
fprintf('%11.5f %10.1i\n',norm(xs1-x0),it)
end
Y lo mismo con gauss seidel:
function [xs1]=gseidel(A,b,xs,tol)
n=size(A,1);
xs1=zeros(n,1);
D=diag(diag(A));
U=A-tril(A);
L=A-triu(A);
f=(D+L)^(-1)*b;
H=-(D+L)^(-1)*U;
%calculamos la primera iteración
xs1=f+H*xs;
it=1;
disp(' x1 x2 x3 |xs+1-xs| it')
fprintf('%10.5f',xs1)
fprintf('%11.5f %10.1i\n',norm(xs1-xs),it)
while norm(xs1-xs)>tol
it=it+1;
xs=xs1;
xs1=b;
for i=1:n
for j=1:i-1
xs1(i)=xs1(i)-A(i,j)*xs1(j);
end
for j=i+1:n
xs1(i)=xs1(i)-A(i,j)*xs(j);
end
xs1(i)=xs1(i)/A(i,i);
end
fprintf('%10.5f',xs1)
fprintf('%11.5f %10.1i\n',norm(xs1-xs),it)
end
Valora esta pregunta


0