problema función matlab
Publicado por hector (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
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


0