Problema función "ge"
Publicado por holyo (30 intervenciones) el 26/04/2009 02:03:08
Hola, estoy haciendo un programa M-File que resuelve un ejercicio que estoy haciendo. El problema es que me da un error matlab y no sé que significa porque intenté solucionarlo pero nada. Os pongo todo el programa (no hace falta entender de que va):
clear;
syms a h k
v=12; %Velocidad
Cp=0.4; %Coeficiente de potencia
n=200; % Revoluciones por minuto
p=3; %Número de palas
P=10000; %Potencia
D=sqrt(8*P/(1.23*Cp*pi*v^3)); % Diámetro
r= D/2; % Radio
alfa=5.5; % Ángulo óptimo
Cl=1.0347; % Coeficiente de sustentación óptimo
Eficiencia=95.5429 ; % Eficiencia maxima
E=1/Eficiencia ; %Epsilon , ángulo de planeo
MATRIZ=[];
for i=0.25:0.25:r
L=2*pi*n*i/(60*v); %Lambda, velocidad específica
%%Inicio del proceso de linealización y resolucion del sistema de
%%ecuaciones no lineales
d=[3 3];
X= [a h k];
f(1)=2*a*L^2*(1+h)*(1+a-(1+h)*L*tan(E))/((1+h)*L+(1+a)*tan(E))+k+k*((1+a)*(1+a-(1+h)*L*tan(E))/((1+h)^2*L^2+(1+h)*(1+a)*L*tan(E)));
f(2)=k+(1+tan(E)^2)*(L^2*(1-a^2)+k*((1-a^2)/((1+h)^2*L)))/(1+tan(E)*(1+a)/((1+h)*L))^2;
f(3)=-h+1+(1-a)*(1+a-(1+h)*L*tan(E))/(L^2*(1+h)+(1+a)*L*tan(E));
b=[0 0 0];
TOLERANCIA=0.00000000000001;
X0=[1 1 1]; % Es el punto inicial que se escoge para iterar
X0=X0';
Jf=jacobian(f,X);
t=1;
j=1;
while (t>=TOLERANCIA) & (j<100)
A=double(subs(Jf,X,X0));
B=b'-subs(f,X,X0)'+A*X0;
S=AB;
X0=S;
d=b-subs(f,X,X0);
t=
t=norma(b-subs(f,X,X0));
j=j+1;
end
a1=X0(1); % Primera fila de X0, es decir, a
h1=X0(2); % Segunda fila de X0, es decir, h
fi=atan((1+a)/((1+h)*L)); %Ángulo de inclinación en radianes
fi_grados=fi*180/pi; %Ángulo de inclinación en grados
cuerda=8*pi*r*cos(E)*sin(fi)^2*(1-a)/(3*Cl*cos(fi-E)*(1+a));
MATRIZ=[MATRIZ;[i,L,a1,h1,fi_grados,cuerda]];
end
disp(' radio , lambda , a , h , ángulo de inclinación , cuerda ')
display(MATRIZ)
El error que me sale en matlab es:
??? Function 'ge' is not defined for values of class 'sym'.
Error in ==> ge at 18
[varargout{1:nargout}] = builtin('ge', varargin{:});
Error in ==> metodonoideal at 31
while (t>=TOLERANCIA) & (j<100)
Muchas gracias
clear;
syms a h k
v=12; %Velocidad
Cp=0.4; %Coeficiente de potencia
n=200; % Revoluciones por minuto
p=3; %Número de palas
P=10000; %Potencia
D=sqrt(8*P/(1.23*Cp*pi*v^3)); % Diámetro
r= D/2; % Radio
alfa=5.5; % Ángulo óptimo
Cl=1.0347; % Coeficiente de sustentación óptimo
Eficiencia=95.5429 ; % Eficiencia maxima
E=1/Eficiencia ; %Epsilon , ángulo de planeo
MATRIZ=[];
for i=0.25:0.25:r
L=2*pi*n*i/(60*v); %Lambda, velocidad específica
%%Inicio del proceso de linealización y resolucion del sistema de
%%ecuaciones no lineales
d=[3 3];
X= [a h k];
f(1)=2*a*L^2*(1+h)*(1+a-(1+h)*L*tan(E))/((1+h)*L+(1+a)*tan(E))+k+k*((1+a)*(1+a-(1+h)*L*tan(E))/((1+h)^2*L^2+(1+h)*(1+a)*L*tan(E)));
f(2)=k+(1+tan(E)^2)*(L^2*(1-a^2)+k*((1-a^2)/((1+h)^2*L)))/(1+tan(E)*(1+a)/((1+h)*L))^2;
f(3)=-h+1+(1-a)*(1+a-(1+h)*L*tan(E))/(L^2*(1+h)+(1+a)*L*tan(E));
b=[0 0 0];
TOLERANCIA=0.00000000000001;
X0=[1 1 1]; % Es el punto inicial que se escoge para iterar
X0=X0';
Jf=jacobian(f,X);
t=1;
j=1;
while (t>=TOLERANCIA) & (j<100)
A=double(subs(Jf,X,X0));
B=b'-subs(f,X,X0)'+A*X0;
S=AB;
X0=S;
d=b-subs(f,X,X0);
t=
t=norma(b-subs(f,X,X0));
j=j+1;
end
a1=X0(1); % Primera fila de X0, es decir, a
h1=X0(2); % Segunda fila de X0, es decir, h
fi=atan((1+a)/((1+h)*L)); %Ángulo de inclinación en radianes
fi_grados=fi*180/pi; %Ángulo de inclinación en grados
cuerda=8*pi*r*cos(E)*sin(fi)^2*(1-a)/(3*Cl*cos(fi-E)*(1+a));
MATRIZ=[MATRIZ;[i,L,a1,h1,fi_grados,cuerda]];
end
disp(' radio , lambda , a , h , ángulo de inclinación , cuerda ')
display(MATRIZ)
El error que me sale en matlab es:
??? Function 'ge' is not defined for values of class 'sym'.
Error in ==> ge at 18
[varargout{1:nargout}] = builtin('ge', varargin{:});
Error in ==> metodonoideal at 31
while (t>=TOLERANCIA) & (j<100)
Muchas gracias
Valora esta pregunta


0