使用任意線性無關函式基的函式逼近

2021-08-25 16:41:10 字數 2017 閱讀 6556

給定

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 在...