
Solución de ecuaciones complejas en matlab
Publicado por Carlos (4 intervenciones) el 18/07/2016 05:11:39
Saludos a todos, tengo un problema de resolver una ecuación compleja de dos incógnitas con matlab, la ecuación que quiero solucionar es:
A*sin(N*K*T)-sin[(N-1)*K*T]=0
donde A, N y T son constantes fijas y K es una función que depende de 2 variables (B y W).
EL problema que tengo es que yo quiero conocer todos los valores de B y W que me hacen valida la ecuación anterior, entonces genero dos ciclos for para que me hagan un corrimiento en ambas variables, es decir, para cada valor de B resuelvo la ecuación para todos los valores de W, y el problema que tengo es que la igualdad nunca se cumple, es decir ningún valor cumple que la ecuación sea igual a 0, en otras palabras, cumple que la parte real sea igual a cero pero la parte imaginaria es diferente de cero o dicho de otro modo, el modulo de la respuesta al evaluar la ecuación es diferente de 0,
Aqui les dejo parte del programa, desde antes ya declaro todas mis constantes, las variables BETA y OMEGA son B y W respectivamente.
for be2=1:be1
BETA2s=zeros(1,w1);
OMEGA2s=zeros(1,be1);
for w2=1:w1
Qns(:,:)=eye(2);
wn1=(w(1,w2).*n1).^2;
wn2=(w(1,w2).*n2).^2;
q=(((be(1,be2)).^2)-wn1).^(1/2);
p=(wn2-((be(1,be2)).^2)).^(1/2);
A=(exp(q.*a1)).*(cos(p.*b1)-((1/2)*((p./q)-(q./p)).*sin(p.*b1)));
B=(exp(-q.*a1)).*(-(1/2)*((p./q)+(q./p)).*sin(p.*b1));
C=(exp(q.*a1)).*((1/2)*((p./q)+(q./p)).*sin(p.*b1));
D=(exp(-q.*a1)).*(cos(p.*b1)+((1/2)*((p./q)-(q./p)).*sin(p.*b1)));
KA=acos(0.5.*(A+D));
t=A.*(sin(N.*KA));
r=sin((N-1).*KA);
condicion=t-r;
if abs(condición)=0;
if be(1,be2)<=n2*w(1,w2) && be(1,be2)>=n1*w(1,w2);
BETA2s(1,w2)=be(1,be2).*(periodo/pi);
OMEGA2s(1,w2)=w(1,w2).*(periodo/pi);
condicion
end
else
BETA2s(1,w2)=NaN;
OMEGA2s(1,w2)=NaN;
end
end %for para w2
BETA1s(be2,:)=BETA2s;
OMEGA1s(be2,:)=OMEGA2s;
end %for para be2
Espero que me puedan ayudar, gracias.
A*sin(N*K*T)-sin[(N-1)*K*T]=0
donde A, N y T son constantes fijas y K es una función que depende de 2 variables (B y W).
EL problema que tengo es que yo quiero conocer todos los valores de B y W que me hacen valida la ecuación anterior, entonces genero dos ciclos for para que me hagan un corrimiento en ambas variables, es decir, para cada valor de B resuelvo la ecuación para todos los valores de W, y el problema que tengo es que la igualdad nunca se cumple, es decir ningún valor cumple que la ecuación sea igual a 0, en otras palabras, cumple que la parte real sea igual a cero pero la parte imaginaria es diferente de cero o dicho de otro modo, el modulo de la respuesta al evaluar la ecuación es diferente de 0,
Aqui les dejo parte del programa, desde antes ya declaro todas mis constantes, las variables BETA y OMEGA son B y W respectivamente.
for be2=1:be1
BETA2s=zeros(1,w1);
OMEGA2s=zeros(1,be1);
for w2=1:w1
Qns(:,:)=eye(2);
wn1=(w(1,w2).*n1).^2;
wn2=(w(1,w2).*n2).^2;
q=(((be(1,be2)).^2)-wn1).^(1/2);
p=(wn2-((be(1,be2)).^2)).^(1/2);
A=(exp(q.*a1)).*(cos(p.*b1)-((1/2)*((p./q)-(q./p)).*sin(p.*b1)));
B=(exp(-q.*a1)).*(-(1/2)*((p./q)+(q./p)).*sin(p.*b1));
C=(exp(q.*a1)).*((1/2)*((p./q)+(q./p)).*sin(p.*b1));
D=(exp(-q.*a1)).*(cos(p.*b1)+((1/2)*((p./q)-(q./p)).*sin(p.*b1)));
KA=acos(0.5.*(A+D));
t=A.*(sin(N.*KA));
r=sin((N-1).*KA);
condicion=t-r;
if abs(condición)=0;
if be(1,be2)<=n2*w(1,w2) && be(1,be2)>=n1*w(1,w2);
BETA2s(1,w2)=be(1,be2).*(periodo/pi);
OMEGA2s(1,w2)=w(1,w2).*(periodo/pi);
condicion
end
else
BETA2s(1,w2)=NaN;
OMEGA2s(1,w2)=NaN;
end
end %for para w2
BETA1s(be2,:)=BETA2s;
OMEGA1s(be2,:)=OMEGA2s;
end %for para be2
Espero que me puedan ayudar, gracias.
Valora esta pregunta


0