上大學的時候學習的微積分,雖然那時候的數學也挺好,但是有一些概念還是知其然不知其所已然。最近在學習影象識別方面的知識,裡面用到了大量的微積分學的東西,因此不得不再次重溫書本裡面的東西。再次閱讀時真的發現了一些不同於以往的知識感悟,所以說2千多年前的先輩總結的」溫故而知新「真的是很有作用。
導數
以前對導數的理解就是乾巴巴的數學公式,就是理解為在某一點上y的增量對x增量的商的極限值,因此導數又成為微商。其實導數的物理意義就是因變數在某一點附近對自變數的變化率,而在幾何上則表示為曲線上某點的切線直線的斜率值。根據導數的定義:
f(x) - f(x0)
f'(x0) = lim --------------
x->x0 x - x0
那麼我們可以得出乙個公式 : f(x) ≈ f(x0) + f'(x0)*(x - x0) 當x越接近於x0時這個近視值就越相等,因此導數的乙個實踐意義就是如果我們知道某個函式在某點的值(總所周知或者比較容易計算出來)那麼我們就可以通過導數來求出某點附近的函式值的大約值,這個可以用於某些測量和估算應用。通過上面的描述也可以看出如果某個函式在某點內有導數則說明這個函式是連續的而且在這這點上比較平滑,因此才可以用線性函式的值來代替曲線函式的值。
在幾何上我們知道導數就是函式在某點x0的切線的斜率,那麼我們就可以用導數來描述這條切線直線的函式:
設函式f(x)在某點x0處的導數為f'(x0).那麼函式在x0處的切線的函式解析式f(x)的公式如下:
f(x) = f(x0) + f'(x0) *(x - x0)
因為切線和曲線只相交一點f(x0),所以 f(x0) = f(x0),得出:
f(x) - f(x0) = f'(x0)*(x - x0)
從上面的定義我們可以看出如果x->x0 則 f(x) = f(x) 也就是說我們可以通過線性直線來描述某個曲線的函式值,結果是我們可以把複雜的計算轉化為簡單的線性計算。
微分
我們知道微分的概念定義是函式在某一點的增量δy 可以表示為某個常量a於δx的乘積加上o(δx),則成為函式在x0處可微,則稱a*δx為函式在x0處的微分記為dy
根據導數的定義我們知道:
δy ≈ f'(x0)*δx 因此dy = f'(x0)*δx 而δx因為對自己可微,因此有dy = f'(x0) * dx。
上面有導數的切線函式f(x)。則根據定義可以得到
f(x) - f(x0) = dy
因此我們可以得到微分的幾何意義是某個函式在某一點的增量可以大概表示為線性函式f(x)的增量,也就是我們可以用線性的增量來計算複雜的曲線增量。
積分
從不定積分的概念我們知道積分就是微分的逆向運算。
f(x) + c = ∫ f(x)dx
f(x)是f(x)的導數,而f(x)dx = dy
所以得出f(x)+c = ∫dy
那麼這裡為什麼積分要用∫f(x)dx 而不是∫f(x)呢,這裡有2個原因:
1.積分是微分的逆運算
這裡f(x)是f(x)的導數,f(x)dx是f(x)的微分,即f(x)dx=df(x),那麼∫f(x)dx=∫df(x), 而∫f(x)dx就是為了求f(x)dx的原函式f(x),而df(x)是求原函式f(x)的微分f(x)dx,這說明d和∫是互逆運算,互逆的兩個運算符號放在一起是可以抵消的,即∫f(x)dx=∫df(x)=f(x)
2.不定積分其實是定積分的一種特殊形式,也就是上下限中有乙個是常數而另外乙個是變數。
我們都知道∫f(x)dx=f(x)+c 其實任何不定積分都可以看作積分上限或者下限只有乙個確定的定積分(看了基本公式的推到過程應該能更好地理解) 其中常數c可以看做f(x)的上限或者下限函式值。
正因為是上限或者下限只有乙個確定(確定的這個值和c有關),而另外乙個是x,所以叫不定積分。
∫可以看作連續值的∑,而顯然又由導數的定義可以知道這裡的∫f(x)dx直觀地表示了f(x)-f(a)那麼c=-f(a)
另外因為歷史上是先有定積分而後有不定積分的,根據定分的定義其實就是某個區域內的微分的累加和,如果把這個概念擴充套件到負無窮區域和正無窮區域之間則變成了這個函式的微分的累加和,也就是函式本身的曲線了。所以積分裡面是表示為∫f(x)dx而不是∫f(x)
那麼在定積分定義裡面
a∫ f(x)dx
b是定義為
blim ∑ f(x)*dx
dx->0 x=a
因為f(x)是原函式f(x)的導數,而f(x)*dx是f(x)在某處的微增量,那麼從a->b的微增量的和也就是f(a)到f(b)的增量了,也就是說
af(b) - f(a) = ∫ f(x)dx
b這就是為什麼定積分的計算公式就是原函式的兩個區間的差值了。從另外乙個角度來說定積分的幾何意義還表示為某個函式和x=a, x=b, y=0這個區域的面積,這個好理解。真的很神奇,定積分對於原函式f(x)來說是這個函式在某個區域內的y的增量和,而對於原函式的導數函式f(x)來說則是f(x)在a,b這個區域內的面積。
泰勒公式和麥克勞林公式
我們假設某個函式f(x)可以用某個冪級數表示:
f(x) = a0 + a1*(x-x0) + a2*(x-x0)^2 + a3*(x-x0)^3+ ... an*(x-x0)^n n->∞
那麼我們有沒有方法能夠確定a0, a1,a2.... an的值?
上面公式求導我們可以得出: (** 注: 這裡用 f(n)(x) 來表示f(x)的n階導數)
f(x0) = a0
f'(x0) = 1*a1
f''(x0) = 2 * a2
f'''(x0) = 3*2*1*a3
f(n)(x0) = n! * an
因此可以得出:
a0 = f(x0)
a1 = f'(x0)/1
a2 = f''(x0) / (2 * 1)
a3 = f'''(x0) / (3 * 2 * 1)
an = f(n)(x0)/ n!
那麼我們就可以根據上面的公式得出:
f(x) = f(x0) + f'(x0)(x-x0) + f''(x0)/2! * (x - x0)^2 + ... f(n)(x0)/n! * (x - x0)^n
這個公式就是所謂的泰勒公式,其中的x0可以是任意的數字。而當x0 = 0 時我們成為邁克勞林公式:
f(x) = f(0) + f'(0)x + f''(0)/2!*x^2 + ... f(n)(0)/n!*x^n
泰勒公式告訴我們乙個函式可以表示為函式某點的各級導數的二項式乘積之和。也就是可以將某個函式的值通過初等函式來表達。但實際中我們不可能對n進行無窮的計算,我們只能通過計算有限個n來計算函式的值。但這裡問題就來了,是否可以通過有限個n的計算來近似表達f(x)呢?
因為:f(x) = ∑ f(n)(x0)/n!*(x- x0)^n
n=0設
nf(x) = ∑ f(n)(x0)/n!*(x- x0)^n
n = 0
設r(x) = f(x) - f(x)。 也就是如果我們能用f(x)來表示f(x)的話,那麼只要證明當n-> ∞ 時 r(x) -> 0就可以了。
很明顯上述描述是正確的。因此我們可以通過泰勒公式來進行某個函式值的近似計算,並且當n越大時結果越接近真實的值。
關於JAVA NIO一些體驗
1.nio最大的變化是把服務端和客戶端抽像統一起來,用乙個selector來檢測事件。但把服務端與客戶端分開來做系統的難度會小些,效能也會高些 因為 裡少了檢查是服務端還是客戶端的部分 2.serversocketchannel只支援op accept,socketchannel支援op write...
華為雲CSE體驗館的一些體驗感受
微服務挺火的,感覺大夥都在微服務,正好看到華為雲的cse新出了乙個體驗館,免費體驗了一下,有如下感受,歡迎拍磚 整個體驗館的介面設計還是挺清晰的,微服務常用的服務降級和灰度發布都可以體驗到。各個功能中的操作指導也很明確,只需要跟著介面引導一步步做就可以,小白使用者也可以看得懂。就是這個功能指引的位置...
有關於使用者體驗的一些總結
首先分享一句話 使用者是沒有錯的,如果使用者在使用某物品的時候遇到麻煩,那是因為設計出了問題。諾曼 設計心理學 認識使用者 使用者永遠都沒有錯。使用者都是特別忙,特別沒有耐心的人。使用者永遠都比你想象的聰明。使用者體驗對產品的重要性 不論使用者訪問的是什麼型別產品,都是乙個自助的行為。他們所能依靠的...