
Controlar decimales en el resultado de una matriz
Publicado por Juan (3 intervenciones) el 26/09/2015 09:28:20
En el siguiente código que tengo hecho, no sé como controlar la cantidad de decimales a mostrar en el resultado en la ventana de comandos.
He creído reemplazar sol por un printf('%9.8f',sol); por ejemplo para que me bote 8 decimales, pero así con el printf se arruina el código, he pensado en otras variantes del código para lo que requiero con los decimales pero nada, alguna sugerencia para mi problema. Les estaré muy agradecido :(
He creído reemplazar sol por un printf('%9.8f',sol); por ejemplo para que me bote 8 decimales, pero así con el printf se arruina el código, he pensado en otras variantes del código para lo que requiero con los decimales pero nada, alguna sugerencia para mi problema. Les estaré muy agradecido :(
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
fun='sin(pi*x)+sin(3*pi*x)';
M=9;
N=5;
C=1;
a=0;
b=1;
T=0.4;
% definicion de nodos en el mallado o grid
xnodos=linspace(a,b,M);
tnodos=linspace(0,T,N);
h=(b-a)/(M-1);
k=T/(N-1);
% mide la convergencia del esquema
r=C^2*k/h^2;
disp('r=');
disp(r);
% construyendo la matriz
A=(1-2*r)*eye(M-2);
for i=1:M-3
A(i,i+1)=r;
A(i+1,i)=r;
end
printf('%9.2f',A);
disp('A=');
disp(A);
% define la funcion f(x) para t=0
f=inline(fun);
% define la solucion en la frontera x=0
alfafrontera=inline('0');
% define la solucion en la frontera x=1
betafrontera=inline('0');
% solucion inicial para t=0 en el interior de [a,b]
for i=2:M-1
solfila(i-1)=f(xnodos(i));
end
% solucion inicial para t=0 en todo el intervalo [a,b]
sol=[f(xnodos(1)),solfila,f(xnodos(M))];
%el proceso iterativo en el metodo explicito
for j=2:N
fila=A*solfila';
solfila=fila';
% la variable sol contendr´a aproximada de u(x,t)
% en todo el mallado [0,L]x[0,T]
sol=[sol;alfafrontera(tnodos(j)),solfila,betafrontera(tnodos(j))];
end
sol
Valora esta pregunta


0