首页 文章

Python - Sympy Minima和Maxima

提问于
浏览
1

我正在尝试学习sympy的微积分函数,并且我能够通过以下方式获得极值关键点的二阶导数的根:

import numpy as np
    from numpy import linspace, math, arange, linspace
    from sympy import *
    import sympy as sp
    import math

    x = Symbol('x')
    f = (x**4) - (24*x**2) + 80  
    fd = diff(f)
    fdd = diff(fd)
    print(fd)
    print(fdd)

    polyRoots = solveset(f,x)
    dRoots = solveset(fd,x) #gets critical x values
    ddRoots = solveset(fdd,x)

如何将我从dRoots获得的值替换为原始等式f,并输出一个值列表?

1 回答

  • 1
    >>> from sympy import *
    >>> x = Symbol('x')
    >>> f = x**4 - 24*x**2 + 80
    >>> fd = diff(f)
    >>> fdd = diff(fd)
    >>> polyRoots = solveset(f, x)
    >>> dRoots = solveset(fd, x)
    >>> ddRoots = solveset(fdd, x)
    >>> dRoots
    {0, -2*sqrt(3), 2*sqrt(3)}
    >>> [_ for _ in dRoots]
    [0, -2*sqrt(3), 2*sqrt(3)]
    >>> [f.subs(x, _) for _ in dRoots]
    [80, -64, -64]
    

    您可以通过执行以下操作验证这是否有意义:

    >>> [f.subs(x, _) for _ in polyRoots]
    [0, 0, 0, 0]
    

相关问题