matlab求解二次方程组

问题描述:

matlab求解二次方程组
clear
format
syms Ls Lw Ts Tb Te Tc Tns Tn Tp Q Ps1 P1 P2 P3 P4 P5 P6 P7 P8 P9 P10 Ps2 S
k=1.38e-23;%波尔兹曼常数
T=300;%温度
e=1.6e-19;
m=0.067*9.108e-31;%电子有效质量
%m=0.5*9.108e-31;%空穴有效质量
E=0.1*1.6e-19;%势垒高度
Lb=10e-9;%垒层高度
Ls=100e-9;%SCH层高度
Lw=5e-9;%阱层厚度
Ts=45e-12;%载流子穿越SCH层时间 10ps 10ps
Tb=0.1e-12;%载流子扩散势垒层时间
Te=(2*pi*m*Lw*Lw/(k*T))^0.5*exp(E/k/T);
Tc=20e-12;%载流子阱间输运时间 1e-10
Tns=10e-9;%载流子SCH层复合寿命 10ns
Tn=10e-9;%载流子量子阱层复合寿命 10ns
M=10;
Tw=0.03;
vg=3e18;
eslo=1e-17;
T=M*Tw;
G0=150000;A=1e8;B=1e-16;C=1e-41;N=1e19;N0=1e18;
g=G0*log((A*N+B*N^2+C*N^3)/(A*N0+B*N0^2+C*N0^3));
w=1;%元频率=1
%S=1e22;%e22量级
%G=M*Tw*vg*g*(1-eslo*T*S)*S
%3e23*(1-3e-18*S)*S
f1=-i*w*Ps1+Q-(1/Ts+1/Tns)*Ps1+(P1/Te)*(Lw/Ls)-3e23*(1-3e-18*S)*S;
f2=-i*w*P1+(Ps1/Ts)*(Ls/Lw)-(P1-P2)/Tc-(1/Tn+1/Te)*P1-3e23*(1-3e-18*S)*S;
f3=-i*w*P2+(P1-P2)/Tc-(P2-P3)/Tc-P2/Tn-3e23*(1-3e-18*S)*S;
f4=-i*w*P3+(P2-P3)/Tc-(P3-P4)/Tc-P3/Tn-3e23*(1-3e-18*S)*S;
f5=-i*w*P4+(P3-P4)/Tc-(P4-P5)/Tc-P4/Tn-3e23*(1-3e-18*S)*S;
f6=-i*w*P5+(P4-P5)/Tc-(P5-P6)/Tc-P5/Tn-3e23*(1-3e-18*S)*S;
f7=-i*w*P6+(P5-P6)/Tc-(P6-P7)/Tc-P6/Tn-3e23*(1-3e-18*S)*S;
f8=-i*w*P7+(P6-P7)/Tc-(P7-P8)/Tc-P7/Tn-3e23*(1-3e-18*S)*S;
f9=-i*w*P8+(P7-P8)/Tc-(P8-P9)/Tc-P8/Tn-3e23*(1-3e-18*S)*S;
f10=-i*w*P9+(P8-P9)/Tc-(P9-P10)/Tc-P9/Tn-3e23*(1-3e-18*S)*S;
f11=-i*w*P10+(Ps2/Ts)*(Ls/Lw)+(P9-P10)/Tc-(1/Tn+1/Te)*P10-3e23*(1-3e-18*S)*S;
f12=-i*w*Ps2+-Ps2/Ts-Ps2/Tns+(P10/Te)*(Lw/Ls)-3e23*(1-3e-18*S)*S;
f13=-i*w*S+3e23*(1-3e-18*S)*S-S/Tp;
[Ps1,P1,P2,P3,P4,P5,P6,P7,P8,P9,P10,Ps2,S]=solve(f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,'Ps1','P1','P2','P3','P4','P5','P6','P7','P8','P9','P10','Ps2','S')
ps1=eval(Ps1);%
p1=eval(P1);%
p2=eval(P2);%
p3=eval(P3);%
p4=eval(P4);%
p5=eval(P5);%
p6=eval(P6);%
p7=eval(P7);%
p8=eval(P8);%
p9=eval(P9);%
p10=eval(P10);%
ps2=eval(Ps2);%
P=[ps1,p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,ps2]/1e6;
%P=[Ps1/1e6,P1/1e6,P2/1e6,P3/1e6,P4/1e6,P5/1e6,P6/1e6,P7/1e6,P8/1e6,P9/1e6,P10/1e6,P11/1e6,P12/1e6,Ps2/1e6]*1e6;
N=[1,2,3,4,5,6,7,8,9,10,11,12];
bar(N,P)
P
提示错误:
Error using ==> strcmp
Function 'strcmp' is not defined for values of class 'sym'.
Error in ==> D:\MATLAB6p5\toolbox\matlab\specgraph\makebars.m
On line 49 ==> if strcmp(varargin{nin},'3'),
Error in ==> D:\MATLAB6p5\toolbox\matlab\specgraph\bar.m
On line 36 ==> [msg,x,y,xx,yy,linetype,plottype,barwidth,equal] = makebars(varargin{:});
Error in ==> D:\MATLAB6p5\work\物构所\量子阱\tenqwdongtaiequ.m
On line 82 ==> bar(N,P)
该方程组是二次方程组,貌似超出matlab计算长度,谁能帮忙修改下,
fsolve也试过了,还是不行,谁能给个可运行程序啊
clear
P0 = [1e26;1e26;1e26;1e26;1e26;1e26;1e26;1e26;1e26;1e26;1e25;1e25;1e22]; % 初始点
options=optimset('Display','iter'); % 显示输出信息
[P,fval] = fsolve(@myfun2,P0,options)
P=[P(11);P(1);P(2);P(3);P(4);P(5);P(6);P(7);P(8);P(9);P(10);P(12)]
N=[1,2,3,4,5,6,7,8,9,10,11,12];
p=P/1e6;
bar(N,p);
1个回答 分类:综合 2014-12-16

问题解答:

我来补答
二次方程组用fsolve求解吧,用solve可能接不出来呢,因为solve是解线性方程组的.
再问: fsolve也试过了,依然无法求解呀 clear P0 = [1e26;1e26;1e26;1e26;1e26;1e26;1e26;1e26;1e26;1e26;1e25;1e25;1e22]; % 初始点 options=optimset('Display','iter'); % 显示输出信息 [P,fval] = fsolve(@myfun2,P0,options) P=[P(11);P(1);P(2);P(3);P(4);P(5);P(6);P(7);P(8);P(9);P(10);P(12)] N=[1,2,3,4,5,6,7,8,9,10,11,12]; p=P/1e6; bar(N,p);
再答: 我试试给你改改吧,Tp没有初值嘛?而且出现了两个T得值T=300;%温度 T=M*Tw;
再问: 谢谢啊,Tp=1e-12;T=300,另一个T=M*Tw删掉
再答: 额,不好意思啊,我看半天实在整不出来,不好意思了
再问: 还是非常感谢你
 
 
展开全文阅读
剩余:2000