Matlab-1D与存储在多个变量中的函数的数值积分

时间:2016-02-01 07:56:30

标签: matlab integration numerical

正如您在下面的最后几行中所看到的,我正在尝试将我的函数存储在多个变量上,因为它变得相当难看。但是,这样做会产生如下所示的错误。

对此的修复方法是手动替换/Applications/MAMP/bin/php/php7.0.0/bin/pecl install oci8. k,但这正是我要避免的。任何帮助,将不胜感激。谢谢!

kp

错误

clc
clear

hbar = 1.055e-34;
mo = 9.1095e-31;
q = 1.602e-19;
kb=1.38065e-23;
T=298;
Ef = -0.1*q; % -100meV in units Joules
V0 = 1*q;
L = 1e-9;



k = @(E) (2*mo*E/hbar.^2)^.5;
kp = @(E) (2*mo*(V0-E)/hbar.^2)^.5;
fun = @(E) (exp(-2*kp*L) .* ((16*k.^2 .* kp.^2) ./ ((k.^2 + kp.^2).^2))) .* exp(-E./(kb*T));

Q = integral(fun,0,inf);

1 个答案:

答案 0 :(得分:0)

在此使用

k = @(E) (2.*mo.*E./hbar.^2).^.5;
kp = @(E) (2.*mo.*(V0-E)./hbar.^2).^.5;
fun = @(E) (exp(-2*kp(E)*L).*((16*k(E).^2.*kp(E).^2)./((k(E).^2+kp(E).^2).^2))).*exp(-E./(kb*T));
Q = integral(fun,0,inf);

我认为你需要传递参数E,那么你确定kb*T是正确的吗?也许kp(E)*T?然后,您忘记.kkp的sqrt,或者如果它不是sqrt,则点位于电源符号的错误一侧。