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
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
=================>
x^2=(b/a)*(e^(-c*x))
我是按这个做的,我可不知道哪个方程原形是怎样的
算术运算符:^,-(负号),*,/,\,mod,+,-,“&”比较运算符:<,<=,=,>,>=,<>,is,like (优先级都一样,从左到右)逻辑运算符:not,and ,or,xor字符运算符:+,&优先级由上至下。
已知“E_T"、"I"、"S",
求V=?呵呵,人多力量大zzyong00 的解法好像还有一点问题,我正在找。
其中" x1 = Sqr(B / A * Exp(-C / x0))"
应为" x1 = Sqr(B / A * Exp(-C * x0))