• 締切済み

ニュートンラプソン法が収束しない

次のVBAコードを実行しても収束しません。これはコード上の問題ではなく、数学上の問題と思い、ここに投稿しました。特に微分式が間違っていないかを含めてご教示お願いします。 Sub Newton() Dim a As Double Dim b As Double Dim k As Double Dim θ As Double Dim θ1 As Double Dim Df As Double Dim Dfd As Double Dim pi As Double a = 100 b = 10 pi = 3.14159265358979 k = 1 - (b ^ 2 / a ^ 2) θ1 = pi / 4 Df = 0 Dfd = 0 Do θ = θ1 Df = (1 - k * (Sin(θ) ^ 2)) ^ 0.5 Dfθ = (-2 * k) * Sin(θ) * Cos(θ) / (2 * (1 - k ^ 2 * Sin(θ)) ^ 0.5) θ1 = θ - Df / Dfθ Loop Until Abs(θ - θ1) < 0.000000001 MsgBox Df End Sub

みんなの回答

noname#101087
noname#101087
回答No.2

原文では、0<k<1 ですね。 だとすると、  1 - k*{Sin(θ)}^2 > 0 ですけど。    

catshoes01
質問者

お礼

 そうですね。ご指摘に感謝。

noname#101087
noname#101087
回答No.1

> (1 - k * (Sin(θ) ^ 2)) ^ 0.5 これの零点は、実数の範囲に存在しない …からでは?

catshoes01
質問者

お礼

0<k<0 ですから  0 =< 1 - k * (Sin(θ) ^ 2 =< 1 で、実数解を持ちますが???

関連するQ&A