使用fminsearch来解决方程式

时间:2012-04-29 13:32:10

标签: matlab equation-solving fminsearch

(vgb-phy_s)^2=G^2*phy_t*((exp(-x)+x-1)+exp(-(2*phi_b/phi_t))*(exp(x)-x-1))

,其中

x=phy_s/phy_t
phy_t=0.0288; % phy_t=k*T/q; (k=1.3806503*10^-23, T=300 K, q=1.6*10^-19)
phy_b=0.5267; % phy_b=phy_t*ln(Na/ni)
G=(sqrt(2*q*es*Na)/cox);

在此,我需要为phy_s的不同值绘制vgb

我尝试了很多方法,但由于我是matlab的新手,我正在学习,我无法找到合适的解决方案。

很少有人建议我使用fminsearch,但它很混乱,而且我遇到了很多错误。

1 个答案:

答案 0 :(得分:0)

fminsearch是一个函数,用于查找函数的最小值,而不是查找等式的解。此外,这里没有一个方程,而是一个至少包含5个方程的方程组。您可以使用solve来求解方程组和方程组。然而,以下等式1-5的等式组没有明确的解决方案。另一个问题是你提出的常数值似乎是不精确的值,如果你有一个以上的舍入或不精确的值,即使方程组是可解的,你也找不到解决方案(但是,这个方程组没有[明确的]解决方案))。

所以,我将展示解决这个问题的步骤,但这个方程组似乎有问题,即使[可能不精确]常量定义(phy_t=0.0288; phy_t=k*T/q; (k=1.3806503*10^-23; T=300; q=1.6*10^-19; phy_b = 0.5267;`)仍然存在进行。

方程式(没有常数定义):

1. (vgb-phy_s)^2 = G^2*phy_t*((exp(-x)+x-1)+exp(-(2*phi_b/phi_t))*(exp(x)-x-1))
2. x = phy_s/phy_t
3. phy_t = k*T/q
4. phy_b=phy_t*ln(Na/ni)
5. G=(sqrt(2*q*es*Na)/cox)

解决例如。方程组1,2和& 3:

Solution = solve('(vgb-phy_s)^2 = G^2*phy_t*((exp(-x)+x-1)+exp(-(2*phi_b/phi_t))*(exp(x)-x-1))', 'x = phy_s/phy_t', 'phy_t = k*T/q');

Solution.q
ans =
(T*k)/phy_t
(T*k)/phy_t

Solution.vgb
ans =
phy_s + (G*phy_t^(1/2)*(exp((2*phi_b)/phi_t) - exp(phy_s/phy_t) + exp((2*phy_s)/phy_t) - exp((2*phi_b)/phi_t)*exp(phy_s/phy_t) - (phy_s*exp(phy_s/phy_t))/phy_t + (phy_s*exp((2*phi_b)/phi_t)*exp(phy_s/phy_t))/phy_t)^(1/2))/(exp((2*phi_b)/phi_t)^(1/2)*exp(phy_s/phy_t)^(1/2))
phy_s - (G*phy_t^(1/2)*(exp((2*phi_b)/phi_t) - exp(phy_s/phy_t) + exp((2*phy_s)/phy_t) - exp((2*phi_b)/phi_t)*exp(phy_s/phy_t) - (phy_s*exp(phy_s/phy_t))/phy_t + (phy_s*exp((2*phi_b)/phi_t)*exp(phy_s/phy_t))/phy_t)^(1/2))/(exp((2*phi_b)/phi_t)^(1/2)*exp(phy_s/phy_t)^(1/2))

Solution.x
ans =
phy_s/phy_t
phy_s/phy_t

请注意,此解决方案仅适用于方程式1-3的方程组。例如,方程组1,2,4或1,2,5给出了不同的解。

要求解所有5个方程的方程组,您可以使用它:

Solution = solve('(vgb-phy_s)^2 = G^2*phy_t*((exp(-x)+x-1)+exp(-(2*phi_b/phi_t))*(exp(x)-x-1))', 'x = phy_s/phy_t', 'phy_t = k*T/q', 'phy_b = phy_t*ln(Na/ni)', 'G = sqrt(2*q*es*Na)/cox');

然而,没有解决方案:

Warning: Explicit solution could not be found. 
In solve at 160 

Solution =
[ empty sym ]

所以,我建议您尝试找出方程式的错误,然后再次使用修正的方程式尝试solve