- ベストアンサー
指数方程式の解法について。
どなたかご教授願います。 (A・t+B)t・exp^(C・t) = D をtについて解くような問題なのですが、 どなたか教えていただけませんでしょうか。 A、B、C、Dは全て定数です。 宜しくお願いいたします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
質問の方程式の解は2つあって t = 2*f[ 1/2*√{ ( C^2*D )/( A*B ) } ]/C [ 0≦ ( C^2*D )/( A*B ) の場合 ] t = 2*f[ 1/2*√{ -( C^2*D )/( A*B ) } ]/C [ ( C^2*D )/( A*B ) ≦0 の場合 ] となります。 f( ) は LambertのW関数で、y*exp(y) = x を満たすような関数 y = f(x) のことです(初等関数では表わせません)。y*exp(y) の形が入っている方程式で y を求めるような場合、このLambertのW関数が出てきます。 f (x) の定義域は -1/e < x で( e はネピア数)、f(0) = 0 の単調増加関数です[1]。過去の質問で、解にLambertのW関数を含むものがいくつかあります[2] [3] が、その中にLambertのW関数をExcel VBAで計算するマクロが出ています[2]。これを使えば、Excelのセル中に、=LambertW( ) と書き込むことで、普通の関数のように計算できます。 【ExcelVBAを使ってLambertW関数を計算する方法】 Excelの「ツール→マクロ→Visual Basic Editor→挿入→標準モジュール」で出た空白のコード画面に下のプログラムを貼り付け、Excelシートに戻って、あるセルに =LambertW( ここに引数を書く) と書けば計算できます。 ↓ここから Function LambertW(x As Double) As Variant If x < -Exp(-1) Then LambertW = "" Exit Function Else If x = 0 Then LambertW = 0 Exit Function End If End If Dim W As Double, W1 As Double, eps As Double, ew As Double eps = 10 ^ (-15) W = 1 While Abs((W - W1) / W) > eps W1 = W ew = Exp(W) W = W - (W * ew - x) / (ew * (W + 1) - (W + 2) * (W * ew - x) / (W + 1) / 2) Wend LambertW = W1 End Function ↑ここまで [1] LambertのW関数 http://ja.wikipedia.org/wiki/%E3%83%A9%E3%83%B3%E3%83%99%E3%83%AB%E3%83%88%E3%81%AEW%E9%96%A2%E6%95%B0 [2] lnの方程式 A=xloge(x)+xB の解は http://oshiete1.goo.ne.jp/qa2726817.html [3] x=log{100(1+x)} の解 http://oshiete1.goo.ne.jp/qa2993718.html
その他の回答 (3)
#1 です。 確かに、解が一意的でない場合もあります。 定数{A、B、C、D}次第なようで、面倒そうです。 A,B,C,D = 1 の場合は、たまたま一個らしい。
- inara
- ベストアンサー率72% (293/404)
ANo.2 です。 ANo.2の解は間違っていました。ANo.2 は (A・t・B)t・exp^(C・t) = D の解でした。 (A・t+B)t・exp^(C・t) = D は、数式処理ソフト(Maple)では解けませんでしたが、 途中の t がない場合 (A・t+B)・exp^(C・t) = D や、A B の一方がゼロの場合 (A・t)t・exp^(C・t) = D (B・t)exp^(C・t) = D なら解けます。
>(A・t+B)t・exp^(C・t) = D をtについて解くような問題 .... 逐次解法ではいかが ? たとえば f(t) = A*t^2 +B*t - D*exp(-C*t) f'(t) = 2A*t + B + D*C*exp(-C*t) として、f(t) の零点に Newton-逐次接近させます。 A,B,C,D = 1 の場合を試してみると、 t0 = 1 からスタートして 5回目でほぼ収束。
お礼
早々のご返答、ありがとうございました。
お礼
わかりやすい解説、ありがとうございます。 やはり、手計算では、無理ですね。 LambertのW関数・・・学生の時にあったなあ・・・という感じです。 もう少し、勉強してみます。