如果只是要答案,那很簡單,假設位置向量$\bf{X}$,
$x=x(u,v,w)$,$y=y(u,v,w)$,$z=z(u,v,w)$,那麼新座標系$(u,v,w)$的基向量可以取為
$$\mathbf{g}_1=\frac{\partial \mathbf{X}}{\partial u},\ \mathbf{g}_2=\frac{\partial \mathbf{X}}{\partial v}, \ \mathbf{g}_3=\frac{\partial \mathbf{X}}{\partial w}$$這是未標準化的向量,物理上常常要取基向量的長度為1,那就把上述的向量除以各自的長度。
Courant的數學分析的第二卷第一分冊,練習3.6d就是在問如何導出新座標系的基向量,以及在新的基向量之下如何表示梯度。這是很有代表性的問題,因為這些問題通常是物理課本的內容,一般數學書不會提到,所以這本書把它放在練習題。題目如下:
2023年3月27日 星期一
座標變換後新的基向量如何導出
2023年2月21日 星期二
測度論講義中的定理10.5.5的證明補充說明
跟上一篇一樣是出自測度論講義(嚴加安著)第三版,這次書中的證明過程都沒錯了,只是有一個地方很難明白,所以補充說明。
定理如下:
設 $\mu$ 是 $E$ (同上一篇)上的實值集函數,滿足四條公理(Shapley值必須符合的公理)的函數$\phi$是唯一的,等於下式:
$$
\phi_i(\mu)=\sum_{T \subset E}\gamma_n(|T|)[\mu(T)-\mu(T \backslash \{i\})], i=1,\cdots,n \\
\gamma_n(|T|)=\frac{(n-|T|)!(|T|-1)!}{n!}
$$
2023年2月20日 星期一
測度論講義中的引理10.5.1的證明補充說明
書籍是測度論講義 (嚴加安著) 第三版。以下按照書中證明,只是難懂的部份加上補充以及錯誤的地方改正。
要證明的是
$$\sum_{T \subset F \subset A}(-1)^{|F|-|T|} \frac{1}{|F|}=\frac{(|A|-|T|)!(|T|-1)!}{|A|!}\ \ \ \ \ (10.5.2)$$
這裡假設 $E=\{1,2,...n\},A \subset E,A \neq \varnothing,T \subset A$。
2022年8月11日 星期四
Euler的絕招
2022年6月30日 星期四
兩個方法求冪次和公式
以$1^2+2^2+3^2+...+n^2$為例。更高次仿此可得。
方法一:牛頓差分法
首先我們需要一個數列,這個數列的每一項都是冪次和。 注意必須從零開始,因為我們要用的公式是差分版的麥克勞林級數:
假定數列是$F(0),F(1),F(2),...$
$$
\begin{multline*}
F(n)=F(0)+\Delta F(0)n+\frac{1}{2!}\Delta^2F(0)n(n-1)+\frac{1}{3!}\Delta^3F(0)n(n-1)(n-2) \\
+\cdots+\frac{1}{r!}\Delta^rF(0)n(n-1)(n-2)...(n-r+1)+\cdots
\end{multline*}
$$
2022年4月7日 星期四
Burnside 定理的證明
2022年1月12日 星期三
如何做 Haskell 的 η conversion,以 (.).(.)為例
2021年12月1日 星期三
國中生就會 y-combinator
2021年2月25日 星期四
2018年8月16日 星期四
如何記住切空間的公式
2017年4月7日 星期五
2017年1月19日 星期四
帶參數積分的微分
這式子要如何計算?
$$\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 \\
\therefore \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(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)!$,
之後套用積分中值公式就知道兩種餘項相等了。
2013年5月9日 星期四
抽象代數
按照慣例,還是沒有什麼中文書籍可參考。楊維哲的"簡單整數論"最後兩章就是在講抽象代數,除非是天才,不然對國中生來講可能是太難了一點。另外還有一本翻譯書抽象代數導論,正在拜讀,可惜還是有很多中文數學書的老問題,大量的排版錯誤和錯字,跟英文原版拿來一比,更是相去不可以道里計。雖然還是可讀的,不過最好是已經有一些基本概念之後再來讀這本,原因並不是因為這本太難(相反地,這本很簡單而且講的很詳細),而是因為排版和錯字很多,必須要有一定的基礎才能自己改正。最後是一本離散數學初步,裡面有一章講群與環,入門從這裡看是可以的。這本書雖然也是翻譯劉炯朗的離散數學,但是在翻譯書中算是品質相當好(可惜的是符號和圖表的印刷很醜,遠不如原版的美觀)。如果只讀中文書,先念這本的群與環再念抽象代數導論是一個辦法。
英文書很多,品質大概都比中文書好。
A Book of Abstract Algebra不錯,也很便宜。
2012年7月4日 星期三
一個有趣的行列式(determinant)問題
題目:
$$
\begin{Vmatrix}
(a - x)^2 & (a - y)^2 & (a - z)^2 \\
(b - x)^2 & (b - y)^2 & (b - z)^2 \\
(c - x)^2 & (c - y)^2 & (c - z)^2
\end{Vmatrix}
$$
作法:把定準中每個元素展開,例如把$(a-x)^2$展成$a^2 - 2ax + x^2$。因為每個元素都有三項,結構也都很類似,這就給我們一個靈感:根據每列作加法的拆解,可以把原定準拆成$3*3*3 = 27$個定準的和。因為每一列的元素都能拆成三項,共三列,所以是三的三次方。但是不用怕,因為這27個當中很多都是零。 如果任兩列取的是同一項(例如第一列取$a^2$,第二列取$b^2$),那麼定準為零。這麼一來就只剩下$3*2*1=6$個定準。
六個定準當中隨便取一個來看,發現都可以把它拆成
(a和b和c的乘積)*{Vandemode定準,變數為xyz}。觀察可以得到要如何得到這六個,有規則可循。既然我們知道Vandemode公式,那麼就只剩下如何拆那一大串a和b和c的多項式
$-a^2 b + a b^2 + a^2 c - b^2 c - a c^2 + b c^2$
看出這是一個三元的交錯式,肯定有$(a-b)(b-c)(c-a)$的因式,那麼跟原式只差正負號,觀察或代入可得剛好是正的
那麼答案就是$(a-b)(b-c)(c-a)(z-x)(z-y)(y-z)$
2010年10月21日 星期四
Mathematica研究:rookPolynomial
Plus @@ Flatten@
Apply[Times,
Flatten[list //. {a_ /; Union@Flatten@a == {1, x} :> a,
{{{a_, c_}}, b___} :> {b, {{1}}, {{x}}},
{a : {{x} ..}, b___} :> {b, a},
{{b_, d___}, c___} :> {c, {d},
Append[Select[{d},
Length[#] <
2 || (#[[1]] != b[[1]] && #[[2]] !=
b[[2]]) &], {x}]}}, {3}], {2}]
以上是mathematica的code。這演算法特別適合rule based的寫法,寫出來很簡潔。使用方法:
rookPolynomial[{{{1,1},{1,2},{1,3},{2,1},{2,2}}}],數字是格子座標,視為矩陣的index。
西洋棋中的城堡可直行橫行,在任意形狀的棋盤上放置數個城堡,如果這些城堡不互相攻擊,則每個城堡必須彼此不在同行同列上。rook polynomial就是每種排列法的生成函數,特別適合用來解決有限制的排列問題(或稱瓶頸指派問題)。例如八個人排成一列,甲不排1,3,5位,乙不排2,3,4位之類的,或是更複雜的問題(例如不規則的棋盤形狀),這種問題在高中時通常是用排容原理來計算,但是限制位數一多,或是棋盤形狀非常不規則,那排容原理會顯的非常繁雜,這時rook polynomial就可派上用場了。
值得注意的是,如果沒有禁止的位置,棋盤形狀是正方形,那是有公式可計算的。手動計算rook polynomial時,可以做行列交換換得一個更容易計算的棋盤,上面的程式就沒那麼聰明,不過基於電腦運算的快速,還是會比手算來得快上許多。詳細情況可以查找離散數學的教科書,或是wiki,上面的程式可以幫助你檢驗答案。實作時,如果禁位少,也可利用直接對禁位作rook polynomial,再利用排容原理計算。
2010年10月15日 星期五
Mathematica研究:常用的rule 和 functional program,以Quick Sort 為例
QuickSort[l_List] :=
l /. {x_, y__} :>
Join @@ QuickSort /@ {Select[{y}, # < x &], {x},
Select[{y}, # >= x &]}
/. :expr/.rules
applies a rule or list of rules in an attempt to transform each
subpart of an expression expr.
_ :_ or Blank[]
is a pattern object that can stand for any Mathematica expression.
x_ gives a name to _ as x
x:{pattern} gives a name to pattern as x
__ :__ (two _ characters) or BlankSequence[]
is a pattern object that can stand for any sequence of one or more
Mathematica expressions.
___ :___ (three _ characters) or BlankNullSequence[]
is a pattern object that can stand for any sequence of zero or more \
Mathematica expressions.
.. :p.. or Repeated[p]
is a pattern object which represents a sequence of one or more \
expressions, each matching p.
:> :lhs:>rhs or lhs:>rhs
represents a rule that transforms lhs to rhs, evaluating rhs only
after the rule is used.
@@ :Apply[f,expr]
or f@@expr replaces the head of expr by f.
/@ :Map[f,expr] or f/@expr
applies f to each element on the first level in expr.
& :Function[body]
or body& is a pure function. The formal parameters are # (or #1), #2, etc.
2010年6月8日 星期二
Google求職問題
{the first 10-digit prime in consecutive digits of e}.com
有興趣的人解出了第一題之後,進到那網頁,有第二個問題:
f(1)=7182818284
f(2)=8182845904
f(3)=8747135266
f(4)=7427466391
f(5)=?
解出f(5)之後,解答後加上.com可以連到另一個網頁,是google的求才資訊。這是很久以前的事了(所以算出來以後不用試著去連那網頁,早拿掉了),不過我想還是很多人沒聽過。有興趣可以算算。我自己用mathematica算出來的解答如下
1. 7427466391
2. 5966290435
程式碼如下
StringDigitsE = StringDrop[ToString[N[E, 200]], {2}]
Select[Table[
ToExpression[StringTake[StringDigitsE, {i, i + 9}]], {i,
190}], PrimeQ]
Select[Table[
ToExpression[StringTake[StringDigitsE, {i, i + 9}]], {i,
190}], (Total[IntegerDigits[#]] == 49) &]
說明:第一個問題很直接,都是程式技巧的問題。第二個問題需要一點創意思考,要點是每個F(n)的值的每個數位相加總合都是49。當然可以硬湊出答案,不過那不會是出題者的本意。