の論文にある例。 2つのトランジスタを含む回路の動作点(解)の数は従来最大3つであると 考えられていたが、この論文で5つの解を持つ例が示された。 その方程式は以下の通り。未知数は\(V_1, V_2, V_3, V_4\)。 \[ \begin{pmatrix} 1 & -\alpha_r & 0 & 0 \\ -\alpha_f & 1 & 0 & 0 \\ 0 & 0 & 1 & -\alpha_r \\ 0 & 0 & -\alpha_f & 1 \end{pmatrix} \begin{pmatrix} \frac{I_s}{\alpha_f}(e^{\frac{V_1}{V_T}}-1) \\ \frac{I_s}{\alpha_r}(e^{\frac{V_2}{V_T}}-1) \\ \frac{I_s}{\alpha_f}(e^{\frac{V_3}{V_T}}-1) \\ \frac{I_s}{\alpha_r}(e^{\frac{V_4}{V_T}}-1) \end{pmatrix} + \begin{pmatrix} 2G_b + G_c & -(G_b + G_c) & -2G_b & G_b \\ -(G_b + G_c) & G_b + G_c & G_b & 0 \\ -2G_b & G_b & 2G_b + G_c & -(G_b+G_c) \\ G_b & 0 & -(G_b + G_c) & G_b + G_c \end{pmatrix} \begin{pmatrix} V_1 \\ V_2 \\ V_3 \\ V_4 \end{pmatrix} + \begin{pmatrix} G_c V_{cc} \\ G_b V_s - G_c V_{cc} \\ G_c V_{cc} \\ G_b V_s - G_c V_{cc} \end{pmatrix} = \begin{pmatrix} 0 \\ 0 \\ 0 \\ 0 \end{pmatrix} \] \begin{align} \mathrm{where} \\ G_b &= 1/R_b \\ G_c &= 1/R_c \\ R_b &= 10^4 \\ R_c &= 5 \times 10^3 \\ V_{cc} &= -5 \\ \alpha_f &= 0.99 \\ \alpha_r &= 0.5 \\ I_s &= 10^{-9} \\ V_T &= 0.053 \\ V_s &= -0.64 \end{align} この方程式の5つの解を非線形方程式の全解探索プログラムで探索してみる。
このプログラムを実行すると、
[4]([0.70356598164369243,0.70363160049497453],[-0.72265625,-0.72143622077293478],[0.74230000554159702,0.74233295475972683],[0.6198074492962462,0.61996680696900542])(ex) [4]([0.70358963169344701,0.70358963169362677],[-0.72180712343566756,-0.72180712342886677],[0.74231647296775893,0.74231647296781967],[0.61988728360925959,0.61988728360955603])(ex:improved) [4]([0.71987945704442757,0.71991981499962843],[-0.0034523581433403496,-0.00244140625],[0.7355023219369261,0.73552255604547645],[0.57546705397045905,0.57563759442400664])(ex) [4]([0.71990164129087852,0.71990164129099532],[-0.003335867014043125,-0.0033358670081318586],[0.73551253992991871,0.73551253992997967],[0.57555293496204418,0.57555293496258942])(ex:improved) [4]([0.74230139160766606,0.7423315678063569],[0.61981417508245506,0.61996014351137508],[0.70356604997670513,0.70362832229358996],[-0.72265625,-0.72149841028493844])(ex) [4]([0.74231647296775959,0.74231647296781911],[0.61988728360926281,0.61988728360955337],[0.70358963169344879,0.70358963169362488],[-0.72180712343560172,-0.7218071234289427])(ex:improved) [4]([0.7355024825637294,0.73552237646543628],[0.57546830409154858,0.57563623001366749],[0.71987991176740129,0.71991980140167178],[-0.003440782931533068,-0.00244140625])(ex) [4]([0.73551253992991894,0.73551253992997923],[0.57555293496204606,0.57555293496258542],[0.7199016412908793,0.7199016412909951],[-0.0033358670140009599,-0.0033358670081407915])(ex:improved) [4]([0.72925176532520441,0.72932695555387029],[0.47024015360242243,0.47265286297307325],[0.72925747404052254,0.72932241572766921],[0.47042364565773697,0.47250638247688682])(ex) [4]([0.72928963256368528,0.72928963256369895],[0.47145516180306784,0.47145516180350878],[0.72928963256368528,0.72928963256369895],[0.47145516180306701,0.47145516180350833])(ex:improved) ne_test: 295668, ex_test: 145259, ne: 147816, ex: 5, giveup: 0のようになった。 すなわち、V1-V4を-10から10の範囲として探索したところ、 295668回の非存在テストと145259回の存在テストを行い、147816個の非存在領域と 5つの存在領域の特定に成功し、5つの解は
V1 | V2 | V3 | V4 | |
(1) | [0.70358963169344701,0.70358963169362677] | [-0.72180712343566756,-0.72180712342886677] | [0.74231647296775893,0.74231647296781967] | [0.61988728360925959,0.61988728360955603] |
(2) | [0.71990164129087852,0.71990164129099532] | [-0.003335867014043125,-0.0033358670081318586] | [0.73551253992991871,0.73551253992997967] | [0.57555293496204418,0.57555293496258942] |
(3) | [0.74231647296775959,0.74231647296781911] | [0.61988728360926281,0.61988728360955337] | [0.70358963169344879,0.70358963169362488] | [-0.72180712343560172,-0.7218071234289427] |
(4) | [0.73551253992991894,0.73551253992997923] | [0.57555293496204606,0.57555293496258542] | [0.7199016412908793,0.7199016412909951] | [-0.0033358670140009599,-0.0033358670081407915] |
(5) | [0.72928963256368528,0.72928963256369895] | [0.47145516180306784,0.47145516180350878] | [0.72928963256368528,0.72928963256369895] | [0.47145516180306701,0.47145516180350833] |
のように精度保証付きで得られた。
実行結果は以下の通り。
すなわち、固有値は、 \[ [2.122442998078283,2.1224429980782956] \] に存在し、固有関数を描画すると
のようになる。
更に、固有値の近似として \begin{align} & 3.6078 \\ & 6.0016 \\ & 9.3773 \\ & 13.7298 \\ & 19.053 \end{align} を用いて同様の計算を行なうと、固有値は \begin{align} & [3.6078101471559307,3.607810147155961] \\ & [6.0016132242501019,6.0016132242501695] \\ & [9.3772846770430859,9.3772846770432033] \\ & [13.729809464569756,13.729809464569945] \\ & [19.053238318275418,19.053238318275711] \end{align} のように精度保証され、それらの固有関数を先の固有関数と併せて描画すると、
のようになった。
更に、プログラムをわずかに変更して固有値の全解探索をさせてみる。 探索範囲を[0,20]としてそこに含まれる全ての固有値を計算するプログラムは、
の通り。実行結果は、[1]([2.0986626091980888,2.161736165269347])(ex) [1]([2.122442998078283,2.1224429980782951])(ex:improved) [1]([3.6062683995352315,3.609976767107979])(ex) [1]([3.6078101471559311,3.6078101471559605])(ex:improved) [1]([6.0004425545043877,6.0028424238613436])(ex) [1]([6.0016132242501019,6.0016132242501686])(ex:improved) [1]([9.3771351052845197,9.3775358438725825])(ex) [1]([9.3772846770430859,9.3772846770432033])(ex:improved) [1]([13.72974816853938,13.729896530042041])(ex) [1]([13.729809464569756,13.729809464569942])(ex:improved) [1]([19.053166776104859,19.053276214137953])(ex) [1]([19.053238318275418,19.053238318275711])(ex:improved) ne_test: 128, ex_test: 6, ne: 56, ex: 6, giveup: 0のようになった。これが[0,20]に含まれる全ての固有値であり、すなわち 先に近似値を元に計算した固有値が第1-第6固有値であることを示している。