matlab syms使用报错

亲们想问一下这个MATLAB脚本
代码怎么错了,一直不太懂:

clc;
clear;
q=1.6*10^(-19);  ap=1.582*10^6;
e0=8.85*10^(-12); er=11.9;
A=1.8*10^35;   an=7.03*10^5; 
bp=2.036*10^6;   bn=1.231*10^6;
u=1360;

syms     NB   t  x Wc
k0=-q*NB/(er*e0);   
E0=-(k0*Wc);
E=k0*x+E0;
anzhu=7.03*10^5*exp(-bn./(k0*x+E0));
apzhu=bn*exp(-bp./(k0*x+E0));

f=exp(t)/t;

Ei1=int(f,t,-inf,-(bn/E0));
Ei2=int(f,t,-inf,-(bp/E0));

F0=(an*bn*Ei1-ap*bp*Ei2+(an*exp(-bn/E0)-ap*exp(-bp/E0))*E0)/k0;

Ei3=int(f,t,-inf,-bn/(k0*x+E0));
Ei4=int(f,t,-inf,-bp/(k0*x+E0));

MOM=int(anzhu*exp(-ap/k0*(bp*Ei3+E0*exp(Ei4))-F0),x,0,Wc);
eqn=[MOM==1];
var=[Wc];
[Wc]=solve(eqn,var);
Ronsp=Wc./(q*u*NB);
BVpp=int(k0*x+E0,x,0,Wc);
Wc
NB

在这个MATLAB脚本中,有几个可能的问题。这个脚本在MATLAB中运行可能会出现一些错误,这些错误主要包括变量的使用,函数的定义和公式的使用。以下是我发现的一些问题和建议的修正:

  1. 你在这个脚本中使用了符号计算(syms函数),但是在使用符号计算的时候,要特别注意确保所有的符号都已经定义。例如,在这个脚本中,你使用了符号NBtxWc,但是这些符号在后面的计算中都没有被赋值,这可能会导致MATLAB报错。你应该在使用这些符号之前给它们赋值。

  2. 你在脚本中使用了int函数,这个函数在MATLAB中是用来计算数值积分的,但是你在使用这个函数的时候,没有提供必要的参数。比如Ei1=int(f,t,-inf,-(bn/E0));这一行,你没有定义函数f的积分范围。你应该在使用int函数之前定义好积分范围。

  3. 你在脚本中使用了solve函数,这个函数在MATLAB中是用来求解方程的,但是你在使用这个函数的时候,没有提供必要的参数。比如[Wc]=solve(eqn,var);这一行,你没有定义方程eqn和变量var。你应该在使用solve函数之前定义好方程和变量。

  4. MOM=int(anzhu*exp(-ap/k0*(bp*Ei3+E0*exp(Ei4))-F0),x,0,Wc);这一行中,你没有正确地定义MOM函数。你应该使用MOM = @(x) anzhu*exp(-ap/k0*(bp*Ei3+E0*exp(Ei4))-F0);来定义MOM函数。

  5. 最后,你的脚本结束的时候,没有对WcNB进行任何操作或输出,这可能会导致MATLAB报错。你应该在脚本的最后添加一些操作,比如输出这两个变量的值。

请尝试对以上这些问题进行修正,然后再运行你的MATLAB脚本,看看是否还有其他的问题需要解决。

代码复制到记事本发给我

你的MATLAB代码中的问题在于定义了一个名为"var"的变量,但是"var"是MATLAB内置函数的名称。将"var"改为其他名字,如"var1"就可以解决这个问题。同时,将最后一行的<请填写下限><请填写上限>替换为正确的数值范围。

下面是修改后的代码:

clc;
clear;

q = 1.6*10^(-19);
ap = 1.582*10^6;
e0 = 8.85*10^(-12);
er = 11.9;
A = 1.8*10^35;
an = 7.03*10^5;
bp = 2.036*10^6;
bn = 1.231*10^6;
u = 1360;

syms NB t x Wc
k0 = -q*NB/(er*e0);
E0 = -(k0*Wc);
E = k0*x + E0;
anzhu = 7.03*10^5*exp(-bn./(k0*x+E0));
apzhu = bn*exp(-bp./(k0*x+E0));

f = exp(t)/t;

Ei1 = int(f,t,-inf,-(bn/E0));
Ei2 = int(f,t,-inf,-(bp/E0));

F0 = (an*bn*Ei1 - ap*bp*Ei2 + (an*exp(-bn/E0) - ap*exp(-bp/E0))*E0)/k0;

Ei3 = int(f,t,-inf,-bn/(k0*x+E0));
Ei4 = int(f,t,-inf,-bp/(k0*x+E0));

MOM = int(anzhu*exp(-ap/k0*(bp*Ei3 + E0*exp(Ei4))-F0),x,0,Wc);

eqn = [MOM == 1];
var1 = [Wc];
[Wc] = solve(eqn,var1);

Ronsp = Wc./(q*u*NB);
BVpp = int(k0*x+E0,x,0,Wc);

请注意,最后一行代码中的下限是0,上限是Wc。请根据具体情况填写正确的数值范围。