• ベストアンサー

両辺にyを含んだexpの式をグラフ化したいのですが

y=A*(exp((x-y*B)/C)-1)+(x-y*B)/D 上記の式で、定数A,B,C,Dを任意に設定して エクセル上(絶対にエクセルである必要はないんですが)で x-yのグラフを描きたいです。 expの中にyが入っているため、 y=f(x) の形に変形することができません。 よってグラフ化できず、困っています。 A~Dの任意定数と変数xの大まかな範囲は以下の通りです。 A:10^(-10) ~ 10^(-7) B:10 ~ 200 C:0.02 ~ 0.2 D:10^5 ~ 10^7 x:0 ~ 2 A~Dの任意定数を変化させたときの、 グラフの変化の傾向が知りたいです。 よってyは厳密な解である必要はなく、近似値で構いません。 質問は以上です。 何卒力を貸して下さい。よろしくお願いします。 以下、参考になるかわかりませんが、 問題の式がどこから出てきたかの説明です。 現在、ショットキー型ダイオードの特性評価をしており、 サンプルとなるダイオードを以下に示す回路図でモデル化しました。                ダイオード                  ↓               ┌──>l──┐               │        │               │        │ ──/\/\/──┤        ├────               │        │               │        │               └/\/\/-┘ 直列抵抗R1↑   並列抵抗R2↑ (フォントが崩れてないといいんですが・・・見づらくてすいません) 測定対象のダイオードに対して、 直列および並列に抵抗が入っていると考えます。 直列抵抗:ダイオードを形成する各材料による抵抗成分(接触抵抗など) 並列抵抗:ショットキー接合における欠陥によるリーク成分      (低電圧時はR2を通って電流が流れてしまうと考えます) この回路に電圧Vを印加したときに流れる電流Iは I=I0*(exp(q*(V-I*R1)/nkT)-1)+(V-I*R1)/R2 I0:逆方向飽和電流 q:電気素量 n:ダイオードの電気特性を示すnパラメータ k:ボルツマン定数 T:ケルビン温度(ここでは室温:T=300としています) と定義されます。 最初に示した問題の式は I→y V→x I0→A R1→B nkT/q→C R2→D と置き換えを行ったものです。 実際にサンプルを測定して得られたVとIのデータがあり、 そのデータに対してフィッティングをかけて、 A~Dのどのパラメータが支配的なのかを探すことが目的です。

質問者が選んだベストアンサー

  • ベストアンサー
  • inara1
  • ベストアンサー率78% (652/834)
回答No.3

ANo.2です。 プログラムを修正します(1行追加)。こちらを貼り付けてください。 Function fnc1(A As Double, B As Double, C As Double, D As Double, x As Double) As Double ' If x = 0 Then fnc1 = 0 Exit Function End If ' Dim xmin As Double, ymax As Double Dim y As Double, y1 As Double, y2 As Double Dim s As Double, s1 As Double, s2 As Double, eps As Double ' xmin = -10 ' xの最小値 [V] ymax = 10 '  yの最大値 [A] eps = 10 ^ (-10) ' 収束判定 ' y1 = (xmin / D - A) / (1 + B / D) y2 = ymax s1 = A * (Exp((x - B * y1) / C) - 1) + (x - B * y1) / D - y1 s2 = A * (Exp((x - B * y2) / C) - 1) + (x - B * y2) / D - y2 ' While Abs((y1 - y2) / y2) > eps y = (y1 + y2) / 2 s = A * (Exp((x - B * y) / C) - 1) + (x - B * y) / D - y If Sgn(s1 * s) < 0 Then y2 = y Else y1 = y s1 = A * (Exp((x - B * y) / C) - 1) + (x - B * y) / D - y End If Wend fnc1 = y End Function

nohta130
質問者

補足

返事が遅くなってしまい、申し訳ありませんでした。 とても親切な回答をしていただいてありがとうございます。 inara1様のプログラムを使わせていただいたところ、 無事に動作し、自分の望むグラフを得ることができました。 もしよろしければ、このマクロの中身について 教えていただけないでしょうか? >y1 = (xmin / D - A) / (1 + B / D) の部分です。 2分法の計算を行う際の、スタートとなる2点のうちの小さい方を 定義しているのだと思うのですが、なぜこのような形で 定義されているのかがわかりません。

その他の回答 (3)

  • inara1
  • ベストアンサー率78% (652/834)
回答No.4

>無事に動作し、自分の望むグラフを得ることができました 良かったですね お察しの通り、y1 は解の下限で、このプログラムはy1 と ymax の間で解を探しています。 印加電圧が+の場合の y を計算するのであれば、解は必ず+なので y1 = 0 とすればいいです。 最初はそうしましたが、欲を出して x < 0 のときにも解を計算できるようにしたほうがいいかなと考え、y の下限を-側に拡張してみました。初め、y1 をいい加減な値(例えば -1A)としたのですが、そうすると計算途中で y がオーバフローしてしまったので、適切な下限が必要なのではと思って、その下限を考えてみました。 元の式    y = A*[ exp{ ( x - y*B )/C } -1 ] + ( x - y*B )/D はy について解析的に解けませんが、x → -∞ のとき、exp{ } → 0 となるので、逆バイアスが大きいとき、y は次式で近似できます。    y = -A + ( x - y*B )/D これは exp を含まないので y について解けて、その解は    y = ( x/D - A )/ ( 1 + B/D ) となります。これを下限としたら解が収束しました。

nohta130
質問者

お礼

> x < 0 のときにも解を計算できるようにしたほうがいいかなと考え そこまで考えてくださっていたのですか。ありがとうございます。 疑問だった式の意味、よくわかりました。 プログラムだけでなく、マクロの設定の仕方から丁寧に 教えてくださり、助かりました。 お世話になりました。ありがとうございました。

  • inara1
  • ベストアンサー率78% (652/834)
回答No.2

Excelのマクロで y を計算する方法を以下に紹介します。 セルに = func1(A,B,C,D,x) と書けば y(電流)を計算してくれます。 x(電圧)がマイナスでも計算できます(デフォルトは-10Vまで)。 y の相対精度は10^(-10)です(変更可)。動作確認済みです。  (1) Excelシートのメニューの[ツール] → [マクロ] → [Visual Basic Editor]  (2) Visual Vasic Editorのメニューの[挿入] → [標準モジュール]  (3) 出てきた空白画面に以下の文を貼り付ける     ↓ここから Function fnc1(A As Double, B As Double, C As Double, D As Double, x As Double) As Double ' If x = 0 Then fnc1 = 0 Exit Function End If ' Dim xmin As Double, ymax As Double Dim y As Double, y1 As Double, y2 As Double Dim s As Double, s1 As Double, s2 As Double, eps As Double ' xmin = -10 '    xの最小値 [V] ymax = 10 '    yの最大値 [A] eps = 10 ^ (-10) ' 収束判定 ' y1 = (xmin / D - A) / (1 + B / D) y2 = ymax s1 = A * (Exp((x - B * y1) / C) - 1) + (x - B * y1) / D - y1 s2 = A * (Exp((x - B * y2) / C) - 1) + (x - B * y2) / D - y2 ' While Abs((y1 - y2) / y2) > eps y = (y1 + y2) / 2 s = A * (Exp((x - B * y) / C) - 1) + (x - B * y) / D - y If Sgn(s1 * s) < 0 Then y2 = y Else y1 = y End If Wend fnc1 = y End Function    ↑ここまで  (4) その画面を閉じるか、Visual Vasic Editorのメニューの[ファイル] → [終了して Microsoft Excelへ戻る]  (5) ユーザー定義関数 func1(A,B,C,D,x) として使用する 最初、逐次近似法で計算してみましたが、x が大きくなると解が振動してしまいました。これは2分法で y の値を探す方法です。この電流-電圧特性は単調増加なので解は1つしかありません。

回答No.1

はじめまして。 GRAPESというWindowsで動くフリーソフトがあります。 うざったいインストールもいらないという便利な品です。 これを使って、陰関数で定義すると、 y=exp(y-x) y=exp((y-x)/5) のような式もグラフ化できます。 質問者様のような複雑な式はどうかわかりませんが、一度お試しになられてみてはいかがでしょうか。 GRAPES http://www.osaka-kyoiku.ac.jp/~tomodak/grapes/

nohta130
質問者

お礼

返事が遅くなってしまい、申し訳ありませんでした。 早速のご回答、ありがとうございます。 すいません。質問の記入欄でひとつ大事なことを書き忘れてました。 グラフはy軸をログスケールにした片対数グラフで評価しています。 yの値が10^(-10)~10^(-2)と幅広いためです。 >GRAPESというWindowsで動くフリーソフトがあります。 このようなフリーソフトがあるとは知りませんでした。 上記の通り片対数でグラフを表示したいです。 早速このソフトを使ってみましたが、片対数に設定できない (マニュアルは一応目は通したんですが・・・) ため、今回の件では使えませんでした。 ですが、とても便利なソフトを紹介していただき、 ありがとうございました。 このソフト、他の機会で活躍の場がありそうです。

関連するQ&A

  • 式からxとyを求めたい.

    以下の二つの式から、xとyを求めたいのですがどうしても解けません。 (x^2)*(1-a)^2+[1+(1/2)*(r*a*x)^2]y^2 = 2*[1+(r*a*x)^2] 3*(x^2)+y^2 = 6*(1-a) aとrは定数です. 解き方を教えてください。

  • y=A・x・exp(B・√x)の解法

    y=A・x・exp(B・√x) の B・√x≠0のときのxについての解法を教えてください。

  • ダイオードの特性式、順方向降下電圧について

     LEDの特性について理解を深めようとしている者です。 ダイオードの特性式と順方向降下電圧について質問させてください。  ダイオードの順方向降下電圧はダイオードの種類によって様々で、 シリコンダイオードなら0.6Vから0.7V,LEDになると2.0Vから3.5V程度になる、ということを学びました。 また、ダイオードの電流-電圧特性は I=I0{exp(qV/nkT)-1} で与えられる、とさまざまなところで見たのですが、 この式でq,kはそれぞれ電気素量、ボルツマン定数で一定、 nは1から2までの値を取る、 Tは絶対温度、およそ300K、となるので、 結局大きく変わる変数としては逆方向飽和電流I0のみとなると思うのですが、 この式で、例えば順方向降下電圧3.5Vのダイオードの電流-電圧特性のグラフにフィッティングさせようとすると、 I0がとんでもなく小さな値(1.0×10^(-40)A程)になり、いくら逆方向に電流を流さないとはいっても違和感を覚えてしまいます。 pn接合部の抵抗を考え、 V'=V+RI (V'はダイオードと抵抗にかかる電圧の合計、Rは抵抗) の式を先ほどのダイオード特性式に当てはめ、 I=I0{exp(q(V'-RI)/nkT)-1} という式に変形させフィッティングしてみても、順方向降下電圧にはほぼ影響がなく、やはりI0が低い値になってしまいました。 LEDにおいて、順方向降下電圧が上がってしまうのはやはりI0が極端に低いからなのでしょうか、 それとも他に要因があるのでしょうか? LEDだけでなく、順方向降下電圧に同一温度下でも幅が出るのは、すべてI0によるものなのでしょうか? 物性面で違いが出るのはもちろんわかるのですが、それが特性式のどこに関わってくるのかが理解できていません…。  他に要因があるのでしたら、ダイオードの特性式に絡めて説明していただけると非常に助かります。 よろしくお願いします。

  • y=(exp(-at)-exp(-bt))/(b-a)をt=…の式にす

    y=(exp(-at)-exp(-bt))/(b-a)をt=…の式にするには? yがある値をとる時のtの値を算出したいのですが、式が変換できずに困っています。 どなたか解る方がいらっしゃいましたら、解答お願いいたします。

  • 複素積分

    I1=∫[-∞,-∞]cos(a*x)/(x^2+b^2)dxを複素積分を使って求めます。 まず ∫[-∞,-∞]cos(a*x)/(x^2+b^2)dxの被積分関数の分子にi*sin(a*x)を (iは虚数単位)を加えても加えた部分が奇関数でかわらないので加え ると ∫[-∞,-∞]{cos(a*x)+i*sin(a*x)}/(x^2+b^2)dxとなります するとI=∫[-∞,-∞]exp(i*a*x)/(x^2+b^2)dxです。 ここで複素積分 I=∫exp(i*a*z)/(z^2+b^2)dz (積分路は実軸と虚軸の正の部分を通る 反時計回りの半径Rの半円) またI2=∫exp(i*a*z)/(z^2+b^2)dz (積分路は虚軸の正の部分のみを通 る反時計回りの半径Rの半円)を考えるとRが十分大きいとき I=I1+I2・・・(1)になります。 Iは留数定理よりI=2*π*i*Res[f,i*b]=π*exp(-a*b)/b・・・(2) I2はz=R*exp(i*θ)とおき I2=∫[0,π]exp(i*a*R*exp(i*θ))/(R*exp(i*θ)^2+b^2)dθ =∫[0,π]exp(-a*R*sinθ+)*exp(i*a*R*cosθ)*i*R*exp(i*θ)/(R^2*exp (2*i*θ)+b^2)dθ 三角不等式より 0<|I2|<∫[0,π]|exp(-a*R*sinθ+)*exp(i*a*R*cosθ)*i*R*exp(i*θ)|/|(R^2*exp(2*i*θ)+b^2)|dθ<π*R*exp(-a*R*sinθ)/|-R^2+b^2|・・・(3) ここでsinθ >0よりでexp(-a*R*sinθ)<1なので π*R*exp(-a*R*sinθ)/|-R^2+b^2|<π*R/|-R^2+b^2|となり π*R/|-R^2+b^2|はR-->∞で0なので結局 |I2|-->0   なので(1)より I1=π*exp(-a*b)/bが答えです。  これはわかるのですが、スタートで i*sin(a*x)ではなく-i*sin(a*x)を加えても変わらないですよね? そこで-i*sin(a*x)を加えて実際にやってみると (2)の部分はπ*exp(a*b)/bに変わってしまい、また (3)の部分はπ*R*exp(a*R*sinθ)/|-R^2+b^2|となってしまいこれでは R-->∞で発散するように思えます。 どこがまちがっているのでしょうか

  • PCでのグラフの作図法

     まず、状況について書かせて頂きます。  現在、実験でシリコンを用いたショットキーダイオードを作成し、その電流-電圧特性を調べているのですが、回路中の抵抗がどれだけ特性に影響を与えるか見積もるため、理論式に基づきPC上でグラフ化しシミュレーションを行おうと考えています。  テキストによると、回路の直列抵抗をRs、並列抵抗をRpとし、端子間の電圧と電流をV、I、またダイオードにかかる電圧、流れる電流をVd、Idとすると、  オームの法則から  Vd=V-RsI I=Id+Vd/Rp ショットキー接触の特性の式から  Id=Io{exp(qVd/kT)-1}  (Ioは逆方向飽和電流、qは電子の電荷、kはボルツマン定数、Tは絶対温度) が導かれます。これらの式から  I=Io{exp(q(V-RsI)/kT)-1}+(V-RsI)/Rp とIとVの関係が得られます。  本題の質問なのですが、上の式を実際にPCで図示するにはどのようにすればよろしいでしょうか。上式のままではうまく扱うことができず困っています。さらに何らかの変形を行う必要があるのか、PC上で何か別の手法を用いれば描くことができるのか…。  単に数学の基礎的な問題であるのかもしれませんが、念のため背景についても書かせて頂きました。長々と申し訳ありません。  勉強不足な素人でお恥ずかしいのですが、何かヒントを頂けたらと思います。

  • グラフの形について

    グラフの形について ある関数 y=ax^(2)exp(bx^(2)) について横軸x、縦軸yのグラフを書くとするとどのようなグラフの外形が描かれるのでしょうか。 ちなみに a、b:定数 x^(2)というのはxの二乗 という条件でお願いします!! 分かる方がいましたら教えてください。よろしくお願いします

  • sumとexpについて?

    =sum(exp(x))とは、どのように計算すればいいのでしょうか? 例題)xに入る数字が、 A: 0, B: 2.4, C:4.9, D: 12 というデータセットに対し、 exp(x)/sum(exp(x))は、どのように解けばいいのでしょうか? Aの場合は、 exp(0)/sum(exp(19.3))かなと思いましたが、解が合いません。ご存知の方、教えてください。

  • ホイートストンブリッジにテブナンの定理を

    図のホイートストンブリッジで抵抗R5に流れる電流I5をテブナンの定理を用いて求めよという問題なのですが、端子bc間の電位差は{R2/(R1+R2)-R4/(R3+R4)}Eとなるのはわかります。 抵抗R5を取り去ったとして端子bcから見た回路の等価抵抗R0は、起電力Eを短絡したときの合成抵抗であるから、わかりやすくみれば図(右)のような回路の端子bc間の抵抗である。 よって,R1とR2の並列抵抗とR3とR4の並列抵抗が直列に接続された回路が求める等価回路である。 したがって、R0=R1R2/(R1+R2)+R3R4/(R3+R4) この起電力Eを短絡したときの合成抵抗というのはわかりますが、だからといってなぜR1とR2の並列抵抗とR3とR4の並列抵抗が直列に接続されたものになるのかがわかりません。 そもそもわかりやすくいえばa→dに導線を引いた図になるといっていますが、なぜこのような図になるのか理解できません。ただ単に起電力Eがないものと考えればいいんではないのですか? 私の考えではa→dに導線をひいていない図(左)についてc→b方向に電流を流したときに流れる電流の道から、R1とR3の直列抵抗とR2とR4の直列抵抗が並列に接続されたもののように思えるのですが、なぜこのようにならないんですか? このことについてわかる方がいらっしゃいましたら是非教えていただけないでしょうか。 よろしくお願いします。

  • 行列とexp

    行列Yが A 0 B 0 で与えられた時、 exp(Y)が行列 exp(A) 0 0 exp(B) で与えられるのはなぜでしょうか? 終えてください。宜しくお願い致します。