2017年7月27日 星期四

Haskell中用foldl實現foldr

假設折疊中的折疊函數是$f(x,y)$,要折疊$[1,2,3]$,初始值是$0$。
左折疊的精神如下:
$f(f(f(0 , 1) , 2) , 3)$
遞迴呼叫是發生在左邊的參數。
參數求值是從左到右的。因為一定要先遞迴到最深才能取得參數值,所以不能使用在無窮串列上。

2017年7月24日 星期一

windows上的gvim如何設定預設字型

gvim上設定預設字型向來是一件麻煩事,尤其在windows上。
問題是參數不知道應該長怎樣,隨系統的不同而不同。

windows上,開啟gvim之前系統會執行"_vimrc"的內容。
首先用視窗界面("編輯"→"設定字型")來設定字型。
接下來利用":set guifont?"指令來觀察參數應該長怎樣。
然後在_vimrc中最後一行輸入 「 set guifont="剛剛看到的參數" 」就可以了。
我的gvim 8.0,windows 7,最後結果是這樣

set guifont=Source_Code_Pro_Medium:h12:cANSI:qDRAFT


2017年4月7日 星期五

小o符號的使用

小o符號在計算函數極限和闡述微分定義時非常的有用。對於極限理論來講,它並沒有帶來新的思想,但是符號的使用非常便利,可以造成思考上的省力效果,對於各種極限運算也可以透過小o,在形式上完全變成代數運算。小o可以說是偷渡"無窮小"的數到標準分析學裏的一個辦法。不用學習非標準分析繁重的邏輯就能夠享受非標準分析的好處。

2017年1月19日 星期四

微分形式的不變性

微分的定義是這樣的
$$df=f'(x)dx\tag{1}$$
高階微分的定義
$$d^nf=f^{(n)}(x)dx^n\tag{1a}$$
這個式子的由來是因為我們把$dx$當成固定的,它不是$x$的函數,所以$d(dx)=0$,但是$f'(x)$是$x$的函數,因此

帶參數積分的微分

$$\frac{d}{dy} \int_{v(y)}^{u(y)} f(x,y) \, dx$$
這式子要如何計算?
$$\begin{align*}  設 \int_v^u f(x,y) \, dx&=I(u,v,y) \\
  dI&=\frac{\partial I}{\partial u} du + \frac{\partial I}{\partial v} dv + \frac{\partial I}{\partial y} dy \\
& =f(u(y),y)u'(y)dy-f(v(y),y)v'(y)dy+ (\int_v^u f'_y(x,y) \, dx)\, dy \frac{dI}{dy} \\
&=f(u(y),y)u'(y)-f(v(y),y)v'(y)+\int_v^u f'_y(x,y)\,dx
\end{align*} $$
證明要比這個麻煩,這樣只是方便記憶。

2017年1月14日 星期六

泰勒多項式的兩種餘項

假設$f(x)$在$[a, b]$連續,在$(a, b)$ $n+1$階可微,帶餘項的泰勒公式是這樣的:
$  f(b) = \sum_{k=1}^n f^{(k)}(a)/(k!) (b-a)^k+f^{(n+1)}(\xi)/((n+1)!)(b-a)^{n+1} $

$f^{(n+1)}(\xi)/((n+1)!)(b-a)^{n+1}$是最常見的餘項,叫做拉格朗日餘項。但是還有令一種餘項叫做積分餘項(還有第三種,暫時不提),這可以直接用分部積分推導,或是從拉格朗日餘項用積分中值公式推導。後一種方法簡單一點。

多加上一個條件,就是$f(x)$在$(a, b)$連續可微,就成立積分餘項
$(1/n!)\int_a^b f^{(n+1)}(x)(b-x)^n \, dx$

注意到$(b-x)$在 $x$ 屬於$[a,b]$時不變號,又發現
$(1/n!)\int_a^b (b-x)^n \, dx= (b-a)^{n+1}/(n+1)!$,
之後套用積分中值公式就知道兩種餘項相等了。