2012年1月26日 星期四

MATLAB處理最小平方法

之前線代教了最小平方法的算法,用了$A^\mathrm{T}A\mathbf{\hat{x}}=A^\mathrm{T}\textbf{b}$
於是把這個方法丟給MATLAB算,馬上就跑出方程式的係數了
學以致用,很好XD
剛剛不小心找到了更簡單的方法...使用POLYFIT函數
p = polyfit(x,y,n)
##ReadMore##
其中x是所有點的x坐標,y是所有點的y坐標,n是插值多項式次數
輸出值p為一向量(其中的元素為多項式的係數以降冪排列)
其實這個函數本來是要計算多項式插值函數的,不過只要令n=1就是最小平方法了
如果要畫圖的話,再配合POLYVAL函數即可
POLYVAL函數的用法為polyval(p,x),其中p是多項式,x是要代入的數

兩個函數結合在一起就可以畫出最小平方法的圖了
例如:
x = [1 2 3 4 5];
y = [1 2.1 3.1 3.9 4.8];
p = polyfit(x,y,1);
xx = 0:.1:6;
yy = polyval(p,xx);
plot(x,y,'o',xx,yy);

心得:那我之前做結報那麼辛苦的用$A^\mathrm{T}A\mathbf{\hat{x}}=A^\mathrm{T}\textbf{b}$幹嘛OTZ

2012年1月25日 星期三

不動點定理

定理:設函數$f$是從$[0,1]$映到$[0,1]$,且$f\in C[0,1]$,則必存在一個$c\in [0,1]$使得\[f(c)=c\]
##ReadMore##
證明:令$g(x)=f(x)-x$,則\[\begin{align}g(0)&=f(0)\\ g(1)&=f(1)-1\end{align}\]
採用反證法,假設$g(0)g(1)>0$,則表示$f(0)f(1)>f(0)$,由於$0<f(0)\leq 1$,所以左右消去$f(0)$,得\[f(1)>1\]
顯然與命題不符,矛盾,得\[g(0)g(1)\leq 0\]
若$g(0)g(1)=0$,則表示$g(0)=0$或$g(1)=0$,也就是\[f(0)=0\text{ or }f(1)-1=0\]
命題成立
若$g(0)g(1)<0$,則根據中間值定理,存在$c\in [0,1]$使得$g(c)=0$,也就是\[f(c)-c=0\]
證畢

2012年1月6日 星期五

偉哉,行列式


這學期線代課印象最深刻的部分大概就是行列式吧
只需要三個看似基本的要求,就「唯一」決定行列式的運算規則,並且推導出許多有用的性質
1. $\text{det}(I)=1$
2. 兩列交換,行列式值變號
3. 行列式對第一列是線性的
就是這三條,實在是太酷了
想到以前高中學的行列式性質,其實都是從這三條導出來的,甚至連$\begin{vmatrix}a & b \\ c & d\end{vmatrix}=ad-bc$也可以導,明明在高中當作定義...

2011年12月8日 星期四

Bernoulli trial


丟m個硬幣,重複n次,每次正面x個
function bernoulli(m,n)
y = zeros(1,m+1);
for i = 1:n
    x = 0;
    for j = 1:m
        if (1==randi(2))
            x = x + 1;
        end
    end
    y(x+1) = y(x+1) + 1;
end
bar(y);

另外這個是亂做的,感覺沒啥意思

function test(n,m)
y = zeros(1,m);
for i = 1:n
    x = 0;
    for j = 1:m
        x = x + rand;
    end
    p = x/m;
    y(i) = p;
end
y = sort(y);
hist(y,100);

2011年11月15日 星期二

用矩陣旋轉圓錐曲線

以下是對於原點旋轉
令\[
A=\begin{bmatrix}x\\y\\1\end{bmatrix},
M=\begin{bmatrix}a&\frac{b}2&\frac{d}2\\\frac{b}2&c&\frac{e}2\\\frac{d}2&\frac{e}2&f\end{bmatrix}
\]圓錐曲線的一般式是\[
\Gamma:ax^2+bxy+cy^2+dx+ey+f=0
\]可改寫成\[
\Gamma:A^TMA=0
\]令逆時針旋轉$\theta$角的旋轉矩陣為\[
R_{\theta}=\begin{bmatrix}\cos{\theta}&-\sin{\theta}&0\\\sin{\theta}&\cos{\theta}&0\\0&0&1\end{bmatrix}
\]則旋轉過$\theta$角之後的圓錐曲線為\[
\Gamma':A^TR_{\theta}^TMR_{\theta}A=0
\]
##ReadMore##
以上我還沒證明,不過我的想法是
一般二維的坐標旋轉可以寫成這樣\[
\begin{bmatrix}x'\\y'\end{bmatrix}=\begin{bmatrix}\cos{\theta}&-\sin{\theta}\\\sin{\theta}&\cos{\theta}\end{bmatrix}\begin{bmatrix}x\\y\end{bmatrix}
\]改寫成齊次坐標的形式就變成這樣\[
\begin{bmatrix}x'\\y'\\1\end{bmatrix}=\begin{bmatrix}\cos{\theta}&-\sin{\theta}&0\\\sin{\theta}&\cos{\theta}&0\\0&0&1\end{bmatrix}\begin{bmatrix}x\\y\\1\end{bmatrix}
\]兩邊轉置得\[
\begin{bmatrix}x'&y'&1\end{bmatrix}=\begin{bmatrix}x&y&1\end{bmatrix}\begin{bmatrix}\cos{\theta}&\sin{\theta}&0\\-\sin{\theta}&\cos{\theta}&0\\0&0&1\end{bmatrix}
\]把原本的$A^TMA$的$A^T$和$A$都套一下旋轉矩陣就行了