Matlab - Fracción/Decimal

   
Vista:

Fracción/Decimal

Publicado por Victor (8 intervenciones) el 15/05/2012 22:27:50
Hola.
Quería saber porqué me sale fracción a veces en el resultado final y como hago para que salga en decimal.

Ejemplo:
1
2
3
4
5
6
7
8
9
10
clear all;
clc;
 
f='x^2+7*y^2-4*x*y+3*x+2*y+1'
gradf=[diff(f,'x') diff(f,'y')]
x0=[20 30]'
d0=[77 -342]'
gradf2=[diff(gradf(1),'x') diff(gradf(1),'y'); diff(gradf(2),'x') diff(gradf(2),'y')]
Q=gradf2;
alfa0=-(subs(gradf,'[x y]', x0')*d0)/(d0'*Q*d0)


El resultado que me da:

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
f =
 
x^2+7*y^2-4*x*y+3*x+2*y+1
 
 
gradf =
 
[ 2*x - 4*y + 3, 14*y - 4*x + 2]
 
 
x0 =
 
    20
    30
 
 
d0 =
 
    77
  -342
 
 
gradf2 =
 
[  2, -4]
[ -4, 14]
 
 
alfa0 =
 
122893/1860026


Por cierto, da lo mismo que ponga 'format short' el resultado no cambia.
Gracias.
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 JOSE JEREMIAS CABALLERO

Fracción/Decimal

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3432 intervenciones) el 16/05/2012 16:56:41
Primeramente queria agradecerte.
Por compartir tu codigo, es un tema muy interesante ese de los gradientes y jacobianos.
Recuerdo las veces q me enseñaban en la universidad esos temas.
Aplicando con matlab me parece aun más interesante.
Uno cada vez aprende mas con las s preguntas que hacen las personas en el foro.
Sin sus preguntas no hubiera aprendido, muchos temas de matlab.




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
lear all;
clc;
syms x y
f=x^2+7*y^2-4*x*y+3*x+2*y+1;
gradf=[diff(f,'x') diff(f,'y')];
x0=[20 30]';
d0=[77 -342]';
gradf2=[diff(gradf(1),'x') diff(gradf(1),'y'); diff(gradf(2),'x') diff(gradf(2),'y')];
Q=gradf2;
alfa0=-(subs(gradf,'[x y]', x0')*d0)/(d0'*Q*d0);
alfa0=double(alfa0)
 
%OTRA FORMA:
clear all;
syms x y
f=x^2+7*y^2-4*x*y+3*x+2*y+1;
gradiente=gradient(f,[x y]);
jacobiano=jacobian(gradiente,[x y]);
x0=[20 30];
d0=[77 -342]';
fgradiente=inline(gradiente,'x','y');
alfa=-(fgradiente(x0(1),x0(2)))'*d0/(d0'*jacobiano*d0);
alfa=double(alfa)
 



1
2
3
4
5
6
7
8
9
10
>> gradiente_jacobiano
 
alfa0 =
 
    0.0661
 
 
alfa =
 
    0.0661



Saludos.
JOSE JEREMIAS CABALLERO
Asesor de Proyectos con Matlab
programador en matlab
Servicios de programacion matlab
jjcc94@hotmail.com

http://matlabcaballero.blogspot.com
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