方程一:Y= aX/[1+(a-1)X]
方程二:Y(n+1)=RXn/(1+R)+Xd/(1+R)
已知:Xd,a,R,Xq为常数。
现:用Y1=Xd,代入方程一求的X1, 再代入方程二求出Y2
再代入方程一求X2,......直到 Xn<=Xq
  求的n的值~~
有两位大哥给的程序是:
Private Sub Command1_Click()
Dim a As Single, R As Single, Xd As Single, Xq As Single
Dim n As Integer, X() As Single, Y() As Single
Xd = 0.01: a = 3: R = 4: Xq = 0.42
n = 1
Do
    ReDim X(n + 1)
    ReDim Y(n + 1)
    Y(n) = Xd
    X(n) = Y(n) / (a - (a - 1) * Y(n))
    Y(n + 1) = R * X(n) / (1 + R) + Xd / (1 + R)
    Y(n) = Y(n + 1)
    n = n + 1
Loop Until X(n) <= Xq
 Print "n="; n
 
 End Sub和
Private Sub Command1_Click()
Dim i As Integer
Dim X() As Double, Y() As Double
Dim Xd As Double, a As Long, R As Long, Xq As Double
    Xd = 0.01: a = 3: R = 4: Xq = 0.42
    ReDim Preserve X(0) As Double
    ReDim Preserve Y(0) As Double
    Y(0) = Xd
    X(0) = -Y(0) / ((a + 1) * Y(0) - a)
    
    Do
        i = i + 1
        ReDim Preserve X(i) As Double
        ReDim Preserve Y(i) As Double
        Y(i) = X(i - 1) * R / (1 + R) + Xd / (1 + R)
        X(i) = -Y(i) / ((a + 1) * Y(i) - a)
    Loop Until X(i) <= Xq
    Print "i=" & i
End Sub可是不管怎么改变a,R ,Xd,Xq的值
结果总等于n=2 
好象迭代没有运行~~~

解决方案 »

  1.   

    白天只是修改了你的程序,没有看题.现将自己的想法帖上:
    Private Sub Command1_Click()
    Dim a As Single, R As Single, Xd As Single, Xq As Single
    Dim n As Double, X() As Single, Y() As Single
    Xd = 0.01: a = 3: R = 4: Xq = 0.00003
    ReDim Preserve Y(1)
    Y(1) = Xd
    n = 0
    Do
        n = n + 1
        If n > 10 ^ 5 Then
            MsgBox "这样的n值过大,程序将崩溃,请检查常数值"
            Exit Do
         End If
        ReDim Preserve X(n + 1)
        ReDim Preserve Y(n + 1)
        X(n) = Y(n) / (a - (a - 1) * Y(n))
        Y(n + 1) = R * X(n) / (1 + R) + Xd / (1 + R)
    Loop Until X(n) <= Xq
     Print "n="; n
     
     End Sub
      

  2.   

    输出结果是2的原因在于这两句:
      n = n + 1
    Loop Until X(n) <= Xq
    第一次循环后n=2,此时没有处理X(2),X(2)=0,所以只要Xq>=0,x(n)<=0一直成立,自然只执行一次循环就退出do循环了,所以,只要你设置的Xq>=0,就会一直输出n=2
      

  3.   

    你试过我修改的程序吗?
    可以解出结果,按你给的常数Xd = 0.01: a = 3: R = 4: Xq = 0.042得出n=1,修改为
    Xd = 0.01: a = 3: R = 4: Xq = 0.00003后得出的n=2