新聞中心
python如何實現(xiàn)求函數(shù)的在一個連續(xù)區(qū)間的最值?
先求得一個函數(shù)的導(dǎo)函數(shù),然后令導(dǎo)函數(shù)=0
專注于為中小企業(yè)提供網(wǎng)站設(shè)計、成都做網(wǎng)站服務(wù),電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)合山免費做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了1000多家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實現(xiàn)規(guī)模擴充和轉(zhuǎn)變。
得到關(guān)于一個x的值
他也許是極大值
或是極小值
(還要考慮定義域進行取舍),然后將所求的極值和兩個端點值帶入原函數(shù)進行比較
,最后確定min
max就行
python sympy 求表達式的值
Sympy是python中非常強大的符號運算庫,可以以書寫習(xí)慣表示數(shù)學(xué)表達式。下面介紹用Sympy求方程數(shù)值解的方法。
下面代碼全部在
from sympy import *
init_printing(use_unicode=True) # 按書寫習(xí)慣輸出
下運行。
數(shù)學(xué)表達式的輸入
首先聲明符號:
x = symbols('x')
即計算機中的變量x代表數(shù)學(xué)表達式中的x。在后文輸出中所有的x會顯示為x。如果x=symbols('x0'),則輸入的方程中所有x將在輸出中以x0表示。
如果需要希臘字母
l, r = symbol('lambda rho')
l, r將分別以λ,ρ表示??梢栽谝粋€表達式中同時聲明多個符號。
或者使用var()聲明:
var('x')
與上面等效。
聲明表達式:
f = (5/x)*(exp(x)-1)-exp(x)
此時若輸出f可以看到書寫習(xí)慣的表達式。由于表達式在markdown下顯示不正常,在此不放置示例。注意f的類型是class 'sympy.core.add.Add'
求f(x)=0數(shù)值解
因為有的函數(shù)零點不止一個,因此在Sympy中解的輸出為一個list。使用solve(表達式,自變量符號)可以解析地解方程:
s, = solve(f, x)
這里根據(jù)上面f的賦值,得到s為
LambertW(-5e**-5)+5
其中用了特殊函數(shù)表達。
我們需要求這個結(jié)果的數(shù)值近似,則輸出
s.evalf()
得到輸出
4.96511423174428
就是方程f(x)=0的數(shù)值解。
求給定自變量x值時函數(shù)f(x)的值 | 將表達式轉(zhuǎn)化為函數(shù)
f.evalf(subs = {x:4.96})
得到f(4.96)的數(shù)值
0.141885450782171
如果需要以計算機函數(shù)的形式定義函數(shù)f(x),則可以使用lambdify()進行轉(zhuǎn)化:
f_func = lambdify(x, f)
之后可以調(diào)用
f_func(4.96)
輸出
0.141885450782
利用這個方法可以測試方程的數(shù)值算法,如使用sympy接口寫牛頓法等。
在python中如何求解函數(shù)在定義域內(nèi)的最大值?如f(x)=-2x^2-8x+3在[-5,5]區(qū)間內(nèi)的最大值
(1)由表中可知f(x)在(0,2]為減函數(shù),
[2,+∞)為增函數(shù),并且當x=2時,f(x)min=5.
(2)證明:設(shè)0<x1<x2≤2,
因為f(x1)-f(x2)=2x1+
8
x1
-3-(2x2+
8
x2
-3)=2(x1-x2)+
8(x2?x1)
x1x2
=
2(x1?x2)(x1x2?4)
x1x2
,
因為0<x1<x2≤2,所以x1-x2<0,0<x1x2<4,即x1x2-4<0,
所以f(x1)-f(x2)>0,即f(x1)>f(x2),所以f(x)在(0,2]為減函數(shù).
(3)由(2)可證:函數(shù)f(x)=2x+
8
x
-3在區(qū)間(0,2]上單調(diào)遞減,在區(qū)間[2,+∞)上單調(diào)遞增.
則①當0<a<2時,(0,a]?(0,2],所以函數(shù)f(x)=2x+
8
x
-3在區(qū)間(0,a]上單調(diào)遞減,
故f(x)min=f(a)=2a+
8
a
-3.
②當a≥2時,函數(shù)f(x)=2x+
8
x
-3在區(qū)間(0,2]上單調(diào)遞減,[2,a]上單調(diào)遞增,
故f(x)min=f(2)=5.
綜上所述,函數(shù)f(x)=2x+
8
x
-3在區(qū)間(0,a]上的最小值為 g(a)=
2a+
8
a
?3,0<a<2
5,a≥2
網(wǎng)站名稱:python求函數(shù)的值,如何用python計算函數(shù)的值
本文URL:http://www.dlmjj.cn/article/dsihdgs.html