目錄

20200718 想法源起 20200719 我們在做什麼(一) 20200722 我們在做什麼(二) 20200725 竟然成為數學家(一) 20200729 竟然成為數學家(二) 20200801 竟然成為數學家(三) 20200805 不同職級(一) 20200808 不同職級(二) 20200812 趕客系列(一)為什麼讀大學? 20200815 趕客系列(二)不同大學學位跟工作的關係 20200819 趕客系列(三)大學的目的 20200822 趕客系列(四)大學為什麼要有主修 20200826 趕客系列(五)要挑選一個什麼樣的主修 20200829 沒有無緣無故的恨(一) 20200831 科普系列 - 數學與電影動畫製作(一) 20200902 沒有無緣無故的恨(二) 20200905 沒有無緣無故的恨(三) 20200907 科普系列 - 數學與電影動畫製作(二) 20200909 終身職位的評核 20200912 學術界吸引人的地方 20200914 科普系列 - 數學與電影動畫製作 (三) 20200916 學術界辛苦的地方(一) 20200919 學術界辛苦的地方(二) 20200921 科普系列 - 數學與電影動畫製作 (四) 20200923 大學的讀書成績有多重要 20200926 本科生研究機會 20200928 科普系列 - 數學與圖像修復(一) 20200930 用創新的方法去教育科學 20201003 參加研討會的重要 20201005 科普系列 - 數學與圖像修復(二) 20201007 教授與教學 20201010 研究是什麼(一) 20201012 科普系列 - 數學與圖像修復(三) 20201014 研究是什麼(二) 20201017 研究是什麼(三) 20201019 科普系列 - 數學與圖像修復(四) 20201021 如何閱讀研究論文 20201024 研究生應該修什麼課 20201026 科普系列 - 數學與圖像修復(五) 20201029 本科生的多主修多副修 20201102 科普系列 - 數學與數獨(一) 20201105 幾位教授(一) 20201109 科普系列 - 數學與數獨(二) 20201112 幾位教授(二) 20201116 科普系列 - 數學與數獨(三) 20201119 幾位教授(三) 20

計算數學入門系列 - 距離函數(二)

 


而這個圓形的其中一個隱性表示方式,可以首先構造函數\(f(x,y)=x^2+y^2-1\),然後找出這個函數等於零的地方。可以得到f(x,y)=0,就是說 \(x^2+y^2-1=0\),所以 \(x^2+y^2=1\),然後就找到了在圓形上面所有點所需要符合的數學方程式。

Figure4."circle4.jpg". An implicit representation of a unit circle.

x=[-1.1:0.01:1.1];
[x,y]=meshgrid(x,x);
f=x.^2+y.^2-1;
contour(x,y,f,50); axis equal; axis([-1.1 1.1 -1.1 1.1])
colormap('jet')
hold on
contour(x,y,f,[0 0],'k')
print -djpeg circle4.jpg

雖然說是一個隱性的表示方式,但是MATLAB裏面指令contour 還是可以把函數f 等如0 的地方找出來。我們是需要在第四個輸入指出所需要繪畫的水平線就可以了。 在這幅「等高線」contour的圖上面,我們可以看到這些代表着函數值的不同線相距並不相等。比較接近圓心的, 函數比較平,代表着他的斜率相對比較少。越往外圍走, 線與線之間的距離越密,代表着他的斜率相對比較大,函數的值越升越快。

前面提到,上面這個函數f只是其中一個隱性的表示方式。 如果我們希望函數的斜率 在不同的地方不會有太大的改變,我們可以在設計這個函數的時候希望他的斜率可以被控制,比如說我們希望「斜率的值等於1」。這裏要再仔細定義「斜率」。在一般微積分裏面,我們知道斜率就是一個函數的導數。可是我們現在看見的函數並不只有一個變量,所以這裏所講的斜率,其實是函數f梯度 (Gradient) 的長度,數學上來說就是 \( |\ \nabla f| \)。 用圓形作為例子,我們可以選取 \(g\left(x,y\right)=\sqrt{x^2+y^2}-1\)。同學們如果有修讀過多元微積分,可以計算一下這個函數g梯度的長度。


Figure 5. “circle5.jpg”. An implicit representation of a unit circle using the signed distance function.

g=sqrt(x.^2+y.^2)-1;
contour(x,y,g,50); axis equal; axis([-1.1 1.1 -1.1 1.1])
hold on
contour(x,y,g,[0 0],'k')
colormap('jet')
print -djpeg circle5.jpg

我們可以看見Figure 5 等高線的距離都是一樣,這個就是由於我們限制了函數g梯度的長度。 由於\(|\ \nabla g|=1\),函數g 的數值代表了他離開g=0 這個水平線的距離。而且,因為在半徑唯一的圓形以外的數值都是負數,外面的都是正數,這個函數g 我們就叫做距離函數 Signed Distance Function。

留言