Matlab - Controlar decimales en el resultado de una matriz

 
Vista:
sin imagen de perfil

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
sin imagen de perfil

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
Val: 3.309
Plata
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Controlar decimales en el resultado de una matriz

Publicado por Royeth (1818 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