亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python實現函數求導的方法

發布時間:2020-07-09 11:10:53 來源:億速云 閱讀:6388 作者:清晨 欄目:編程語言

小編給大家分享一下python實現函數求導的方法,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!

python實現函數求導的方法是:1、利用sympy庫中的symbols方法傳入x和y變量;2、利用sympy庫中的diff函數傳入需要求導的函數即可返回求導之后的結果。

python利用sympy庫對某個函數求導,numpy庫使用該求導結果計算的程序

在python數據處理過程中,我們經常會遇見這樣一種情況。需要對一個函數表達式求偏導,并將具體數值代入導數式。

而python中通常可用于函數求導的函數是sympy庫中的diff()函數。
但他通常所求得的導數只是一個符號表達式。不能直接帶入數據使用。

如下例:

import sympy as sp
import numpy as np
x,y = sp.symbols('x y')
z = sp.sin(2*sp.pi*x+2*y/5)
zx = sp.diff(z,x)
zy = sp.diff(z,y)
print(zx)
print(zy)

其輸出為:

2*pi*cos(2*pi*x + 2*y/5)
2*cos(2*pi*x + 2*y/5)/5

那么該如何解決這個問題呢?

對x,y使用evalf()函數分別賦值后,用float進行類型轉換后,才能利用numpy進行數值計算。

如下例:

import sympy as sp
import numpy as np
x,y = sp.symbols('x y')
z = sp.sin(2*sp.pi*x+2*y/5)
zx = sp.diff(z,x)
zy = sp.diff(z,y)
x1 = 10
y1 = 5
z_x1 = float(zx.evalf(subs={x:x1,y:y1}))
z_y1 = float(zy.evalf(subs={x:x1,y:y1}))
print(z_x1)
print(z_y1)

其輸出結果:

-2.61472768902227
-0.16645873461885696

那如果我的x或y不是單一的值呢?而是一個數組。

我們可以利用一個循環來完成。

如下例:

import sympy as sp
import numpy as np
x,y = sp.symbols('x y')
z = sp.sin(2*sp.pi*x+2*y/5)
zx = sp.diff(z,x)
zy = sp.diff(z,y)
x_array = np.linspace(-5, 5, 10)
y_array = np.linspace(-5, 5, 10)
temp_x = []#先定義一個用于存儲x偏導的空列表
temp_y = []#先定義一個用于存儲y偏導的空列表
for i in range(10):
    z_x = float(zx.evalf(subs={x:x_array[i],y:y_array[i]}))
    temp_x.append(z_x)#將計算得到的偏導值一一添加到列表中
    z_y = float(zy.evalf(subs={x:x_array[i],y:y_array[i]}))
    temp_y.append(z_y)
zx_array = np.array(temp_x)#將列表轉換為數組
zy_array = np.array(temp_y)
print(zx_array)
print(zy_array)

輸出結果為:

[-2.61472769  4.11163864  6.02946289  0.89585862 -5.2854481  -5.2854481
  0.89585862  6.02946289  4.11163864 -2.61472769]
[-0.16645873  0.26175505  0.38384753  0.05703213 -0.33648208 -0.33648208
  0.05703213  0.38384753  0.26175505 -0.16645873]

由此便實現了由sympy得到求導結果,到numpy庫進行數值計算。

看完了這篇文章,相信你對python實現函數求導的方法有了一定的了解,想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

襄汾县| 施甸县| 晋州市| 大渡口区| 耿马| 荔波县| 宜丰县| 樟树市| 运城市| 碌曲县| 兴业县| 弋阳县| 奇台县| 偃师市| 崇信县| 中江县| 手游| 监利县| 花莲市| 英山县| 沙湾县| 岱山县| 苍山县| 仁布县| 巴楚县| 顺义区| 故城县| 龙胜| 台南市| 太原市| 邢台市| 佛学| 宣汉县| 钟山县| 锡林浩特市| 香河县| 银川市| 平潭县| 威宁| 松溪县| 墨脱县|