1. ホーム
  2. excel

[解決済み] Doエラーにならないループ

2022-02-09 23:13:06

質問

Excel VBを使って簡単なニュートン法反復解法を実装しようとしています(VBは使ったことがありません)。

次のようなエラーが発生します。 loop without a Do というメッセージが表示され、何が間違っているのかがわかりません。

関数の根を求めようとしています。 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

解決方法は?

が必要です。

End If

をあなたのコードに追加してください。