Abstract:
(最近一段時間看Lie代數,結合之前學過的泛函 、以及傅裡葉變換,突然對函數有一種特殊的了解。)
本文先提出函數
向量了解的觀點(用
元組的方式來表示),再帶入到其他理論中 中做一些闡述,最終以
傅裡葉變換為例實作其基本功能。(附上
python代碼以及相應
結果)
目錄
- 函數到向量
- 在其他理論中的了解
- 傅裡葉變換的實作
函數到向量
說起來函數,很多人都有相應的了解,例如
1、正比例函數
正比例函數
2、一次函數
一次函數
3、二次函數
二次函數
當然,後面還有相應的指數函數(
),對數函數(
),正弦函數(
)等等。
對于其
描述(我說的是描述,不是性質),可以有以下三個要素:
- 運算法則
- 定義域
- 值域
那和向量有什麼關系呢?
再說說
向量。
一般對向量了解:就是帶有
大小和方向的有向線段。
(2,3)
根據其相關性質,可以定義一個向量空間:域F上的一個模。
即,定義了加法和乘法 有一下8條成立(經過前人對大量事物的歸納總結得到)
- α+β=β+α,對任意α,β∈V.
- α+(β+γ)=(α+β)+γ,對任意α,β,γ∈V.
- 存在一個元素0∈V,對一切α∈V有α+0=α,元素0稱為V的零元.
- 對任一α∈V,都存在β∈V使α+β=0,β稱為α的負元素,記為-α.
- 對P中機關元1,有1α=α(α∈V).
- 對任意k,l∈P,α∈V有(kl)α=k(lα).
- 對任意k,l∈P,α∈V有(k+l)α=kα+lα.
- 對任意k∈P,α,β∈V有k(α+β)=kα+kβ,
對于這種抽象的定義,“向量”除了能夠表示一些實體量(力、速度)其實可以表示(不限于):
- 空間向量( 或 )
- 矩陣( )
- 多項式( )
- 函數(即本文重點)
先說說,函數怎麼樣被向量所
具體描述的?
從有限開始,定義一個函數
要知道,該函數是定義在定義域為
的函數空間中,如果定義域中多(少)一個數(
)抑或是換一個數(
)都不再是
原來的向量空間了。
那麼,上述函數用元組(序偶)來表示,可記為向量
在該空間的另一個函數
就可以寫作
定義域的
元素越多,則向量的
次元越大。
這樣,就很好了解無窮維向量:
譬如将定義域放在自然數({0}并上正整數)/整數/有理數上,就可以将上面的函數
記作(自然數下),
如果是整數的話,可以寫成
有理數(我隻寫非負有理數的吧)
由于實數不可列,隻能是說借助一個名額集
,對于該集合的
,假想那麼一個向量的位置,它是第
位的。
或者,若想将其“
列出來”,需要借助
極限的定義。将其在不可列的空間中商去一個
任意小的範圍,使之能夠“
近似”列舉出來。如封面的圖
是以,向量的次元取決與分割的粒度了。(如果也想要個無窮維的,可以将分割粒度設定為
兩個相鄰有理數間距的一半。)
帶入其他理論中的了解
(此處會涉及一些數學高年級課程的内容)
上一節主要說了關于函數向量化的了解,那麼這裡就将這種了解帶入一些理論中進行簡單地闡述。由于本人時間有限,也就挑幾個比較重要的内容去講述。
數學分析(微積分)數學分析主要講的是實函數上的内容,是以從較高的觀點上來看,有以下主要内容:
- 極限
- 微分(求導)
- 積分
- 多元部分
當然,對于非專業的,還會有微分方程。
1、
對于極限實際上就是上面說的,一種近似表示。這個近似展現在什麼地方呢?就是:
對于未知的事物能否用已知來代替,且使意外可以忽略。
這個代替,就是定義中,
中的
;而那個“意外可以忽略”,就是定義中一大坨的
。
這樣,也能了解所謂區間開閉要做什麼的吧(将的得不到的轉變成已擁有的)~
衆所周知,(以下加斜體字皆為
私貨,請
酌情閱讀)
吾生也有涯,而知也無涯 。以有涯随無涯,殆已!——《莊子.内篇.養生主其三》
相比于
莊子的想法,可以保身,可以全生,可以養親,可以盡年,的這種“向内求穩”想法(既然未知無窮,那就停止思考,看着眼前也能過得挺好),能夠看出
Weierstrass給出了一個“向外求穩”的方法(雖然未知無窮,但是讓我停止思考是不可能的,這輩子都不會不思考的!!!隻不過面對無窮,我隻會放棄思考那些等價于“有窮”的無窮罷了)。也可見中西方人文上的差異。當然對于想知道為什麼會這樣的人,可以上bilibili上看看(
北京大學)
吳國盛 所講的 《科學史》。2、
微分實際上,這就相當于,調取一個一維數組中的一個數與下一各數的差,進而轉變成一個
維的向量。(這也就可以解釋為啥一些微分的定理,都是說“
閉區間連續,開區間可導”的原因了吧,畢竟導完之後,閉區間就“
縮”了一小段了~)
同樣,也能看出,微分是對函數——這個向量一個子空間的“
線性表示”。(可以将高等代數中的
特征方程與數學分析中的
微分定義互相對比一下,你會有所發現的~)
于是乎,求導就是求特征方程的“
”。
不定積分就是求那個“
特征向量”。
3、
(定)積分積分呢,顧名思義,有了“積”(不是太美的那個ji),就能聯想到“内積”。對一個函數
做積分,就相當于将
一個向量與一個1向量做内積(1向量是向量上所有分量全部為1)。兩個函數相乘做積分,就是
兩個向量做内積啦~
進而,對于積分的一些性質,可以用高等代數中的正交空間來了解。(或者中積分)
對于級數來說,其實就是可以看做是離散化的積分。也是無窮維向量内積。不過,向量的角度也就隻能闡述一下數項級數。對于函數項級數,可以那
矩陣*向量來看待。
4、
多元部分西方人在了解自然時(科學),都有這麼一個習慣性思維:
先研究好最基本、最完美的事物,然後再用它來表示現實中複雜的東西。
對于多元函數也不例外。所謂n維空間的東西,就是将其看做n條直線(1維空間)來了解的。
陸藝:微分幾何随記(六)淺談外微分形式zhuanlan.zhihu.com
那麼相比于一階張量的向量來說,二進制函數不就再向外擴張一階——
矩陣嗎,以此類推擴張下去。
(對這方面了解僅限于定義,相關例題做的少,是以就不多說了。。。)
在說完數分後,後面的理論我就挑幾個重點來說了。
實變函數我個人對此了解比較多的是
可測函數部分,對于積分這塊也就會證明幾道例題,算不上了解,是以就說兩句關于可測的了解。
按可測定義來看,就是要外側度滿足Caratheodry(卡拉西奧多裡)條件
(
為任意集合,
則為可測集)
而可測函數,就是:函數像在任意區間上的原像全部為可測集。
因為實變函數畢竟要研究實數軸上的,是以說需要引用一個
名額集來表示向量的每一個分量
。
對于可測函數,就相當于,随便找一個實數
,從向量中找出那些分量大于
的位置
,并将其打成包,然後看這個包是否滿足可測定義。
即
measure_set
看該集合是否為可測集(python 文法)
在積分上,與黎曼積分的明顯
差異在于:黎曼積分用
把函數按段分到了向量的每個分量中;而lebesgue是按像來做劃分的(對此處了解不是很深刻,可能會有疑義)。
泛函分析在泛函分析中,就是在研究無窮維空間的東西了。在這個無窮維中,會有可數的
,或者不可數
,還有可以用“方向”來定義“大小”的(把前面那兩個p=2就行),也有不能的。
在一般向量空間中,所有的“函數”都隻是一般意義上的函數,沒有一個标準來衡量“函數”直接的差别。比如給你兩幅畫,如果都能用
個像素表示,那麼他們就都是
維向量,如何判斷它們倆之間的差别?
圖1,本人畫的,不存在侵權~~~
圖2
有句話說,公說公有理,婆說婆有理。
這個理,往往是一種度量。如果說,一個向量空間中,有了距離(它講道理了~)的概念,那麼,他就是
距離空間。如果這個空間有了“原點”(有準了),就是
賦範空間。如果Cauchy列收斂(靠譜了——就好比畫畫,畫了一堆線條,越畫越像就是
收斂)就成了
Banach空間。當然,如果該度量能夠通過
内積來衡量不同方向的函數(就好比各種各樣的畫派,像什麼印象派、抽象派,還有什麼黃派、徐派等等,通過一種衡量方式,可以進行跨派别的評審),那就是
内積空間。如果說,内積定義的範數Cauchy收斂(就是上述背景中,那種評審方式
很靠譜了),那就是Hilbert空間。Hilbert空間有很多完美性質。
還有一句古話講,無規矩不成方圓。
通過前面講述能夠發現,很多都是已經有的對象(向量),之是以有各種各樣的空間,是因為他們所遵循的規矩不一樣。
回到數學中來看:
對于Hilbert空間,根據表現定理,
上的泛函一定能寫成内積的形式,且泛函的範數等于該空間中的向量,那也就是說明:泛函可以看做成這個樣子
像分解定理、還有lax-milgram定理,就不多闡述了。
如果不是内積空間,則有可能
。
像泛函和算子,可以分别當做向量和矩陣。根據他們範數的定義不難發現,就是觀察泛函/算子作用在機關閉球上的最大值。在計算時,就可以看成找一個機關向量,看泛函(算子作用後的向量範數)結果最大值是有多大。
如果有界《--》連續《--》逐點連續。也就不難了解了。
傅裡葉變換的實作
實際上,在
函數——向量的了解下,傅裡葉變換就可以轉化稱為
矩陣右乘一個向量的形式了。那積分上下限的無窮怎麼了解呢?實際上,函數如果區間有窮的畫,那把剩下的部分全部置零延拓出去,或者剩下的部分當做一個“常數”(收斂),按這個常數在正規化(通過對f的整體變換,使常數部分為0)。
該程式用python編寫,需要numpy庫,
剩下不多說了,直接貼代碼了
import numpy as np
def vec_e(omega):#定義了内積向量
return np.array([np.cos(omega),np.sin(omega)]).T
def fourier(fun,x,t,):#指定頻域中頻率的傅裡葉變換
'''fun is a n-dim vectors
interval is 2-tuple show the end points of the interval
t is frequency'''
d = len(fun)
result = np.array(fun).dot(vec_e(-np.linspace(x[0],x[-1],d)*t ) )
return (result*(x[-1]-x[0]))/(2*d)
def Fourier(fun,x,img_x,p,appr=3):#一段頻率,這裡用str是為了将資料輸出到excel畫圖用。
return [ str(np.linalg.norm(np.around(fourier(fun,x,p*i),appr))) for i in range(img_x[0],img_x[1])]
完整的測試代碼:
import numpy as np
def vec_e(omega):#定義了内積向量
return np.array([np.cos(omega),np.sin(omega)]).T
def fourier(fun,x,t,):#指定頻域中頻率的傅裡葉變換
'''fun is a n-dim vectors
interval is 2-tuple show the end points of the interval
t is frequency'''
d = len(fun)
result = np.array(fun).dot(vec_e(-np.linspace(x[0],x[-1],d)*t ) )
return (result*(x[-1]-x[0]))/(2*d)
def Fourier(fun,x,img_x,p,appr=3):#一段頻率,這裡用str是為了将資料輸出到excel畫圖用。
return [ str(np.linalg.norm(np.around(fourier(fun,x,p*i),appr))) for i in range(img_x[0],img_x[1])]
if __name__=='__main__':
#測試的sinx+2*sin3.2x
x = np.linspace(-4*np.pi ,4*np.pi,10000)
y = np.sin(x)+2*np.sin(3.2*x)
r = Fourier(y,x,[0,5000],0.002)
with open('abc.csv','w') as file:
for i in range(len(r)):
file.write(str(i*0.002)+','+r[i]+'n')
結果,如圖
從圖中能夠看出,頻率在1,和3.2的位置有特别明顯的欺負,且波峰長度為1:2。
(關于x軸上為何這麼多起起伏伏呢?如果把f的定義域調大點,起伏就少了。不過,這應該是一些技術性的問題了。)
關于一些代數、幾何層面上的含義我并沒有說的很細,主要還是說了如何将函數用向量的角度去了解的東西。
畢竟學識有限,有問題之處不吝賜教~