2015年12月14日 星期一

2015年12月10日 星期四

[程式/Mathematica] 沒有row interchange的LU分解函數

首先... SyntaxHighlighter沒法高亮Mathematica的語法,所以下面只能以這種形式表示了


沒有row interchange的LU分解函數(LU Decomposition without row interchanging):

LUFactor[mat0_] :=
 Module[{m, n, i, j, k = 1, L, U = mat0},
  {m, n} = Dimensions[U];
  L = IdentityMatrix[m];
  For[j = 1, j < n + 1, j++,
   If[U[[k, j]] != 0,
    For[i = k + 1, i < m + 1, i++,
     L[[i, k]] = U[[i, j]]/U[[k, j]];
     U[[i]] = U[[i]] - U[[k]]*U[[i, j]]/U[[k, j]];
     ];
    k++
    ]
   ];
  Print["L=", L // MatrixForm];
  Print["U=", U // MatrixForm];
  Return[{L, U}];
  ]
將這個放在Mathematica的檔案中執行一次後就能呼叫這個函數,在裡面放入要分解的矩陣就可。Print那兩行是顯示L和U,不需要的話可刪除。如果想將這個函數的L和U指定到另外的變數中,可以寫成{a,b}=LUFactor[matrix],這樣L和U就會指定到a和b這兩個變量上。

事源是這樣的,Mathematica本身內置了一個叫LUDecomposition的函數,但它沒法選擇做不做row interchange,而筆者在溫習線性代數的課題時,在LU分解的練習中有些題目是要在不做row interchange的情況下解的,只好放棄。

然後想說其實筆者也會一點編程,應該查一下Mathematica的編程語法就會了吧,於是就邊查邊找別人寫的函數的例子,就編出上面的function了。

一開始只是寫了4x4的矩陣作試驗,然後擴建成nxn,再把參數改一改,令它能處理mxn,最後加一個If和改改參數變成能處理pivot的問題。

不過Mathematica的資料真難找,搜尋常常夾了一堆不相干的東西,像要找function的定義方法就找了很多數學function的相關東西出來,找programming就變mathematical programming,好麻煩。

2015年12月9日 星期三

[數學] ABCD共圓,AD與BC的延線交於圓外的一點E,BDM為直線,其中MT與圓ABCD相切。若EM//AC,證明MT=ME。

問題:



題解:




Joint $BT$ and $DT$.

Let $MT=a$, $ME=b$, $MD=r$ and $MB=s$

Our aim is to prove $a=b$.

Consider $\triangle BMT$ and $\triangle TMD$,

$\angle BMT= \angle TMB$   (commond $\angle$)

$\angle TBM= \angle DTM$   ($\angle$ in alt. segment)

Thus, $\triangle BMT \sim \triangle TMD$   (AA)

By corr. sides $\sim \triangle s$, we have,

$\begin{align*}
\frac{MT}{MD}&=\frac{MB}{MT}\\
\frac{a}{r}&=\frac{s}{a}\\
a&=\sqrt{rs}
\end{align*}$

Consider $\triangle BME$ and $\triangle EMD$,

$\angle BME= \angle EMD$   (commond $\angle$)

$\angle MBE= \angle A$   ($\angle s$ in the same segment)

$\angle A= \angle MED$   (alt. $\angle s$, $EM//AC$)

so, $\angle MBE= \angle MED$

Thus, $\triangle BME \sim \triangle EMD$   (AA)

By corr. sides $\sim \triangle s$, we have,

$\begin{align*}
\frac{ME}{MD}&=\frac{MB}{ME}\\
\frac{b}{r}&=\frac{s}{b}\\
b&=\sqrt{rs}=a
\end{align*}$

Therefore, $MT=ME$.

$Q.E.D.$

2015年12月7日 星期一

[數學] 邊長為a的正方形, 其中三角(逆時針, 從左上開始)至正方形一內點的距離分別為1, 2和3, 求邊長a和對應長度為1和2的線段夾角

問題:







解答:

Let $A:(0,0)$, $B:(0,a)$, $C:(a,a)$, $D:(a,0)$ be the corners of the square.

The equations of the circles centered at $A$, $B$ and $D$ with radii $2$, $1$ and $3$ respectively are

$x^2+y^2=4$ ------- $(1)$

$x^2+y^2-2ay+a^2=1$ ------- $(2)$

$x^2+y^2-2ax+a^2=9$ ------- $(3)$

The point $K:(m,n)$ in the square satisfies these equations simultaneously, where $m>0$ and $n>0$

From (1) and (2), (2) and (3), we have

$2an=a^2+3>0$

$2am=a^2-5>0$

Sum of their squares is

$(2ay)^2+(2ax)^2=4a^2(x^2+y^2)=16a^2$

Thus,

$(a^2+3)^2+(a^2-5)^2=16a^2$

$a^4-10a^2+17=0$

Using quadratic equation to solve $a^2$, which is the area of the square.

$Area=a^2$$\\=\frac{10 \pm \sqrt{10^2-4(17)}}{2}
\\=5 \pm 2 \sqrt{2}
\\=5 + 2 \sqrt{2}$

(Since $a^2>5$, reject $a^2=5-2 \sqrt{2}$)

Therefore $a= \sqrt{5 + 2 \sqrt{2}}$

Consider $\triangle ABK$, by cosine law, we have

$\begin{align*}
a^2&=1^2+2^2-2(1)(2) \cos \theta
\\\cos \theta &=-\frac{1}{\sqrt{2}}
\\\theta &=135 ^\circ
\end{align*}$





P.S. 這個順便測試在Mathb.in寫的東西直接複製過來怎麼,完全沒問題。在Mathb.in編輯簡單多了,寫了的東西可立即顯示,這邊預覽跑半天呢。

2015年12月1日 星期二

[電腦] Bluestack 自動下載遊戲 的解決方法

相信有用bluestack的各位應該有被這問題困擾吧?它為了經營而強迫用戶安裝那些apps以收取廣告費,而那些apps總是100Mb上下,很佔電腦資源。筆者搜尋各大中文網站後也沒找到一個簡單又合用的解決方法(一些只是直接推銷其他軟體)。不過在英文網站卻找到了(英文網絡的資源總是比較多呢),簡單,而且目前為止我的bluestack也沒再裝怪apps,事不宜遲,馬上開始:

1. 下載並安裝nova launcher
 >>載點<<

nova launcher是啟動android的首頁介面,用它的原因無它,因為所有問題都出在bluestack原來的介面 Gamepop-首頁,所以我們用一個更好的介面取代這個應用。

如果想美化首面,請找有關nova launcher的教學,自己搜尋,我沒需要所以沒弄。

2. 在設定→高級設置→應用程式 中停止並刪除bluestack自帶的apps。
例如 Google Play服務、Gamepop-首頁、Getjar... 總之你覺得沒用的,能刪都刪,不能刪就停用。

3. 重新啟動bluestack,它會問你用甚麼作為首面,你就選永久使用nova launcher。

4. 為防bluestack更新,請編輯登陸檔。
首先在"開始"找regedit.exe,開啟後登錄編輯程式就出來了,然後到
HKEY_LOCAL_MACHINE>SOFTWARE>BlueStacks>Updater
在ManifestURL這個檔上按右鍵,選修改,把原來的網址刪除。

這樣就大功告成了,目前筆者還沒看到bluestack亂裝apps。沒圖沒影片請見諒,因為我不想重做一次,各位請自行嘗試。