給定
f f
為定義在區間[-1,1]上的函式,其他定義在[a,b]上的函式可以通過簡單的平移和縮放轉變為該標準形式。給定一組基底 ei
' role="presentation">eie
i,期望能將函式
f f
在這一組基底上進行展開為f=
aiei
' role="presentation">f=a
ieif
=aie
i的形式。這裡我們用了愛因斯坦求和約定,即相同的指標會被求和,等價於f=
∑iai
eif =∑
iaie
i。一般來說,如果基底ei
e
i為正交基,即
,ej>=δi
j ,e
j>=δi
j,則展開可以直接寫為:
ej>=ai
,ej>=ai
δij=
ajej
>=ai
,ej>=ai
δij=
aj當eie
i不是正交基時,事情就不太一樣了,此時
,ej>
,ej>
不再為單位對角陣,而且乙個一般的矩陣。一般我們可以選用施密特正交化將這一組非正交的基底正交化,再進行投影。不過在這裡我們採用另一種辦法。
同樣地,我們有
ej>=ai
,ej>
ej>=ai
,ej>
此時aiai
需要通過求解線性方程組求出,即ai=
,ej>−1
ej>ai=,e
j>−1
ej>
其中我們用到了求逆操作,這要求矩陣
,ej>
,ej>
必須要是滿秩的。或者說eie
i必須是線性無關的。
下面給出乙個簡單的例子:
將函式e
x e
x在區間[-1,1]上展開,展開基底為[1,
x,x2
,x3 1,x
,x2,
x3]。注意,這裡基地並非正交基,也並非完備基,更不是歸一基。和以前基底的三要素:正交歸一完備乙個不沾。此時的展開為最小二乘展開,即在這幾個基底所張成的函式空間上進行投影。
code:
using quadgk
order=3;
e=base.mathconstants.e;
f=x->e^x;
basis=[x->x^n for n=0:order];
ij=[quadgk(x->i(x)*j(x),-1,1)[1] for i in basis,j in basis];
fj=[quadgk(x->i(x)*f(x),-1,1)[1] for i in basis];
coff=ij\fj輸出coff為 [0.996294, 0.997955, 0.536722, 0.176139]
將其擬合函式和原始函式繪製出來如下,可見擬合效果。
Matlab使用 orth函式 正交基
注意 a orth b a的列數是等於b的秩數,所以,當b缺秩時,a的列就與b的列數不相等了。如 a 1 0 1 1 2 0 0 1 1 r rank a r 3 q orth a q 0.1200 0.8097 0.5744 0.9018 0.1531 0.4042 0.4153 0.5665 0...
非線性啟用函式的使用原因
解釋一 如果是線性啟用函式 輸出y 是輸入x的線性組合,那麼無論神經網路有多少層,一直在做的只是計算線性啟用函式,所以不如直接去掉全部隱含層。線性隱含層一點用都沒有,因為兩個線性函式的組合本身就是線性組合。所以除非引入非線性,那麼無法計算更加有趣的函式,網路層數再多也不行。只有乙個地方可以使用線性啟...
python 函式語法 python函式的基本語法
函式 一次定義,多次呼叫,函式可以變相看成變數 函式的階段 1.定義階段 2呼叫階段 形參和實參 定義階段的引數叫形參,呼叫階段的引數叫實參 函式的幾種基本用法 多變數 def test name,age print 在下 s,今年 s,請問有何貴幹!name,age a test 趙日天 18 在...