Matlab - Controlar decimales en el resultado de una matriz

   
Vista:

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 :(

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
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Royeth

Controlar decimales en el resultado de una matriz

Publicado por Royeth jesus.royeth@gmail.com (749 intervenciones) el 26/09/2015 17:34:09
puede usar
1
2
format longG
disp(round(sol*10^8)/10^8)



saludos
https://www.facebook.com/royethmatlab/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Controlar decimales en el resultado de una matriz

Publicado por Juan (3 intervenciones) el 06/10/2015 00:55:01
Gracias

También conseguí controlar la cantidad de decimales redactando así:

1
2
3
4
5
6
7
for i=1:N
 
    for j=1:M
 
fprintf('%16.5f',sol(i,j));
    end
    fprintf('\n');
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Royeth

Controlar decimales en el resultado de una matriz

Publicado por Royeth jesus.royeth@gmail.com (749 intervenciones) el 06/10/2015 03:22:58
me alegra que hayas resuelto tu problema
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar