#範例10-3:求三次多項式的極值發生地方 #多項式函數: f(x) = x**3 - x**2 - x -1 #多項式判別判別極值的方法: #A).泰勒級數的一次導數係數f'(x-x0) = C1 = 0,此時的x0就是極值(有兩個解,分別是極大值,與極小值) #B).如何判別極大值,或是極小值 #若二階導數f''(x0) >0,為正,那麼表示曲線開口向上,代表,x0處是極小值 #若二階導數f''(x0) <0,為負,那麼表示曲線開口向下,代表,x0處是極大值 from sympy import * from sympy.interactive import printing printing.init_printing(use_latext=True) x = symbols('x') f = Function('f')(x) f = x**3 - x**2 - x -1 #先算f'(x)一階導數 f1 = f.diff(x) eqf1 = Eq(f1, 0) ans = solve(eqf1, x) x1 = ans[0] x2 = ans[1] print('解x1=', x1) print('解x2=', x2) #由反曲點=f''(x)判別開口向上,向下? f2 = f.diff(x,2) if f2.subs(x, x1) > 0: print('x1=',x1,'處,是極小值') else: print('x1=',x1,'處,是極大值') if f2.subs(x, x2) > 0: print('x2=',x2,'處,是極小值') else: print('x2=',x2,'處,是極大值') #畫出圖形驗證 plot(f,(x, -2, 2), line_color='red')