如标题:阿拉德定律公式计算:a=b*e^(-c*x)/x^2  ,设a、b、c为常数,e为自然对数的底数,求x?我晕了

解决方案 »

  1.   

    昨晚上GOOGLE搜了一下,有高手说要用“迭代”的算法,但不知在VB6中如何实现?
      

  2.   

    Option Explicit
    Private Sub Form_Load()
    '6是X的初值,也就是说有6附近找适合的X
    '由于方程的复杂性,可能有很多个解,只给定一个初值,在其附近找适合的解
    Debug.Print "第一个根:"; calc1(6, 1, 1, 1)
    Debug.Print "第二个根:"; calc2(6, 1, 1, 1)
    End Sub
    Public Function calc1(x As Double, A As Double, B As Double, C As Double) As Double
    Dim x0 As Double, x1 As Double
    Dim icount As Long
    If x = 0 Then MsgBox "error": Exit Function
    x0 = x
    x1 = x
    Do
        x0 = x1
        icount = icount + 1
        x1 = Sqr(B / A * Exp(-C / x0))
    Loop Until Abs(x1 - x0) < 0.0001 Or icount > 10000
    If icount > 10000 Then MsgBox "找不到解": Exit Function
    calc1 = (x1 + x0) / 2
    End Function
    Public Function calc2(x As Double, A As Double, B As Double, C As Double) As Double
    Dim x0 As Double, x1 As Double
    Dim icount As Long
    If x = 0 Then MsgBox "error": Exit Function
    x0 = x
    x1 = x
    Do
        x0 = x1
        icount = icount + 1
        x1 = -Sqr(B / A * Exp(-C / x0))
    Loop Until Abs(x1 - x0) < 0.0001 Or icount > 10000
    If icount > 10000 Then MsgBox "找不到解": Exit Function
    calc2 = (x1 + x0) / 2
    End Function
      

  3.   

    a=b*e^(-c*x)/x^2
    =================>
    x^2=(b/a)*(e^(-c*x))
    我是按这个做的,我可不知道哪个方程原形是怎样的
      

  4.   


    算术运算符:^,-(负号),*,/,\,mod,+,-,“&”比较运算符:<,<=,=,>,>=,<>,is,like     (优先级都一样,从左到右)逻辑运算符:not,and ,or,xor字符运算符:+,&优先级由上至下。
      

  5.   

    E_T  =  I * e^(-s*V) / V^2方程原型,其中的“s”是希腊字母SIGMA,"E_T"是一个变量。e是自然对数的底。
    已知“E_T"、"I"、"S",
    求V=?呵呵,人多力量大zzyong00 的解法好像还有一点问题,我正在找。
    其中"    x1 = Sqr(B / A * Exp(-C / x0))"
    应为"    x1 = Sqr(B / A * Exp(-C * x0))