計(jì)算機(jī)科學(xué)的起源是為了解決數(shù)學(xué)問題,所以,在某種程度上,可以把計(jì)算機(jī)科學(xué)歸為數(shù)學(xué)的一個(gè)分支。因此,可以通過使用Python程序來學(xué)習(xí)高等數(shù)學(xué)中的知識(shí),如積分、微分等,反之,也可以通過解決數(shù)學(xué)問題深化Python的 編程 思維。 積分的由來 在古埃及,尼羅河經(jīng)常泛濫成災(zāi),但是每當(dāng)洪水退去之后,就會(huì)留下肥沃的沖積平原供人們播種。古時(shí)候的人們想知道沖積平原上可用的耕地面積,但是沖積平原的形狀不是常規(guī)的矩形或者圓形,而是不規(guī)則的形狀,這就為測量的工作帶來了麻煩。 后來經(jīng)過數(shù)學(xué)家們的不斷探索,他們發(fā)現(xiàn),如果把這些不規(guī)則的形狀分割成一個(gè)個(gè)小的矩形,只要把矩形窄的一邊切得足夠小,再把這些矩形的面積加起來,矩形的面積之和就無限接近于不規(guī)則圖形的實(shí)際面積,這就是積分的由來,積分的幾何意義就是求函數(shù)與坐標(biāo)系形成的面積。 私信小編01 獲取源碼學(xué)習(xí)教程! 受到啟發(fā)的數(shù)學(xué)家們,在測量一塊不規(guī)則的圖形面積時(shí),會(huì)把沿著河流的一側(cè)當(dāng)做橫軸,就是坐標(biāo)系里的x軸,把與河流呈逆時(shí)針90°方向的一側(cè)當(dāng)做縱軸,也就是坐標(biāo)系里的y軸。這樣,對(duì)于每一個(gè)x的值,都有一個(gè)對(duì)應(yīng)y的值與之對(duì)應(yīng)。在這里,我們把x的值叫做自變量,y的值叫做因變量,記作y = f(x)。對(duì),你沒看錯(cuò),這就是函數(shù)的雛形。 有了函數(shù)之后好處就多了。我們把不規(guī)則形狀的橫向距離(假設(shè)為L)分為n等分(n->+∞),那么,橫坐標(biāo)是從0開始的,每一份的長度就是L/n。那么第一塊矩形對(duì)應(yīng)的橫坐標(biāo)點(diǎn)是1*L/n,第二塊矩形對(duì)應(yīng)的橫坐標(biāo)點(diǎn)是2*L/n,第三塊矩形對(duì)應(yīng)的橫坐標(biāo)點(diǎn)是3*L/n…以此類推,那么聰明的你肯定已經(jīng)想到了,第n塊矩形對(duì)應(yīng)的橫坐標(biāo)點(diǎn)是就是L。 既然確定了橫坐標(biāo),那么縱坐標(biāo)的位置就可以通過f(x)來求出,那么第一塊矩形的面積就是L/n*f(1*L/n),第二塊矩形的面積就是L/n*f(2*L/n)…第n塊矩形的面積就是L/n*f(L),然后把這些數(shù)加起來就得到了不規(guī)則圖形的面積。 sin(x)的積分(面積) 學(xué)過高等數(shù)學(xué)的你一定還記得,sin(x)在0-2π上的面積為 4,如下: 用Python求sin(x)在0-2π上的面積 想要求一個(gè)規(guī)則圖形的面積,如長方形,直接用長×寬即可,但是如果要求一個(gè)不規(guī)則的圖形面積,如sin(x)在0-2π上的面積呢? 根據(jù)積分的來源和積分的含義,實(shí)際上很容易知道可以通過將曲面面積劃分為一個(gè)個(gè)矩形,最后求矩形之和的方式來實(shí)現(xiàn) (順便說一句:聲波的音頻采樣(數(shù)字化)也是類似的原理) 。如下: 那么如何用Python代碼來實(shí)現(xiàn)呢? 首先,我們需要將sin(x)與x軸在0-2π組成的面積劃分為很多個(gè)矩形,因此需要引入一個(gè)變量n,那么矩形在x軸上的寬度(width)即為2π/n。 其次,我們需要通過sin(X)函數(shù)求出每個(gè)矩形的高度(height),假設(shè)為第i個(gè)矩形,則其高度為sin(i*width)。 最后,我們還需要把所有矩形的和相加,這里需要用到for循環(huán)。 另外,還需要注意的是,由于sin(x)在π-2π之間時(shí)為負(fù)數(shù),因此還需要使用絕對(duì)值函數(shù)。 import math n = 100 # n是將x軸(0-2π)切段的數(shù)量 area = 0 width = 2 * math.pi / n for i in range(1,n+1): x = i * width height = abs(math.sin(x)) area += width * height print(area) 程序輸出結(jié)果為:3.9986839661525218。 即,當(dāng)我們將sin(x)在0-2π上劃分為100個(gè)小矩形時(shí),小矩形面積之和為3.9986839661525218。 聰明的你應(yīng)該想到,如果矩形劃分的越細(xì),數(shù)量越多,矩形面積之后就應(yīng)該更接近于sin(x)的真實(shí)面積。那么,如果將n設(shè)置為1000000,其結(jié)果會(huì)是怎樣了。 正如你所想,程序輸出結(jié)果為:3.999999999986816。Great!很明顯與n=100相比,更加接近于sin(x)的真實(shí)面積(4)了。 好了,本次的Python小課,Python與高等數(shù)學(xué)之Python與積分就到這里了,下次咱們?cè)倭牧腜ython與高等數(shù)學(xué)之Python與微分。 |
|