Python中sypy的符号微分求值

2024-09-30 16:25:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我是使用Sympy库的python中的codig NewtonRaphson算法,这是我的算法实现:

def NewtonRaphson(fx,p0,tolerancia,iteracionesMaximas):
    print
    fx = S(fx)
    x = Symbol('x')
    i = 1
    p = 0.0

    while i<= iteracionesMaximas:

        y = fx.subs(x,p0)
        yy = diff(fx,x).subs(x,p0)
        p = p0 - (y/yy)

        if absolute(p-p0) < tolerancia:
            print "Se encontró la raíz y={raiz} luego de {n} iteraciones".format(raiz=p, n=i-1)
            return

        i += 1
        print "{i}\t{p}\t{p0}".format(i=i-1,p=p,p0=p0)
        p = p0

    print "El método falló luego de {i} iteraciones".format(i=i-1)

我得到一份加薪通知,信息如下:

^{pr2}$

我调用fx等于'x**3-x-1'的字符串并输入调用NewtonRaphson(fx,1.7,10**(-4),17)。在

我怎么了?在


Tags: 算法formatdesubsfxprintsympyyy
1条回答
网友
1楼 · 发布于 2024-09-30 16:25:11

看起来你在给numpy的绝对函数传递一个符号表达式。 根据你的代码我敢打赌你的进口声明

^{1}$

如果是这样的话,您应该将absolute替换为Abs,这样就可以使用sympy内置的绝对值函数,而不是numpy数组的函数。在

此外,您还需要将p = p0替换为p0 = p,算法才能正常运行。在

这是一个工作版本,其中import语句有所更改。 我还删除了一些不必要的陈述。在

^{pr2}$

相关问题 更多 >