Matlab - problema función matlab

   
Vista:

problema función matlab

Publicado por hector hector_boiro@hotmail.com (1 intervención) el 06/03/2013 21:52:58
Estoy haciendo un programilla para construir una matriz segun los datos que ingresamos en un input. Mi problema aparece cuando utilizo el comando subs. En la ventana de matlab me aparece el siguiente mensaje de error:
The following error occurred converting from sym to double:
Error using mupadmex
Error in MuPAD command: DOUBLE cannot convert the input expression into a double array.

If the input expression contains a symbolic variable, use the VPA function instead.

Error in hains (line 23)
M(i,1)=subs(A,x,E(i,1));
No se porque hace eso, por que para i =1 ( por ejemplo) E(i,1) tiene un valor numerico, es un escalar y tiene que substituir a la vble simbolica x... No veo el problema....

Adjunto el código . Muchas gracias!! un saludo



function b
clear all
syms l1 l2 l3 l4 x ;
k1=l4/l1;
k2=l4/l3;
k3=(l4^2+l1^2+l3^2-l2^2)/(2*l1*l3);
%definimos la función generada, configuración positiva y negativa
genpos=acos((cos(x)-k1)/(sqrt((cos(x))^2+(sin(x))^2)))+acos((k3-k2*cos(x))/(sqrt(((cos(x))^2+(sin(x))^2))));
neg=acos((cos(x)-k1)/(sqrt((cos(x))^2+(sin(x))^2)))-acos((k3-k2*cos(x))/(sqrt(((cos(x))^2+(sin(x))^2))));
obj=(100/log(10))*log(x/10); %funcion objetivo
n=input('dame el "n"= ');
E=zeros(n,1);
M=zeros(n,4);
for i=1:n
E(i,1)=(pi/180)*input('angulo de entrada = ');%vamos metiendo angulos de entrada
end
E
A=diff(genpos,l1); %deriva con respecto a las distancias
B=diff(genpos,l2);
C=diff(genpos,l3);
D=diff(genpos,l4);
for i=1:n
M(i,1)=subs(A,x,E(i,1));
M(i,2)=subs(B,x,E(i,1)); % substituye x por los valores metidos en el input
M(i,3)=subs(C,x,E(i,1));
M(i,4)=subs(D,x,E(i,1));
end
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

problema función matlab

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3434 intervenciones) el 06/03/2013 22:31:47
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
clear all
 syms a b c d x
 k1=d/a;
 k2=d/c;
 k3=(d^2+a^2+c^2-b^2)/(2*a*c);
 %definimos la función generada, configuración positiva y negativa
 genpos=acos((cos(x)-k1)/(sqrt((cos(x))^2+(sin(x))^2)))+acos((k3-k2*cos(x))/(sqrt(((cos(x))^2+(sin(x))^2))));
 neg=acos((cos(x)-k1)/(sqrt((cos(x))^2+(sin(x))^2)))-acos((k3-k2*cos(x))/(sqrt(((cos(x))^2+(sin(x))^2))));
 obj=(100/log(10))*log(x/10); %funcion objetivo
 E=input('Ingrese  el vector angulo  E=');
 E=(pi/180)*E';
 n=length(E);
 A=diff(genpos,a); %deriva con respecto a las distancias
 B=diff(genpos,b);
 C=diff(genpos,c);
 D=diff(genpos,d);
 for i=1:n
      M(i,1)=subs(A,x,E(i,1));
      M(i,2)=subs(B,x,E(i,1)); % substituye x por los valores metidos en el input
      M(i,3)=subs(C,x,E(i,1));
      M(i,4)=subs(D,x,E(i,1));
 end
  display(M)


EJECUCION
1
2
3
4
5
6
7
>> funcionangulo
Ingrese  el vector angulo  E=[60 45]
 
M =
 
[                 - (1/c - (a^2 - b^2 + c^2 + d^2)/(2*a^2*c))/(1 - (d/(2*c) - (a^2 - b^2 + c^2 + d^2)/(2*a*c))^2)^(1/2) - d/(a^2*(1 - (d/a - 1/2)^2)^(1/2)),           b/(a*c*(1 - (d/(2*c) - (a^2 - b^2 + c^2 + d^2)/(2*a*c))^2)^(1/2)),                     -(d/(2*c^2) + 1/a - (a^2 - b^2 + c^2 + d^2)/(2*a*c^2))/(1 - (d/(2*c) - (a^2 - b^2 + c^2 + d^2)/(2*a*c))^2)^(1/2),                       (1/(2*c) - d/(a*c))/(1 - (d/(2*c) - (a^2 - b^2 + c^2 + d^2)/(2*a*c))^2)^(1/2) + 1/(a*(1 - (d/a - 1/2)^2)^(1/2))]
[ - (1/c - (a^2 - b^2 + c^2 + d^2)/(2*a^2*c))/(1 - ((a^2 - b^2 + c^2 + d^2)/(2*a*c) - (2^(1/2)*d)/(2*c))^2)^(1/2) - d/(a^2*(1 - (2^(1/2)/2 - d/a)^2)^(1/2)), b/(a*c*(1 - ((a^2 - b^2 + c^2 + d^2)/(2*a*c) - (2^(1/2)*d)/(2*c))^2)^(1/2)), -(1/a - (a^2 - b^2 + c^2 + d^2)/(2*a*c^2) + (2^(1/2)*d)/(2*c^2))/(1 - ((a^2 - b^2 + c^2 + d^2)/(2*a*c) - (2^(1/2)*d)/(2*c))^2)^(1/2), 1/(a*(1 - (2^(1/2)/2 - d/a)^2)^(1/2)) + (2^(1/2)/(2*c) - d/(a*c))/(1 - ((a^2 - b^2 + c^2 + d^2)/(2*a*c) - (2^(1/2)*d)/(2*c))^2)^(1/2)]




Saludos.
JOSE JEREMÍAS CABALLERO
Asesorías en Matlab
programador en matlab
Servicios de programación matlab
jjcc94@hotmail.com

http://matlabcaballero.blogspot.com


http://www.lawebdelprogramador.com/foros/Matlab/1371532-FORMA_DE_APRENDER_MATLAB.htm
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