我被要求找出幾個函式的最大值和最小值。其中一個函式是 y = (9x^3) - (7x^2) (3x) 10 到目前為止我可以撰寫的代碼是:
from sympy import*
import matplotlib.pyplot as plt
x = symbols ('x')
f = (9*x**3) - (7*x**2) (3*x) 10
intervals = np.arange(-5, 7)
df = diff(f, x)
df2 = diff(f, x, 2)
f = lambdify (x, f)
y = f(intervals)
print (intervals)
print (y)
我是使用這 3 個庫的新手,所以我不知道如何使用這 3 個庫找到答案
uj5u.com熱心網友回復:
SymPy 可以告訴您導數,f
并且可以告訴您函式何時為零。由于當導數為零時出現最大/最小值,您可以找到零點,然后確定這些值是否使二階導數為正或負,例如
>>> from sympy import real_roots
>>> from sympy.abc import x
>>> f = -x**2 1
>>> d1 = f.diff(x)
>>> d2 = d1.diff(x) # = f.diff(x,2)
>>> extrema = real_roots(d1)
>>> for i in extrema:
... if d2.subs(x, i).is_positive:
... print('minimum',i)
... else:
... print('maxima',i)
另請參見此處。(如果沒有實根,那么 的實數值就沒有極值x
。)
uj5u.com熱心網友回復:
如果要將 的值傳遞intervals
到公式中然后獲取最小值,則可以intervals
先指定 ,然后將此陣列放入公式中x
:
intervals = np.random.permutation(10)
# [8 4 3 0 2 7 9 1 6 5]
f = (9 * intervals ** 3) - (7 * intervals ** 2) (3 * intervals) 10
# [4194 486 199 10 60 2775 6031 15 1720 975]
f.argmin() # --> will get index of the minimum value
# 3
f.min() # --> will get minimum value resulted by the formula
# 10
或者如果您想多次使用該公式,您可以將其定義為一個函式,并在每次需要時呼叫它,而不是將其重新撰寫為:
def formula_1(x):
return (9 * x ** 3) - (7 * x ** 2) (3 * x) 10
results = formula_1(intervals)
results.min()
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/497804.html
標籤:python-3.x 麻木的 matplotlib 同情
上一篇:隱藏層中權重的形狀(多層感知器)
下一篇:使用Itertools列出列名