• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      Python軟件在求多元函數(shù)極值中的應(yīng)用

      2021-08-17 14:20:12趙禹琦
      軟件 2021年3期
      關(guān)鍵詞:求解極值

      摘 要:在高等數(shù)學(xué)領(lǐng)域中,求多元函數(shù)的極值是解決聯(lián)系實際求最優(yōu)解問題的最基礎(chǔ),最有效的方法。而在較為復(fù)雜的多元函數(shù)中,求解極值的計算量較大,因此合理借助計算機軟件來實現(xiàn)求極值能夠節(jié)省時間,提高效率。在眾多軟件中Python具有語言邏輯簡單,通用性強,計算效率高等特點,同時Python中豐富的資源庫能夠為科學(xué)計算提供有力支撐,因此選用Python軟件對數(shù)學(xué)領(lǐng)域的多元函數(shù)的極值進行求解。以二元函數(shù)為例,通過在Python軟件環(huán)境下實現(xiàn)求解函數(shù)的極值,在分析最優(yōu)化問題等實際應(yīng)用中實現(xiàn)高效求解。

      關(guān)鍵詞:多元函數(shù);極值;求解;Python

      中圖分類號:TP311.5 文獻標識碼:A DOI:10.3969/j.issn.1003-6970.2021.03.050

      本文著錄格式:趙禹琦.Python軟件在求多元函數(shù)極值中的應(yīng)用[J].軟件,2021,42(03):171-174

      The Application of Python Software in Finding the Extremum of Multivariate Function

      ZHAO Yuqi

      (School of Intelligent Manufacturing Zhanjiang Institute of Science and Technology, Zhanjiang? Guangdong? 524094)

      【Abstract】:In the field of higher mathematics, finding the extremum of multivariate function is the most basic and effective method to solve the optimization problem. In the more complex multivariate functions, a large amount of calculation are needed to find the extremum. Therefore, with the help of computer software, it can save time and improve efficiency for finding the extremum. Among different software, python is featured with simple language logic, strong versatility and high computational efficiency. At the same time, the rich resource library in python can provide strong support for scientific calculation. Therefore, python is chosen to be applied to solve the problem of finding the extremum of multivariate functions in the field of mathematics. Taking binary function as an example, Finding the extremum of multivariate function by python software, efficiency has been great improved in practical applications especially when analyzing optimization problems.

      【Key words】:multivariate function;extremum;solve problems;Python

      0 引言

      在高等數(shù)學(xué)理論中求解多元函數(shù)的極值問題是研究多元微分學(xué)的基礎(chǔ),在實際生活中也有廣泛應(yīng)用。在用數(shù)學(xué)分析量化實際問題來求最優(yōu)解時,其最優(yōu)解往往受多個條件因素影響,因此通常用到的是多元函數(shù),而在最優(yōu)化問題中常用的方法是求多元函數(shù)的極值,例如在經(jīng)濟學(xué)領(lǐng)域中用來合理分配達到利潤最大化,在數(shù)據(jù)分析領(lǐng)域中篩選最優(yōu)元素,在規(guī)劃領(lǐng)域中求最優(yōu)解等。傳統(tǒng)人工求多元函數(shù)極值的方法繁瑣,容易出錯,時間成本高,因此需要借助計算機科學(xué)軟件來進行求解。Python軟件的邏輯語言簡明,交互性強,其中含有豐富的資源庫,通過合理調(diào)用能夠快速實現(xiàn)科學(xué)計算,被廣泛應(yīng)用在數(shù)學(xué)求值計算中?;赑ython環(huán)境合理設(shè)計程序能夠高效解決多元函數(shù)極值問題,為多元函數(shù)應(yīng)用提供支撐。多元函數(shù)求極值的基礎(chǔ)是應(yīng)用極值的充分條件來判斷并求解,以此為依據(jù)通過Python軟件能夠?qū)崿F(xiàn)對極值的快速準確求解。

      1 Python軟件簡介

      Python是一種邏輯語法簡便,有較強的通用性的軟件,它最早是20世紀80年代由荷蘭程序員開發(fā)出的。Python所用語言是強調(diào)代碼易讀性的高級語言,從最初開發(fā)到現(xiàn)在已經(jīng)更新多個版本,隨著其功能性的逐漸增強,越來越多的程序員們選擇使用Python完成代碼編寫[1]。Python的功能性強,廣泛應(yīng)用在數(shù)據(jù)分析,云計算,網(wǎng)頁設(shè)計和開發(fā)等前沿領(lǐng)域,眾多大型公司和互聯(lián)網(wǎng)企業(yè)例如知乎,百度,阿里等,都主要依托Python軟件。Python的代碼是自由開放的,用戶使用Python軟件是不需要支付任何費用的,并且其下載安裝簡單易操作。Python的語言是邏輯簡單,容易閱讀的,這有助于用戶更專注于應(yīng)用軟件去解決問題,而不是花費大量時間去弄懂復(fù)雜語言。Python的語言具有解釋性,它不必將編寫的程序翻譯成二進制,可以直接運行程序中的源代碼。Python的程序運行簡單,可以無需修改地直接將程序語言由一臺機復(fù)制粘貼到另一臺機上運行,其語言可以實現(xiàn)有效的跨平臺應(yīng)用。Python的擴展性強,它具有較為豐富的腳本語言和多種類型的庫,這些庫的功能包括科學(xué)計算、訪問數(shù)據(jù)庫、網(wǎng)絡(luò)編程等[2]。

      Python具有獨特的語法格式,它并不需要用分號,括號等符號把代碼分割開,它是用TAB或者空格縮進來描述所需要的語法,這可以保持代碼的完整性和簡明性,它的輸出語言應(yīng)用print()。在Python軟件中語言轉(zhuǎn)換能力很強,Python中的變量和變量類型不需要進行申明,直接給變量做相應(yīng)的賦值即可[3]。例如:a=3,b=i,s=Ture,t=None等,盡管這些變量沒有申明類型,但賦值過程中也賦予了其相應(yīng)的變量類型。Python軟件的變量是區(qū)分大小寫的。Python軟件的分支判斷是通過if...elif...else來實現(xiàn)的,常用的判斷符號有:==,!=,<,>,is等。在Python中也可以直接用變量作為分支判斷的條件,其中只要時非None變量都會被認為是真值。Nnoe類型的變量有:None,F(xiàn)alse,0,,()等。應(yīng)用分支結(jié)構(gòu)判斷格式如下:

      if 條件語句:

      print( )

      elif 條件語句:

      print( )

      else:

      Print( )

      Python軟件中還可以定義函數(shù)并調(diào)用,其格式如下:

      def? fun(x,y):

      Return(2*x+3*y+1)

      fun(1,2)

      Python里面有多種數(shù)據(jù)類型,主要分為元祖類型,列表類型和字典類型。元祖類型是指用小括號括起來的一組元素,內(nèi)容具有不可變性。列表類型的表示主要用中括號,它與元祖的區(qū)別是內(nèi)容和長度是動態(tài)可變的。字典類型類似一個容器,可以用來儲存任意的對象,具有可變性。

      Python軟件中包含的庫種類豐富,我們把具有相關(guān)功能的模塊組成的集合統(tǒng)稱為庫。在Python中主要分為標準庫,第三方庫以及自定義庫[4]。具有核心作用的庫主要包括科學(xué)計算庫(numpy,,math,sympy等)主要用來進行數(shù)學(xué)中的科學(xué)計算和數(shù)值求解;工程計算庫(scipy)主要用來解決工程中的計算問題,它的模塊主要有集成,線性代數(shù)和優(yōu)化等;數(shù)據(jù)分析處理庫(pandas)用來系統(tǒng)分析處理復(fù)雜數(shù)據(jù);圖像繪制處理庫(matplotlib,PIL)主要是用來繪圖,對圖片進行深度處理的功能庫。通過合理調(diào)用Python軟件的功能庫,可以把復(fù)雜問題在程序上簡單化,達到高效解決問題的目的。

      2 多元函數(shù)求極值問題

      在求解量化分析的實際問題中,目標問題往往受多種因素影響和制約,在應(yīng)用數(shù)學(xué)模型來準確描述目標問題時,通常就需要分析多個自變量與多個因變量之間存在的某種相互依存的聯(lián)系,由此引入多元函數(shù)。

      多元函數(shù)的概念是由一元函數(shù)進行空間推廣得到的,假設(shè)D是Rn空間上的一個非空點集,我們把從D到R的映射f稱為集合D上的n元函數(shù)??梢杂涀觯?/p>

      其中D為函數(shù)f的定義域,x1,x2,…xn叫做該函數(shù)的自變量,u叫做函數(shù)的因變量。在這個定義中,如果n=1則把該函數(shù)稱為一元函數(shù),n≥2就把該函數(shù)稱為多元函數(shù)。在多元函數(shù)中,集合叫做該函數(shù)的值[5]。其中二元函數(shù)是多元函數(shù)的基礎(chǔ),因此研究極值問題以二元函數(shù)為例。

      把一元函數(shù)可以求導(dǎo)數(shù)的性質(zhì)推廣到多元函數(shù)中,即可得到多元函數(shù)偏導(dǎo)數(shù)的概念。設(shè)函數(shù)z=f(x,y),(x,y)∈D,其中在定義域的內(nèi)點中有一點(x0,y0),當保持y=y0不變,對應(yīng)的x相對于x0有增量?x,函數(shù)有增量,如果存在的極限值,則稱函數(shù)z=f(x,y) 在該點關(guān)于x可偏導(dǎo),把這個極限值叫做z=f(x,y)在

      (x0,y0)關(guān)于x的偏導(dǎo)數(shù)。記為。

      類似的可以定義函數(shù)z=f(x,y)關(guān)于y的偏導(dǎo)數(shù),記為。

      從偏導(dǎo)數(shù)定義可以看出二元函數(shù)z=f(x,y)在(x0,y0)點關(guān)于x的偏導(dǎo)數(shù)等于一元函數(shù)f(x,y0)在點x0處的導(dǎo)數(shù),關(guān)于y的偏導(dǎo)數(shù)也有類似結(jié)論??梢钥闯銮蠖嘣瘮?shù)偏導(dǎo)數(shù)可以先固定一個元素,并對另一個元素求導(dǎo)數(shù)。

      如果二元函數(shù)z=f(x,y)在(x,y)∈D具有偏導(dǎo)數(shù),這兩個偏導(dǎo)數(shù)構(gòu)成的函數(shù)分別可以再次對未知數(shù)x,y求偏導(dǎo)數(shù),得到的結(jié)果稱為z=f(x,y)的二階偏導(dǎo)數(shù),二元函數(shù)的二階偏導(dǎo)數(shù)可以寫成:

      ,

      關(guān)于多元函數(shù)利用偏導(dǎo)數(shù)可以對其求極值。依據(jù)極值的充分條件,如果有函數(shù)z=f(x,y)在點(x0,y0)的鄰域內(nèi)有連續(xù)的二階偏導(dǎo)數(shù),其中(x0,y0)是函數(shù)z=f(x,y)的駐點(一階偏導(dǎo)數(shù)等于零的點),用以下符號表示:

      ,,

      ,

      (1)如果H>0并且有A<0,則可以得到f(x0,y0)是函數(shù)的極大值;如果H>0并且有A>0,則可以得到f(x0,y0)是函數(shù)的極小值。

      (2)如果H<0則說明f(x0,y0)不是極值。

      (3)如果H=0則說明f(x0,y0)可能是極值也可能不是極值,需要另外具體分析討論。

      應(yīng)用極值的充分條件求解是二元函數(shù)求極值的基礎(chǔ),而Python軟件具有科學(xué)計算庫,可以實現(xiàn)求導(dǎo)。在Python中適當?shù)貞?yīng)用條件語句可以進行判斷,因此利用Python合理編寫代碼可以實現(xiàn)對符合極值判別條件的二元函數(shù)進行極大值和極小值的求解。

      3 用Python軟件求解二元函數(shù)的極值

      Python軟件使用的代碼邏輯簡潔,可閱讀性較強,還有多種功能全面的庫可以調(diào)用,因此在求解多元函數(shù)極值問題中多選用Python軟件來實現(xiàn)。Python軟件的科學(xué)計算庫可以快速高效進行求導(dǎo),求偏導(dǎo)以及解方程的運算,適當引用條件語句可以對變量進行判別,為應(yīng)用極值充分條件求解二元函數(shù)極值的問題提供了支撐,可以節(jié)省計算時間,保證求解的準確性。

      求解二元函數(shù)的極值關(guān)鍵在于求出該函數(shù)的一階和二階偏導(dǎo)數(shù),在利用充分條件進行判別,具體舉例如下:

      求函數(shù)的極值。

      依據(jù)極值判別的充分條件:

      先求出相應(yīng)的一階偏導(dǎo)數(shù):

      通過解方程組求駐點:得到駐點(-3,0), (-3,2),(1,0),(1,2)

      求解該函數(shù)的二階偏導(dǎo)數(shù)fxx=6x+6,fxy=0,fyy=-6x+6

      應(yīng)用極值充分條件進行判別:

      把點(-3,0)帶入得到:A=-12,B=0,C=6,H=AC- B2=-72,其中H<0所以該點不是極值點。

      把點(-3,2)帶入得到:A=-12,B=0,C=-6,H=AC- B2=-72,其中H>0,A<0所以該點是極大值點,f(-3,2)= 31,是極大值。

      把點(1,0)帶入得到:A=12,B=0,C=6,H=AC- B2= -72,其中H>0,A>0所以該點是極小值點,f(1,0)=-5,是極小值。

      把點(1,2)帶入得到:A=12,B=0,C=-6,H=AC- B2=-72,其中H<0所以該點不是極值點。

      在python軟件環(huán)境中對該題進行求極值計算程序如下:

      >>> from sympy import*

      >>> x,y=symbols('x,y')

      >>> def fun0(x,y):

      return(x**3-y**3+3*(x**2)+3*(y**2)-9*x)

      >>> def fun1(x,y):

      return(diff(fun0(x,y),x))

      >>> fun1(x,y)

      3*x**2 + 6*x - 9

      >>> def fun2(x,y):

      return(diff(fun0(x,y),y))

      >>> fun2(x,y)

      -3*y**2 + 6*y

      >>> solve([Eq(fun1(x,y),0),Eq(fun2(x,y),0)],(x,y))

      [(-3, 0), (-3, 2), (1, 0), (1, 2)]

      >>> def fun3(x,y):

      return(diff(fun1(x,y),x))

      >>> fun3(x,y)

      6*x + 6

      >>> def fun4(x,y):

      return(diff(fun1(x,y),y))

      >>> fun4(x,y)

      0

      >>> def fun5(x,y):

      return(diff(fun2(x,y),y))

      >>> fun5(x,y)

      -6*y + 6

      >>> def f1(x,y):

      return(6*x + 6)

      >>> a1=f1(-3,0);a2=f1(-3,2);a3=f1(1,0);a4=f1(1,2)

      >>> b1=0;b2=0;b3=0;b4=0

      >>> def f2(x,y):

      return(-6*y + 6)

      >>> c1=f2(-3,0);c2=f2(-3,2);c3=f2(1,0);c4=f2(1,2)

      >>> m1=a1*c1-b1**2;m2=a2*c2-b2**2;m3=a3* c3-b3**2;m4=a4*c4-b4**2

      >>> if m1>0 and a1>0:

      print('極小值',fun0(-3,0))

      elif m1>0 and a1<0:

      print('極大值',fun0(-3,0))

      elif m1<0:

      print('不是極值')

      else:

      print('不能判斷')

      不是極值

      >>> if m2>0 and a2>0:

      print('極小值',fun0(-3,2))

      elif m2>0 and a2<0:

      print('極大值',fun0(-3,2))

      elif m2<0:

      print('不是極值')

      else:

      print('不能判斷')

      極大值 31

      >>> if m3>0 and a3>0:

      print('極小值',fun0(1,0))

      elif m3>0 and a2<0:

      print('極大值',fun0(1,0))

      elif m3<0:

      print('不是極值')

      else:

      print('不能判斷')

      極小值 -5

      >>> if m4>0 and a4>0:

      print('極小值',fun0(1,2))

      elif m4>0 and a2<0:

      print('極大值',fun0(1,2))

      elif m4<0:

      print('不是極值')

      else:

      print('不能判斷')

      不是極值。

      經(jīng)過對例題驗算結(jié)果與Python軟件程序運行結(jié)果相同,可以證明該代碼能準確有效運行。由此可見應(yīng)用Python軟件可以求出符合極值充分條件的二元函數(shù)的極值,且語言邏輯簡單,能夠達到節(jié)省時間提高效率的目地。

      4 結(jié)語

      多元函數(shù)求極值問題是多元微分學(xué)的重要組成部分,在解決受多種客觀因素影響的實際問題時,通常把問題抽象出帶有多元函數(shù)的數(shù)學(xué)模型,對其求最優(yōu)解時廣泛應(yīng)用到多元函數(shù)求極值思想。高效精確地求出多元函數(shù)的極值有助于節(jié)約時間成本,實現(xiàn)科學(xué)求解最優(yōu)化問題。而Python軟件可以實現(xiàn)求解導(dǎo)數(shù),偏導(dǎo)數(shù),高階導(dǎo)數(shù)等科學(xué)計算,通過適當編寫代碼,能夠達到精確求得滿足極值判別條件的二元函數(shù)的極值。Python具有簡單的語法結(jié)構(gòu),運行效率提高,能夠為解決實際問題提供有效工具。

      參考文獻

      [1] 張偉,邱崇濤,謝明宏,等.利用Python自動化生成地質(zhì)解釋圖件[J].物探與化探,2021,45(1):186-191.

      [2] 王軼哲.基于數(shù)據(jù)挖掘的客戶預(yù)測及其Python實現(xiàn)技術(shù)研究[J].電子制作,2020(24):51-52.

      [3] 張珩.Python的計算機軟件應(yīng)用技術(shù)探討[J].電腦知識與技術(shù),2020,16(32):96-97+102.

      [4] 顧建軍.信息與計算科學(xué)專業(yè)的Python教學(xué)分析與設(shè)計[J].科技資訊,2020,18(35):35-37+40.

      [5] 王培,李津平,李奇芳,等.多元函數(shù)極值的探討[J].玉林師范學(xué)院學(xué)報,2019,40(5):10-13.

      猜你喜歡
      求解極值
      極值點帶你去“漂移”
      極值點偏移攔路,三法可取
      一類“極值點偏移”問題的解法與反思
      關(guān)于函數(shù)定義域的求解方法的探究
      提高學(xué)生解題速度的策略和方法
      高中物理牛頓運動定律如何求解
      匹配數(shù)為1的極值2-均衡4-部4-圖的結(jié)構(gòu)
      宜昌市| 安阳县| 东山县| 武冈市| 阳泉市| 靖西县| 正宁县| 大港区| 福建省| 益阳市| 阳原县| 哈巴河县| 新巴尔虎左旗| 克山县| 波密县| 新竹县| 伽师县| 孟津县| 西青区| 古田县| 南通市| 商河县| 西乡县| 怀来县| 娱乐| 六枝特区| 全州县| 忻城县| 海淀区| 玉门市| 贵德县| 莲花县| 邯郸县| 长岛县| 济阳县| 沙河市| 万州区| 徐州市| 离岛区| 崇文区| 抚宁县|