Converting equation to matlab

Hi, I am trying to convert the following equation to matlab code. I have a bunch of defined constants above this code but I am trying to figure out if my formatting is correct since I keep getting the wrong answer. I need to multiply the two functions and they are dependant on the variable E, everything else is a constant. Thanks!Capture.PNG
Capture2.PNG

4 Comments

Is E a row vector and all others are scalar?
Christos Papedo
Christos Papedo on 27 Sep 2019
Edited: Christos Papedo on 27 Sep 2019
Yes exactly. Here are my variable definitions. My N matrix should be in the order of 10^21 but I am getting 10^-12
clear, clc;
m = 9.11*10^(-31);
h = (6.63/(2*pi))*10^(-34)*(6.242*10^18); % corrected to change J to eV
q = 1.6*10^(-19);
k = 1.38*10^(-23)*(6.242*10^18); % corrected to change J to eV
T = 300;
Ef = 0; %Assuming fermi level is at 0
Ec = Ef + .55;
E = Ec:.001:Ec +.3;
g = (1/(2*(pi^2)*(h^3)))*((2*m)^(3/2))*(sqrt(E-Ec));
f = 1./(1+exp((E-Ef)./(k*T)));
N = g.*f;
Jon
Jon on 27 Sep 2019
Edited: Jon on 27 Sep 2019
For the future, it is good to use the insert code button on the Answers toolbar to insert code rather than using a screen shot. Then people can easily copy and paste from there to try your code without having to retype it.
Always post the code, don’t let others type the same code.

Sign in to comment.

 Accepted Answer

Jon
Jon on 27 Sep 2019
Edited: Jon on 27 Sep 2019
% note .* to get element by element multiplication
% ./ for element by element division
g = 1.0/(2*pi^2*h^3)*(2*m)^(3/2)*sqrt(E-Ec)
f = 1.0 ./(1+exp((E-Ef)/(k*T)))
N = g.*f
Sorry I didn't notice you already had some code for N = g.*f at the bottom of your original post, I just saw the typeset equations. Maybe this is equivalent what you already have. If so I guess there is a problem in your definition of the constants. In any case you have some unecessary parenthesis and also the ./ in your first equation is not needed when the denominator is a scalar.
You also have some apparently unecessary parentheses in your definition of the constants. This is a good reference on Matlab's precedence rules https://www.mathworks.com/help/matlab/matlab_prog/operator-precedence.html

More Answers (1)

SUFIZATUL AIN MAMAT
SUFIZATUL AIN MAMAT on 26 Apr 2022
f\left(x\right)=-3x^3+5x^2+14x-16

Products

Release

R2019b

Tags

Community Treasure Hunt

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

Start Hunting!