在Python中使用Fsolve函數(shù)的過(guò)程解析
本文將探討我們?nèi)绾卧赑ython中使用fsolve
來(lái)尋找一個(gè)解決方案。我們還將探討使用它的場(chǎng)景和一些示例代碼,以更好地理解如何以及何時(shí)使用它來(lái)達(dá)到某種結(jié)果。
讓我們首先了解什么是fsolve
以及為什么使用它。
Python中的fsolve 函數(shù)
方程是數(shù)據(jù)科學(xué)的根基,它們幫助數(shù)據(jù)科學(xué)家、數(shù)學(xué)家、化學(xué)工程師和醫(yī)生理解他們每天處理的各種情況?,F(xiàn)在,隨著計(jì)算機(jī)籠罩在我們的日常生活中,按順序解決基于大尺度的方程變得更加困難。
Python的fsolve
,使這些專(zhuān)業(yè)人士和其他人更容易使用Python庫(kù)提供的不同模塊來(lái)解決這些方程。fsolve
基本上是一個(gè)SciPy模塊,用于返回非線(xiàn)性方程的根。
fsolve
有各種參數(shù),為各種情況提供。這些可以很容易地直接從網(wǎng)上提供的SciPy文檔中找到。
這就是fsolve
的整個(gè)參數(shù)列表的樣子:
示例代碼:
scipy.optimize.fsolve (func, x0, args=(), fprime=None, full_output=0, col_deriv=0, xtol=1.49012e-08, maxfev=0, band=None, epsfcn=None, factor=100, diag=None)
你可以在SciPy文檔中找到所有參數(shù)的詳細(xì)解釋以及每個(gè)參數(shù)的含義。不過(guò),我們將對(duì)這些參數(shù)進(jìn)行簡(jiǎn)要而又容易理解的總結(jié):
參數(shù) | 說(shuō)明 |
---|---|
func , 可調(diào)用f(x, *args) | 這基本上是一個(gè)函數(shù)的描述,它接受一個(gè)或多個(gè)可能是向量的參數(shù),并返回一個(gè)與參數(shù)長(zhǎng)度相同的值。 |
x0 , ndarray | 這個(gè)參數(shù)標(biāo)志著函數(shù)f(x)=0 ,其根的初始估計(jì)值是什么。 |
args , tuple (可選) | 這些是該函數(shù)可能需要的任何額外參數(shù)。 |
fprime , 可調(diào)用f(x, *args) (可選) | 這是一個(gè)用于計(jì)算函數(shù)雅各布估計(jì)值的函數(shù),其導(dǎo)數(shù)跨越行。 |
full_output , bool (可選) | 如果條件滿(mǎn)足或?yàn)檎妫@將返回任何可選的輸出值。 |
col_deriv , bool (可選) | 通過(guò)這個(gè)參數(shù),你可以指定雅各布函數(shù)是否沿列計(jì)算導(dǎo)數(shù)。根據(jù)SciPy文檔,由于沒(méi)有轉(zhuǎn)置操作,這樣做會(huì)更快。 |
xtol , float (可選) | 這個(gè)參數(shù)將允許函數(shù)根據(jù)兩個(gè)連續(xù)迭代值之間相對(duì)誤差的最xtol ,終止計(jì)算。 |
maxfev , int (可選) | 這定義了對(duì)函數(shù)的最大調(diào)用次數(shù)。 |
band , tuple (可選) | 這是為fprime 被設(shè)置為None 。如果參數(shù)被設(shè)置為包含矩陣內(nèi)子對(duì)角線(xiàn)和超對(duì)角線(xiàn)數(shù)量的雙序列,那么雅可比矩陣被認(rèn)為是帶狀的。 |
epsfcn , float (可選) | 如果fprime 被設(shè)置為None ,該參數(shù)將包含雅各比矩陣前向差分的合適步長(zhǎng)。如果epsfcn 小于機(jī)器精度,則假定函數(shù)的相對(duì)誤差為機(jī)器精度的順序。 |
factor , float (可選) | 這個(gè)參數(shù)決定了初始步長(zhǎng)邊界,必須在(0.1, 100)之間。 |
diag , sequence (可選) | 這些N個(gè)正數(shù)項(xiàng)作為變量的比例因子。 |
在Python中使用fsolve 函數(shù)來(lái)尋找解決方案
現(xiàn)在你可能已經(jīng)知道了,fsolve
可以用于不同場(chǎng)景下的各種非線(xiàn)性方程。讓我們來(lái)探索一些簡(jiǎn)單的代碼樣本,以更好地掌握fsolve
的使用方法:
找出起點(diǎn)為-0.2的方程的根x+2cos(x)
示例代碼:
from math import cos import scipy.optimize def func(x): y = x + 2*cos(x) return y y = scipy.optimize.fsolve(func,0.2) print (y)
在這段代碼中,我們從Python中龐大的math
庫(kù)中導(dǎo)入cos
函數(shù),從scipy
(fsolve
的來(lái)源)導(dǎo)入optimize
。接下來(lái),我們定義我們的方程,并將其存儲(chǔ)在func
方法的y
中。
在我們的方程被正確初始化后,我們只需使用fsolve
來(lái)調(diào)用包含方程的方法(func)
。在第二個(gè)參數(shù)中,我們定義方程的起點(diǎn)。
然后,結(jié)果被存儲(chǔ)在一個(gè)變量y
,打印輸出。
代碼的輸出:
[-1.02986653]
解決一個(gè)起點(diǎn)為0和2的方程
示例代碼:
from math import cos import scipy.optimize def func(x): y = [x[1]*x[0] - x[1] - 6, x[0]*cos(x[1]) - 3] return y x0 = scipy.optimize.fsolve(func,[0, 2]) print(x0)
在這段代碼中,我們遵循與代碼 1 相同的步驟,從 Python 的math
和scipy
庫(kù)中導(dǎo)入cos
和scipy.optimize
。我們繼續(xù)進(jìn)行下一步,在一個(gè)叫做func
的方法中定義一個(gè)方程。
然后我們?cè)?code>fsolve 函數(shù)中調(diào)用這個(gè)方法作為參數(shù),并向它提供兩個(gè)起點(diǎn),0和2,然后將它們存儲(chǔ)并打印在一個(gè)叫做x0
的變量中。
該代碼的輸出:
[6.49943036 1.09102209]
找出以0.3為起點(diǎn)的方程的根4sin(y)-4
示例代碼:
from math import sin import scipy.optimize def func(y): x= 4*sin(y) - 4 return x x= scipy.optimize.fsolve(func,0.3) print (x)
在這個(gè)示例代碼中,我們從math
庫(kù)中導(dǎo)入sin
,而不是cos
。代碼的結(jié)構(gòu)與上面的例子相同,我們還為fsolve
導(dǎo)入scipy.optimize
,然后在方法func
中定義一個(gè)方程。
我們把這個(gè)方法稱(chēng)為fsolve
中的一個(gè)參數(shù),起點(diǎn)為0.3。得到的數(shù)值被儲(chǔ)存在變量x
,并打印輸出。
代碼的輸出:
[1.57079633]
在這篇文章中,我們了解到fsolve
是用來(lái)尋找非線(xiàn)性方程的根的,了解到fsolve
可以接受的不同種類(lèi)的參數(shù)以及每個(gè)參數(shù)的含義。此外,我們經(jīng)歷了一些fsolve
的工作實(shí)例,研究了如何在你的代碼中使用它。
現(xiàn)在你已經(jīng)通過(guò)了理論和實(shí)際的代碼樣本,了解了fsolve
是如何用于推導(dǎo)解決方案的,現(xiàn)在是時(shí)候創(chuàng)建自己的代碼,進(jìn)一步探索fsolve
的工作原理了。
我們希望你覺(jué)得這篇文章對(duì)理解如何使用fsolve
來(lái)解決 Python 中的問(wèn)題有幫助。
到此這篇關(guān)于在Python中使用Fsolve函數(shù)的過(guò)程解析的文章就介紹到這了,更多相關(guān)Python使用Fsolve內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Tensorflow訓(xùn)練MNIST手寫(xiě)數(shù)字識(shí)別模型
這篇文章主要為大家詳細(xì)介紹了Tensorflow訓(xùn)練MNIST手寫(xiě)數(shù)字識(shí)別模型,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-02-02anaconda中安裝的python環(huán)境中沒(méi)有pip3的問(wèn)題及解決
這篇文章主要介紹了anaconda中安裝的python環(huán)境中沒(méi)有pip3的問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02Python OpenCV實(shí)現(xiàn)基于模板的圖像拼接
基于特征點(diǎn)的圖像拼接如果是多張圖,每次計(jì)算變換矩陣,都有誤差,最后可以圖像拼完就變形很大,基于模板的方法可以很好的解決這一問(wèn)題,本文就來(lái)和大家具體聊聊2022-10-10Pycharm中無(wú)法使用pip安裝的包問(wèn)題解決方案
本文主要介紹了Pycharm中無(wú)法使用pip安裝的包問(wèn)題解決方案,在終端通過(guò)pip裝好包以后,在pycharm中導(dǎo)入包時(shí),依然會(huì)報(bào)錯(cuò),下面就來(lái)介紹一下解決方法2023-09-09Python+selenium破解拼圖驗(yàn)證碼的腳本
很多網(wǎng)站在登錄或者注冊(cè)時(shí)都會(huì)遇到拼圖驗(yàn)證碼,這種拼圖驗(yàn)證碼實(shí)際上是多個(gè)小碎片經(jīng)過(guò)重新組合成的一張整體。本文將和大家分享一個(gè)基于Python selenium的破解拼圖驗(yàn)證碼的腳本,需要的可以參考一下2022-02-02Python Dict 到 Dataclass實(shí)現(xiàn)高效數(shù)據(jù)訪(fǎng)問(wèn)與管理的兩種方式(推薦)
本文介紹了Python中的字典和DataClass兩種數(shù)據(jù)結(jié)構(gòu),并探討了如何將字典轉(zhuǎn)換為DataClass,字典適用于鍵值對(duì)存儲(chǔ),感興趣的朋友一起看看吧2024-12-12Python微信企業(yè)號(hào)開(kāi)發(fā)之回調(diào)模式接收微信端客戶(hù)端發(fā)送消息及被動(dòng)返回消息示例
這篇文章主要介紹了Python微信企業(yè)號(hào)開(kāi)發(fā)之回調(diào)模式接收微信端客戶(hù)端發(fā)送消息及被動(dòng)返回消息的方法,涉及Python微信企業(yè)號(hào)回調(diào)模式消息響應(yīng)機(jī)制相關(guān)操作技巧,需要的朋友可以參考下2017-08-08