Explicit solution could not be found

4 views (last 30 days)
%-------Quantitative evolution of chemisorption Processes on
%Metal oxide Semiconductor--------------
% ----------Discreption of the Programme-----
% This Matlab program calculate the relation between the total surface
% coverage area and the surface potential of the metal oxide
% semiconductors.The surface potential depends upon the gas pressure and
% temperature during the chemnisorption process.This program uses the
% Wolkienstien's theory of adsorption which is more adequate than the
% conventional Langmuir model.
% Variable used-----
% P- Pressure of the gas
% T-Temperature
% q0= Energy released during the weak adsorption
% nunegative= frequency of oscillation of the adions
% nunuetral= frequency of oscillation of the nuetral adsorbates
% M= Molecular mass of the oxygen atom
% Eg= Energy band gap of the semiconductor
% Ga= degeneracy factor for the chemisorption induces states
% Ni= Intrinsic carrier concentration
% K= Boltazmann constant
% Vs= Surface potential
% Nd= Dopant concentration
% Nb= Bulk electron concentration
% Pb= Bulk hole concentration
% Ld= Debye length
% Qs= Surface charge density
% Qsc= Space charge density
%
p= 10^-6
T=300;
K=1.3807*10^-23;
Nd=10^24;
q0=0.1*1.6*10^-19;
M=32*1.67*10^-27;
Ga=2;
Nstar=10^19
es=5.4*8.85*10^-14;
e=1.6*10^-19;
x=0.21*1.6*10^-19 %(Ecb-Ef)=x
y=0.8*1.6*10^(-19) %(Ecs-Eas)=y
Nc=2.5*10^25;
Nv=1.04*10^25;
Eg=2.42*1.6*10^-19;
M=32*1.67*10^-27;
k1=4.14*10^-21
k=1;
Vs=0.2
S0=10^-19;
M=32*1.67*10^-27;
nstar=10^25;
nunegative=10^13;
nunuetral=10^13
Ni=sqrt(Nc*Nv*exp(-Eg/(k1)))
Nb=Nd/2+sqrt(Nd^2/2+Ni^2)
Pb=Ni^2/Nb
ub=(k1)*log(Ni^2/Nb)
Ld=sqrt(es*(k1)/(e^2*Nd))
a=(1 + (1/Ga)*exp(y/k1)*exp(-(x/k1))*exp((e*Vs)/k1))
b=((k*S0)/(sqrt(2*pi*M*k1)*nunuetral))*exp(q0/k1)
c=(1 + (1/Ga)*(nunegative/nunuetral)*exp(-(x/k1))*exp((e*Vs)/k1))
Beta =(b/c)*a
Theta=(Beta*p)/(1+Beta*p)
Qs=-e/(1+(Ga*exp(-y/k1))*(exp(x/k1)*exp(-(e*Vs)/k1)))*Theta*nstar;
Qsc=sqrt(2)*(Nb+Pb)*e*Ld*sqrt((cosh(ub+(e*Vs)/k1))/cosh(ub)-(e*Vs)/k1*tanh(ub)-1);
syms Vs Ga y k1 e x Theta nstar Nb Pb Ld ub
eqns=-e/(1+(Ga*exp(-y/k1))*(exp(x/k1)*exp(-(e*Vs(1)/k1))*Theta*nstar==sqrt(2)*(Nb+Pb)*e*Ld*sqrt((cosh(ub+(e*Vs))/k1))/(cosh(ub-(e*Vs)))/(k1)*tanh(ub)-1))
Vs= solve(eqns, Vs)
I want to calculate the Value of Vs from the following code. but I am getting
Warning: Explicit solution could not be found.
and
Vs =
[ empty sym ]
I am new to Matlab seeks help in this!!
Thank You
  1 Comment
Anil Kumar
Anil Kumar on 16 Jul 2017
Edited: Walter Roberson on 16 Jul 2017
I changed the variable name Vs to Vs1 in the solve eqns. But still it gives me the same error. the constants are having the mentioned values. if Qs+Qsc=0 then Vs should be having a unique value theoretically. But solution shows that explicit solution could not be found....
syms Vs1 Ga y k1 e x Theta nstar Nb Pb Ld ub
eqns=-e/(1+(Ga*exp(-y/k1))*exp(x/k1)*exp(-(e*Vs1/k1)))*Theta*nstar+sqrt(2)*(Nb+Pb)*e*Ld*sqrt((cosh(ub+(e*Vs1/k1)))/cosh(ub)-(e*Vs1/k1)*tanh(ub)-1)==0
Vs= solve(eqns, Vs1)

Sign in to comment.

Accepted Answer

Walter Roberson
Walter Roberson on 16 Jul 2017
You write,
K=1.3807*10^-23;
This is incorrect. K = 1.38064852*10^(-23) +/- 79 * 10^(-30).
You have asked for an exact solution to a calculation using incorrect values -- notice that even if you only used 5 significant digits then you should have written K=1.3806*10^-23 not K=1.3807*10^-23
I could go through and pick on your other floating point constants as well, and I could point out that MATLAB's internal representation of what you wrote would in fact be K = 1.380699999999999892724734311718274525674787081853034352153149493143413639728578345966525375843048095703125e-23 .
What you need to understand from this is that it is almost always an error to ask for exact solutions to any equation in which you have used even one floating point number.
Also, you have
Vs=0.2
and you use that value, and then later you have
syms Vs Ga y k1 e x Theta nstar Nb Pb Ld ub
eqns=-e/(1+(Ga*exp(-y/k1))*(exp(x/k1)*exp(-(e*Vs(1)/k1))*Theta*nstar==sqrt(2)*(Nb+Pb)*e*Ld*sqrt((cosh(ub+(e*Vs))/k1))/(cosh(ub-(e*Vs)))/(k1)*tanh(ub)-1))
Vs= solve(eqns, Vs)
in which you confusingly use the same variable name Vs .
Notice that your equation includes exp(-(e*Vs(1)/k1)) . MATLAB would resolve that to Vs because that that point Vs would be a scalar symbol, but it is confusing to the reader. Are you expecting Vs to be solved to become a vector and at that particular point you only want the first element of the vector? Did some characters go missing between the Vs and the (1) ?
If you make the assumption that each constant represents an exact decimal, such as assuming that 2.42*1.6*10^-19; represents exactly (242/100)*(16/10)*1/(10^19), and work in the symbolic toolbox, then if you take the left hand side of eqns minus the right hand side of eqns, turning in into an expression in a single variable, you will find that at no point does the difference become zero. The limit as the single variable approaches -infinity is
1/(6250000000000000000*(1-2*exp(-6400/207)))
which is about 1.60000000000011958803665930542*10^(-19) . The limit as the single variable approaches +infinity is
exp(-6400/207)/(3125000000000000000*(1-2*exp(-6400/207)))
which is about 1.19588036659305418113895190508*10^(-32) . Both of these are positive and the expression is monotonically decreasing, so the expression does not pass through zero.
Therefore under the assumption that the constants given are completely correct, there are no solutions to the equation.
  5 Comments
Anil Kumar
Anil Kumar on 19 Jul 2017
Edited: Walter Roberson on 19 Jul 2017
I got following error
Error using getEqnsVars (line 50)
Expecting two arguments: a vector of equations and a vector of variables.
Error in sym/vpasolve (line 95)
[eqns,vars] = getEqnsVars(varargin{1:N});
Error in Anilpaper174 (line 83)
Vs1=
vpasolve(-e/(1+(Ga*exp(-y/k1))*exp(x/k1)*exp(-(e*Vs1/k1)))*Theta*nstar+sqrt(2)*(Nb+Pb)*e*Ld*sqrt((cosh(ub+(e*Vs1/k1)))/cosh(ub)-(e*Vs1/k1)*tanh(ub)-1)==0,
Vs1,'random',true)
Walter Roberson
Walter Roberson on 19 Jul 2017
The 'random' option for vpasolve requires R2014a or later.
Your code has no solution when you
syms Vs1 Ga y k1 e x Theta nstar Nb Pb Ld ub
right before creating eqns . You need the numeric values that you created earlier. When you syms at that point you are asking for a full symbolic solution (ignoring all the numeric work you did to get to that point in the code), and there simply is no closed form solution for that equation.

Sign in to comment.

More Answers (1)

Meghana Deshattiwar
Meghana Deshattiwar on 2 Sep 2020
I am trying to find charge carrier concentration for single parabolic modeling,I am getting following error
n=@(eta)(2*100*1.38064852*10^(-23)*700)^(3/2)/(2*pi^0.5*6.6262*10^(-34)^3)*F(1/2)
n =
function_handle with value:
@(eta)(2*100*1.38064852*10^(-23)*700)^(3/2)/(2*pi^0.5*6.6262*10^(-34)^3)*F(1/2)

Categories

Find more on Symbolic Math Toolbox in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!