用syzhangxiao的方法,代码如下: Function cube(ByVal p As Double) As DoubleDim xk As Double, xknext As Double Dim wucha As Double, currentwc As Double'牛顿迭代法 wucha = 0.0001 '误差定义:10的-4次方 xk = 1# xknext = xk - (xk * xk * xk - p) / (3 * xk * xk) currentwc = Abs(xknext - xk) / (1 + Abs(xknext)) While (currentwc > wucha) xk = xknext xknext = xk - (xk * xk * xk - p) / (3 * xk * xk) currentwc = Abs(xknext - xk) / (1 + Abs(xknext)) Wend cube = xknextEnd Function'用此方式,可以写成开n次方(n为整数)的函数如下: Function extration(ByVal p As Double, pow As Integer) As DoubleDim xk As Double, xknext As Double Dim wucha As Double, currentwc As Double'偶数次幂,P不能小于0 If pow And 2 Then If p < 0 Then Exit Function End If End If'牛顿迭代法 wucha = 0.0001 '误差定义:10的-4次方 xk = 1# xknext = xk - (xk ^ pow - p) / (pow * xk ^ (pow - 1)) currentwc = Abs(xknext - xk) / (1 + Abs(xknext)) While (currentwc > wucha) xk = xknext xknext = xk - (xk ^ pow - p) / (pow * xk ^ (pow - 1)) currentwc = Abs(xknext - xk) / (1 + Abs(xknext)) Wend extration = xknextEnd Function
还引用一个Bardo的方法 用指数与对数的方法也可以做:因为 y=x^3 所以 log(y) = 3*log(x) (注意:VB中的log实际是ln) log(x)= (log(y))/3 所以 x= exp((log(y))/3) 所以以下代码: Function cube(ByVal p As Double) As Double cube = Exp(Log(p) / 3) End Function
没这么麻烦吧…… - -b8开3次方就是这样啊~ N = 8 ^ (1 / 3)MSDN~ ============================== ^运算符 用来求一个数字的某次方,次方数为 exponent 值。语法result = number^exponent^ 运算符的语法具有以下几个部分:部分 描述 result 必需的;任何数值变量。 number 必需的;任何数值表达式。 exponent 必需的;任何数值表达式。 说明只有当 exponent 为整数值时,number 才可以为负数。在表达式中执行多个指数运算时,^ 运算符的计算顺序从左到右。result 的数据类型通常是 Double 或包含 Double 的 Variant。但是,如果 number 或 exponent 中有一个是 Null 表达式,则 result 也是 Null。
Function cube(ByVal p As Double) As DoubleDim xk As Double, xknext As Double
Dim wucha As Double, currentwc As Double'牛顿迭代法
wucha = 0.0001 '误差定义:10的-4次方
xk = 1#
xknext = xk - (xk * xk * xk - p) / (3 * xk * xk)
currentwc = Abs(xknext - xk) / (1 + Abs(xknext))
While (currentwc > wucha)
xk = xknext
xknext = xk - (xk * xk * xk - p) / (3 * xk * xk)
currentwc = Abs(xknext - xk) / (1 + Abs(xknext))
Wend
cube = xknextEnd Function'用此方式,可以写成开n次方(n为整数)的函数如下:
Function extration(ByVal p As Double, pow As Integer) As DoubleDim xk As Double, xknext As Double
Dim wucha As Double, currentwc As Double'偶数次幂,P不能小于0
If pow And 2 Then
If p < 0 Then
Exit Function
End If
End If'牛顿迭代法
wucha = 0.0001 '误差定义:10的-4次方
xk = 1#
xknext = xk - (xk ^ pow - p) / (pow * xk ^ (pow - 1))
currentwc = Abs(xknext - xk) / (1 + Abs(xknext))
While (currentwc > wucha)
xk = xknext
xknext = xk - (xk ^ pow - p) / (pow * xk ^ (pow - 1))
currentwc = Abs(xknext - xk) / (1 + Abs(xknext))
Wend
extration = xknextEnd Function
用指数与对数的方法也可以做:因为 y=x^3
所以 log(y) = 3*log(x) (注意:VB中的log实际是ln)
log(x)= (log(y))/3
所以 x= exp((log(y))/3)
所以以下代码:
Function cube(ByVal p As Double) As Double
cube = Exp(Log(p) / 3)
End Function
N = 8 ^ (1 / 3)MSDN~
==============================
^运算符 用来求一个数字的某次方,次方数为 exponent 值。语法result = number^exponent^ 运算符的语法具有以下几个部分:部分 描述
result 必需的;任何数值变量。
number 必需的;任何数值表达式。
exponent 必需的;任何数值表达式。
说明只有当 exponent 为整数值时,number 才可以为负数。在表达式中执行多个指数运算时,^ 运算符的计算顺序从左到右。result 的数据类型通常是 Double 或包含 Double 的 Variant。但是,如果 number 或 exponent 中有一个是 Null 表达式,则 result 也是 Null。