fminsearch
は、方程式の解を見つけるためではなく、関数の最小値を見つけるための関数です。さらに、ここでは1つの方程式ではなく、少なくとも5つの方程式の方程式グループがあります。solve
方程式と方程式グループを解くために使用できます。ただし、次の方程式1〜5の方程式グループには、明示的な解がありません。もう1つの問題は、提案する定数値が不正確な値であるように見えることです。複数の丸められた値またはその他の不正確な値がある場合、方程式グループが解ける場合でも解を見つけることができません(ただし、この方程式グループには[明示的な]解決策))。
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
したがって、方程式の何が問題になっているのかを見つけてから、修正した方程式で再試行することをお勧めします。