Issue while plotting the equation
Mostrar comentarios más antiguos
Vfb=1.2;
phit=0.026;
Nd=1e19;
ni=1.5e10;
q=1.6e-19;
Tsc=10^-6;
tox=0.8*10^-7
W=10^-4
L=10^-4
eox=25*8.8*1e-14
esi=8.8*11.7*1e-14
Cox=eox/tox
Ld=sqrt((esi*phit)/(q*Nd))
gamma=(sqrt(2*q*Nd*esi))/(Cox)
mu=100
mub=200
d=4*Cox^2*gamma^2*phit
p=q*Nd*Tsc
a=0.001
Vds=0.01
tf=12*10^-7;
Qs=2.7*10^-5
Qc=2*10^-5
Ec=10^6
f=2*esi*3.14*0.026*q*q*Nd*Nd*Tsc;
alpha_0=(((3*(Qs^4)*(Qc^2))-(5*(Qc^4)*(Qs^2)))/((4*(Qs^2)*(Qc^5))-(2*(Qs^4)*(Qc^3))-(2*Qc^7)))*Ec
beeta_0=(((5*Qc^4)-Qs^4)/((4*(Qs^2)*(Qc^5))-(2*(Qs^4)*(Qc^3))-(2*Qc^7)))*Ec
damma_0=(((Qs^2)-3*Qc^2)/((4*(Qs^2)*(Qc^5))-(2*(Qs^4)*(Qc^3))-(2*Qc^7)))*Ec
alpha=2*tf*alpha_0
beeta=4*tf*beeta_0
damma=6*tf*damma_0
N=500;
Vgd=linspace(0,1.2,N);
Vgs=linspace(0,1.2,N);
Qd=zeros(1,N);
Qs=zeros(1,N);
Ids=zeros(1,N);
for i=1:500
syms x
eqnLeft = Vgd(i)-Vfb-Vds+((Tsc/(8*esi))*(x+p));
eqnRight =0.026*(log(2*sqrt(((x+p)*Tsc)/(8*3.14*0.026*esi))*(1-((x+p)/(p)))))+((alpha+(1/Cox))*((x+p)/2))+(beeta*(((x+p)/2).^3))+(damma*(((x+p)/2).^5));
Qd(1,i)=vpasolve(eqnLeft == eqnRight,x,10^-11);
end
for i=1:500
syms x
eqnLeft = Vgs(i)-Vfb+((Tsc/(8*esi))*(x+p));
eqnRight =0.026*(log(2*sqrt(((x+p)*Tsc)/(8*3.14*0.026*esi))*(1-((x+p)/(p)))))+((alpha+(1/Cox))*((x+p)/2))+(beeta*(((x+p)/2).^3))+(damma*(((x+p)/2).^5));
Qs(1,i)=vpasolve(eqnLeft == eqnRight,x,10^-11);
end
hold on
plot(Vgd,abs(Qd))
plot(Vgs,abs(Qs))
hold off
While plotting Qd and Qs I am getting its complex values in workspace, how can i just plot the real values??
Respuestas (3)
Mohd Ayaz
el 12 de Dic. de 2021
0 votos
2 comentarios
Walter Roberson
el 12 de Dic. de 2021
KSSV showed you how: A_real = A(imag(A) == 0) where A is the name of the variable that has all of the roots.
Mohd Ayaz
el 12 de Dic. de 2021
Vfb=1.2;
phit=0.026;
Nd=1e19;
ni=1.5e10;
q=1.6e-19;
Tsc=10^-6;
tox=0.8*10^-7;
W=10^-4;
L=10^-4;
eox=25*8.8*1e-14;
esi=8.8*11.7*1e-14;
Cox=eox/tox;
Ld=sqrt((esi*phit)/(q*Nd));
gamma=(sqrt(2*q*Nd*esi))/(Cox);
mu=100;
mub=200;
d=4*Cox^2*gamma^2*phit;
p=q*Nd*Tsc;
a=0.001;
Vds=0.01;
tf=12*10^-7;
Qs=2.7*10^-5;
Qc=2*10^-5;
Ec=10^6;
f=2*esi*3.14*0.026*q*q*Nd*Nd*Tsc;
alpha_0=(((3*(Qs^4)*(Qc^2))-(5*(Qc^4)*(Qs^2)))/((4*(Qs^2)*(Qc^5))-(2*(Qs^4)*(Qc^3))-(2*Qc^7)))*Ec;
beeta_0=(((5*Qc^4)-Qs^4)/((4*(Qs^2)*(Qc^5))-(2*(Qs^4)*(Qc^3))-(2*Qc^7)))*Ec;
damma_0=(((Qs^2)-3*Qc^2)/((4*(Qs^2)*(Qc^5))-(2*(Qs^4)*(Qc^3))-(2*Qc^7)))*Ec;
alpha=2*tf*alpha_0;
beeta=4*tf*beeta_0;
damma=6*tf*damma_0;
N=5;
Vgd=linspace(0,1.2,N);
Vgs=linspace(0,1.2,N);
%Qd=zeros(1,N);
%Qs=zeros(1,N);
Ids=zeros(1,N);
for i=1:N
syms x
eqnLeft = Vgd(i)-Vfb-Vds+((Tsc/(8*esi))*(x+p));
eqnRight =0.026*(log(2*sqrt(((x+p)*Tsc)/(8*3.14*0.026*esi))*(1-((x+p)/(p)))))+((alpha+(1/Cox))*((x+p)/2))+(beeta*(((x+p)/2).^3))+(damma*(((x+p)/2).^5));
Qd{i} = solve(eqnLeft == eqnRight, x, 'real', true);
end
for i=1:N
syms x
eqnLeft = Vgs(i)-Vfb+((Tsc/(8*esi))*(x+p));
eqnRight =0.026*(log(2*sqrt(((x+p)*Tsc)/(8*3.14*0.026*esi))*(1-((x+p)/(p)))))+((alpha+(1/Cox))*((x+p)/2))+(beeta*(((x+p)/2).^3))+(damma*(((x+p)/2).^5));
Qss{i} = solve(eqnLeft == eqnRight, x, 'real', true);
end
%{
hold on
plot(Vgd,abs(Qd))
plot(Vgs,abs(Qs))
hold off
%}
Qd{1}
Qss{1}
residue = eqnLeft - eqnRight
string(residue)
%fplot([real(residue), imag(residue)], [-1 1])
1 comentario
Walter Roberson
el 12 de Dic. de 2021
There are NO real-roots of that residue expression, which is the 5th Qss output.
Look at the square root: that has to be positive or else te sqrt() will be imaginary. But you need a negative x so that the -x*sqrt() gives a positive number. So you need x to be between solve() of the expression under the square root, and 0. But if you graph residue over that range you can see that it never crosses zero there.
You are incorrect that there are 5 roots. There is an (x+c)^5 term, but there is also that log(sqrt()) term.
So, your problem cannot be solved.
Categorías
Más información sobre Guidance, Navigation, and Control (GNC) en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
