2012-04-29 6 views
-2
(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); 

を解決するための関数fminsearchを使用して、私はvgbの異なる値に対してphy_sをプロットする必要があります。

私は多くの方法を試しましたが、私はmatlabに慣れて以来、私は自分の学習過程にいるので、適切な解決策を見つけることができません。

私は、fminsearchを使用するように勧められた人はほとんどいませんが、かなり混乱しており、多くのエラーが発生しています。

+0

'(x-y)^ 2 = k'という形式のグラフを作成しようとしています。いくつかの簡単な代数を使って 'x'の形で' y'の式を得ることができます。 –

+0

まあ、ありがとう。しかし、fminsearchコマンドを上記の式に使用できますか? – ANS

+0

あなたの方程式は間違っています: '['ではなく ']'があります。さらに、MATLABは、連結順序と行列に '['と ']'を使用しますが、操作順序には使用しません。そして、MATLABでは '2phi_b'は有効な式ではありません。 '2 * phi_b'を使う必要があります。質問を編集し、これらの不適切な表現を修正して、解決しようとしている方程式または方程式のグループが何であるかが明確になるようにしてください。 – nrz

答えて

0

fminsearchは、関数の最小値を求める関数であり、式の解を求めるための関数ではありません。さらに、ここでは1つの方程式を持つのではなく、少なくとも5つの方程式の方程式群を持っています。方程式と方程式のグループを解くにはsolveを使うことができます。しかしながら、以下の式1-5の等式群は明白な解を持たない。もう1つの問題は、あなたが提案する定数値が不正確な値であるように見えることです.2つ以上の丸め値または不正確な値がある場合、方程式グループが解ける場合でも解を見つけることができません(ただし、この式グループは[明示的な解決策がある])。

これを解決するための手順を示しますが、[おそらく不正確な]定数定義(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の方程式群は、異なる解を与える。

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'); 

しかし、何の解決策はありません:あなたはこれを使用することができ、すべての5次方程式の方程式グループが解決

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

Solution = 
[ empty sym ] 

だから、私はあなたが何を見つけることを試みることを示唆していますあなたの方程式に間違っており、修正された方程式でsolveをやり直してみてください。