我想把一个数进行n次方,开平方我知道用sqr()函数,但是3 次以上开方怎样处理!
谢谢!!

解决方案 »

  1.   

    用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
      

  2.   

    还引用一个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
      

  3.   

    没这么麻烦吧…… - -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。
      

  4.   

    谢了,现在就结贴!我刚才试了一下,AprilSong(X) 说的不错!多谢aohan(景升)、AprilSong(X)两位仁兄!