我有一个方程,基本上说,其中输出是所需的,取决于三个常数,输出取决于。
我的问题是我需要有效地解决的以下方程,
谁能想到一种以更有效的方式设置grain或stp_size的方法,或者提出一种更快的计算方法?我想要的输出也如下所示,它的一般形式对于以后的分析非常重要。

函数计算
上限=1.8531;下限=-1.8531;
stp_size=0.001;
V=[下限:stp_size:上限];
对于 j = 1 : 1 : 长度 (V) J(1,j) = 5.5801*10^(-31) * ( exp(- 1 * V(j) / (1 * 8.6174*10^(-5) * 300))-1)*100 - 7.5265; %这是公式 (1) 如果 J(1,j) > 0 J(1,j) = 0; 结束结束
对于 j = 1:长度(V)J_BV(j) = (10^(-5) * ( exp( ( 1.7 * 1 * 9.6485*10^4 *V(j) )/(8.3145*300) ) - exp ( -(0.1 * 1* 9.6485*10^4 * V(j)/ (8.3145*300) ) ) )); 结尾
GIA = V + 1.2290;
输出=OP(GIA,-J);
对于 i = 1:长度(输出)如果 isnan(输出(i)) GIA(i)= NaN;J(i) = NaN;
end endplot(GIA+OUTPUT, -J, 'p', 'displayname', 'desired output') 等一下;绘图(GIA,-J,'r','displayname','input')图例('toggle')xlim([-0.7 0.3])结束
函数 OUTPUT=OP(V, J)
输出 = 零(1,长度(V));
对于 j = 2:长度(V)B = 10^(-5);C = 1.7 * 1 * 9.6485*10^4/(8.3145*300);D = 0.1 * 1 * 9.6485*10^4/(8.3145*300);x_0 = 实数(-(8.3145*300 / (C * 1 * 9.6485*10^4)) * log( - J(1,j)/B )); %first guess clear x f_=@(x)B*( exp(C*(x) ) - exp(-D*(x)) ) - J(1,j); %这是公式(2)
if isinf(x_0) x_0=0; end options=optimset('TolX', 1*10^(-1)); if isinf( f_(x_0) ) OUTPUT(1,j) = NaN; else [ OUTPUT(1,j), fval, exitvalue ] = fzero( f_, x_0, options); if exitvalue == -3 OUTPUT(1,j) = NaN; end end end结尾