• 締切済み

Lnを含む方程式の解法に関して

Ln(x/A)+x/B=C の方程式のxの解き方を教えていただきたいです。 よろしくお願いいたします。 ランベルトのW関数を使おうとしてもうまくできませんでした。。。

みんなの回答

  • info22
  • ベストアンサー率55% (2225/4034)
回答No.2

#1です。 A#1の補足質問について プログラムのコーディングはカテゴリー違いの気がしますが…。 x=0でw=0でなく |x|≦(誤差上限)でw=xで抜ける。 x≒-1/eで収束が悪く誤差が大きくなるので x=-1/eでw=-1 -1/e<x<-1/e+(誤差の上限)で w=-1+(√(2e))√(x+1/e)…(●)で抜ける。 その他のx>-1/eについては x=w*e^wに対してニュートン法(ニュートン=ラプソン法)で wを求め抜ける。 プログラム中 >While Abs((W - W1) / W) > eps の初期W1が未定義になっていますのでWhile行の前にWの初期値と異なるW1の初期値を与えてください(たとえばW1=0)。 x≧-1/e(w≧-1)では上記の方法でLambertW(x)の計算が出来ますが 0>x>-1/e(w<-1)でも「x=w*e^w」を満たすもうひとつのLambertW(-1,x) 関数の値が存在します。w<-1でもW(-1,x)関数を考えた方がいいかと思います。x=-1/e付近では(●)が適用できます。その他の-1/e<x<1(w<-1)に対してはx=w*e^wにニュートン法を適用するといいですね。

nismoY
質問者

お礼

お礼遅くなりました。 大変参考になりました。ありがとうございました。 またお世話になることがありましたらどうぞ宜しくお願い致します。 (そんなことがないように精進致します) 本当にありがとうございました。

  • info22
  • ベストアンサー率55% (2225/4034)
回答No.1

AB>0として ランベルトのW関数を使えば x=B*W(Aexp(C)/B) となります。 A,Bの他の場合は xが存在しない、1個存在、2個存在する場合がありますので A,Bについてさらに場合分けをしないと xを得られません。

nismoY
質問者

お礼

早々のご説明ありがとうございます。 他の投稿を参考に以下のマクロを入れたのですが、動作しません。 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 つきましては、ランベルトのW関数の計算方法につきましてもご教授願えませんでしょうか? 度々申し訳ないです。 よろしくお願いいたします。

関連するQ&A

  • LN方程式が解けません。

    下記のLN方程式が解けません。 どなたか教えてください。 (180-y)×360=(x-25)×4500・・・(1) ((180-x)-(y-25)/LN((180-x)/(y-25)))×447.84=(180-y)×360・・・(2) どなたかよろしく御願いいたします。 特に、LN((180-x)/(y-25))は、どう処理したら良いのでしょうか?

  • この方程式のスマートな解法を教えてください.

    この方程式のスマートな解法を教えてください. (a-x)(1-x)^2 - (b^2 + c^2)(1-x) = 0 (a,b,c:const)

  • 常微分方程式の解法について宜しくお願いします

    微分方程式の初心者です、どうぞよろしくお願いします。 以下のような方程式に遭遇しました。教科書の例題を一歩進めた印象ですが、解く方法はあるのでしょうか? A,B,Cは≠0の定数です。 dy   A(C - y)y -- = --------------- dx    xy + B また右辺分母で x → f(x) と、一般的な関数に置き換えた形、 dy   A(C - y)y -- = --------------- dx   f(x)y + B の場合は解けますでしょうか?どうぞよろしく願いいたします。

  • 指数方程式の解法

    以下の対数方程式の解法を教えてください。 a = b ln(cx+d) + e ln(fx+g) (a~gは正の整数) よろしくお願いします。

  • ln(-1) オイラー方程式

    ln(-1)はどうしてπになるんですか?これがlog(e)-1になってe^x=-1になるってとこまでと、オイラー方程式が関係してるってことは解ったんですが、そのオイラー方程式がe^x=-1にどのようにはたらくかってのが良くわかりません、どなたか教えていただけると助かります。

  • 連立指数方程式の解法について

    実験の結果でパラメータx1,x2の変化に伴うy1,y2の変化を指数関数で近似し以下のような方程式を立てました A1*exp(-x1/t1)+A2*exp(-x2/t2)=y1 A3*exp(-x1/t3)+A4*exp(-x2/t4)=y2 この時y1,y2が与えられた時のx1,x2を求めたいのですがどのようにして求めればいいかわかりません。二つの変数x1,x2に対して式が2本あるのでx1,x2を求めることが出来そうな気がするのですが・・・ 私が試した解法として 二つの式のx2の項を右辺に移項した後両辺の自然対数を取ってX1=…の形にした後X1を消去しx2のみの式にした状態で t1[ln(A1)-ln(y1-A2*exp(-x2/t2))]-t3[ln(A3)-ln(y2-A4*exp(-x2/t4)]=0 となり、この式をエクセルのゴールシークを用いて(上の式をx2=…の形にするのは煩雑すぎてやっていません)x2を出すことはできたのですがそれを先ほどのx1=…のそれぞれの式に代入すると2つの式で異なった値が出てきてうまく答えが出せていないみたいです。 この方程式からx1,x2を求めることは可能なのでしょうか? また可能な場合どういった方法を用いて解くことができるでしょうか? よろしくお願いします。

  • x^x=zの解き方

    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 のなかで、x^x=z(zは定数)の解は、ランベルトのW関数を使って、 x=ln(z)/W(ln(z)) あるいは x=exp(W(ln(z))) となると書いてあるのですが、どうしてこんな式になるのですか? そこには途中式や説明が一切書いておらず、自分でもいろいろ試してみたんですが、どうしてもx=…の形に辿りつけませんでした。

  • 三次方程式の解法について

    三次方程式を解くプログラムを作成したいです。 三次方程式a*x3+b*x2+c*x+d=0を解くのに, カルダノの公式がありますが,解が全て実数解であるとしても, 計算過程で虚数が存在することを考えなければなりません。 しかし,a=1で解が実数解の場合, 計算過程で虚数を考えなくても,簡単に実数解を求める ことができる(エクセルで簡単に)と聞きました。 ニュートン法等の収束計算を用いる方法ではないようです。 このような方法をご存知でしたら,詳しく教えてください。 よろしくお願いいたします。

  • 微分方程式の解法

    直方体に関する熱伝導方程式を解こうとして,微分方程式に出くわし,行き詰ってしまいました. 直方体の温度分布を T (x) とします.直方体の長さを L として,片方の端の温度を T (0), もう片方の端の温度を T (L) とします. また熱伝導率が温度の関数で    κ (T) = 1 / (a + b T + c T^2) と近似的に表現されます. フーリエの法則に基づいて,定常状態における熱伝導方程式を解いてみたところ    ∂{ κ・∂T/∂x } / ∂x = 0 という式が出てきました.この方程式を一回積分すると    κ (T)・(∂T /∂x) = A = (定数) なる式となります.この微分方程式の解き方が分かりません.というより,解析的に解ける式なのかどうかすら判断できず困っています.この方程式は解けるでしょうか? また,仮に解析的に解けないとして,問題となっている微分方程式の両辺をひっくり返して    ∂x / ∂T = κ (T) / A と変形することは可能でしょうか? この変形が可能ならば,κ (T) をマクローリン展開してからラプラス変換に持ち込もうかと考えているのですが….

  • 対数方程式に関する質問です

    対数方程式で ax-b*ln(x)-c=0 という式を解いているのですがx=の形に出来ず困ってます。 どなたかよろしくお願いします。