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
用更正的方程再试一次。