A 回答 (2件)
- 最新から表示
- 回答順に表示
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にニュートン法を適用するといいですね。
お礼遅くなりました。
大変参考になりました。ありがとうございました。
またお世話になることがありましたらどうぞ宜しくお願い致します。
(そんなことがないように精進致します)
本当にありがとうございました。
No.1
- 回答日時:
AB>0として
ランベルトのW関数を使えば
x=B*W(Aexp(C)/B)
となります。
A,Bの他の場合は
xが存在しない、1個存在、2個存在する場合がありますので
A,Bについてさらに場合分けをしないと
xを得られません。
早々のご説明ありがとうございます。
他の投稿を参考に以下のマクロを入れたのですが、動作しません。
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が見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 数学 積分計算を使った漸化式とその極限 4 2023/07/04 15:40
- 物理学 積分について(2) 2 2022/11/22 13:20
- 物理学 量子力学 球面調和関数 導出 方位角成分 微分方程式の解 2 2022/07/02 13:40
- 中学校 数学の問題について教えてください。 10 2022/12/04 16:28
- 数学 高校数学I 2次関数 2つの2次方程式の共通の実数解の問題についての質問です。以下の写真を見てもらえ 4 2022/05/13 11:47
- 数学 3次方程式の解で実部が正のものが存在する条件の調べ方 0 2023/03/23 15:07
- 化学 次の問題について聞きたいことがあります。 様々な温度(t)で五酸化二炭素(N2O5)の分解反応の反応 3 2023/06/16 15:35
- 化学 【至急】化学ポテンシャルの式について教えてください 2 2022/05/17 08:51
- 物理学 移流熱拡散方程式の解き方 フーリエ変換 1 2022/08/15 15:25
- 数学 この方程式を連立方程式に治す解き方を教えてください!! 3X+2Y=5+3Y=2X+11 加減法でお 6 2023/06/12 23:47
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
おすすめ情報