#範例5-4:求一階導數,判別局部極大值,極小值的位置 from sympy import * x = symbols('x') y = Function('y')(x) y = sqrt(3)*cos(x) + sin(x) + 1 #求f的局部極值(極大值,極小值) dif1y = diff(y, x, 1) print('一階導數函數 = ', dif1y) #求解一階導數=0的位置 print('求解一階導數=0的解 = ', solve(dif1y,x)) #兩個解,x0,x1 x0 = solve(dif1y,x)[0] x1 = solve(dif1y,x)[1] print(x0,x1) #判別斜率正負 if dif1y.subs(x,x0-0.1) < 0 and dif1y.subs(x,x0+0.1) > 0: print('x=',x0,'的位置是局部最小值') elif dif1y.subs(x,x0-0.1) >0 and dif1y.subs(x,x0+0.1) <0: print('x=',x0,'的位置是局部最大值') if dif1y.subs(x,x1-0.1) < 0 and dif1y.subs(x,x1+0.1) > 0: print('x=',x1,'的位置是局部最小值') elif dif1y.subs(x,x1-0.1) >0 and dif1y.subs(x,x1+0.1) <0: print('x=',x1,'的位置是局部最大值') #畫出y的線性 plot(y, line_color='red')