せずに、私は(私はVBを使用したことがありません。)エクセルVBを使用して簡単なニュートン法の反復ソルバーを実装しようとしているループが行うエラー
私はエラーloop without a Do
を取得し、私は「何を把握することはできません保ちますここで間違っている。
私はcompressibility factorと呼ばれる関数z^3 - z^2 - (B^2 + B - A)z - A*B
のルーツを見つけようとしています。
マイソースMSN
Function zCalculation(ByVal temp As Double, ByVal press As Double) As Double
Dim tempCr As Double
Dim pressCr As Double
Dim A As Double
Dim B As Double
tempCr = temp/238.5
pressCr = press/547.424092
A = pressCr/tempCr
A = A/(9 * (2^(1/3) - 1))
B = pressCr/tempCr
B = B * (2^(1/3) - 1)/3
Dim zNot As Double
Dim counter As Integer
counter = 0
zNot = 1#
Do
counter = counter + 1
zNot = zNot - (zNot^3 - zNot^2 - (B^2 + B - A) * zNot - A * B)/(3 * zNot^2 - 2 * zNot - (B^2 + B - A))
If counter > 1000 Then
Exit Do
Loop Until eval(zNot, A, B) < 0.000001
zCalculation = zNot
End Function
ブレーク
Function eval(ByVal z As Double, ByVal A As Double, ByVal B As Double) As Double
eval = z^3 - z^2 - (B^2 + B - A) * z - A * B
End Function
を一顧.....それはそれです。ありがとう!私はそれを逃したとは信じられません。 –
あなたの責任ではない............この場合のExcelのエラーメッセージは誤っています。 –
カント私は実際にこれをチェックする前にstackoverflowを検索したと信じて – Tascalator