中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

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

宣威市| 北海市| 东阿县| 洛南县| 义乌市| 河间市| 石渠县| 芜湖市| 甘肃省| 瑞金市| 石嘴山市| 津市市| 米林县| 高平市| 鹤壁市| 万山特区| 遂昌县| 临朐县| 梁平县| 沁水县| 定襄县| 乌拉特后旗| 太谷县| 怀柔区| 通化县| 绍兴县| 泊头市| 静宁县| 五指山市| 什邡市| 河南省| 襄汾县| 澳门| 盱眙县| 凉山| 醴陵市| 海城市| 武隆县| 大宁县| 莱西市| 元谋县|