Dość prostą metodą byłoby wybranie podstawy w przestrzeni funkcji i przekształcenie transformacji całkowej w macierz. Następnie możesz po prostu odwrócić macierz.
Matematycznie oto, jak to działa: potrzebujesz zestawu ortonormalnych funkcji bazowych . (Można uciec bez nich są znormalizowane też, ale łatwiej jest wytłumaczyć w ten sposób.) Oznacza, że produkt ortonormalne wewnętrzna ⟨ T I , T j ⟩ = δ I j , gdzieT.ja( x )⟨ Tja, Tjot⟩ = ΔI j
⟨ Tja, Tjot⟩ ≡ ∫bzaW.( x ) Tja( x ) Tjot( x )d x= δI j(1)
Tutaj jest jakąś funkcją wagi. To i limity A i B są przywiązane do wyboru T í . Po wybraniu zestawu podstawowych funkcji, które chcesz użyć, możesz na stałe zakodować ograniczenia i funkcję wagi w swoim programie.W.( x )zabT.ja
Korzystając z ortonormalności, możesz wyrazić dowolną funkcję, taką jak i F ( y ) , jako liniowe kombinacje tych funkcji podstawowych:fa( x )fa( y)
fa( x )= ∑jadojaT.ja( x )fa( y)= ∑jotdojotT.jot( y)(2)
gdzie współczynniki są obliczane jako
dojadojot= ⟨ F, Tja⟩ = ∫bzaW.( x ) f( x ) Tja( x )d x= ⟨ F, Tjot⟩ = ∫bzaW.( y) F( y) Tjot( y)d y(3)(4)
Możesz sprawdzić, czy te wyrażenia są zgodne z definicjami współczynników, np. (2) i ortonormalność, równ. (1).
Teraz obliczyć transformację każdej z funkcji podstawowych; nazwijmy to .T.~ja( y)
T.~ja( y) ≡ ∫∞0yexp[ - 12)(y2)+ x2)) ] I0( x y) Tja( x)d x
jest funkcją, więc możesz wyrazić ją jako liniową kombinację funkcji podstawowych, tak jak to zrobiliśmy zf(x)iF(y):T.~ja(y)fa( x )fa(y)
T.~ja(y) = ∑kZAja kT.k(y)
gdzie elementy macierzy i K są określane w ten sam sposób okazało c I a C j powyżej:ZAja kdojadojot
ZAja k= ⟨ T~ja, Tk⟩ = ∫bzaW.(y) T~ja(y) Tk(y)d y(5)
W praktyce jest to dość obrzydliwa podwójna całka, ale musisz to zrobić tylko raz (zawsze) dla każdej kombinacji i k . Możesz wykonać całki numerycznie, a następnie na stałe zapisać wynikowe wartości w swoim programie. (Uwaga dodatkowa: Mądry wybór T i ( x ) i W ( x ) może sprawić, że całka może być wykonana symbolicznie. To, czy jest to możliwe, zależy od transformacji. Możesz to zrobić za pomocą Transformacja Fouriera, ale jestem skłonny sądzić, że transformacja, o którą tutaj pytasz, nie jest możliwa.)jakT.ja( x )W.( x )
Jeśli chodzi o elementy macierzy oraz współczynniki c i i C j , relacja między f ( x ) i F ( y ) sprowadza się do układu liniowegoZAja kdojadojotfa( x )fa(y)
∑jCjTj(y)F(y)=∫∞0yexp[−12(y2+x2)]I0(xy)∑iciTi(x)f(x)dx=∑ici∫∞0yexp[−12(y2+x2)]I0(xy)Ti(x)dx=∑ici∑kAikTk(y)
Biorąc pod uwagę ortogonalność funkcji bazowych, można wyodrębnić dowolny konkretny współczynnik , przyjmując iloczyn wewnętrzny obu stron za pomocą T ℓ :CℓTℓ
⟨(∑jCjTj),Tℓ⟩∫baW(y)∑jCjTj(y)Tℓ(y)dy∑jCj∫baW(y)Tj(y)Tℓ(y)dy∑jCjδjℓCℓ=⟨(∑ici∑kAikTk),Tℓ⟩=∫baW(y)∑ici∑jAikTk(y)Tℓ(y)dy=∑ici∑kAik∫baW(y)Tk(y)Tℓ(y)dy=∑ici∑kAikδkℓ=∑iciAiℓ
Oczywiście to tylko fikcyjny indeks, więc wrócę do nazywania go C j .ℓCj
To tylko problem algebry liniowej. jest składową wektora, jak to jest C I i i J są składnikami matrycy. Możesz obliczyć c i na podstawie funkcji, którą próbujesz przekształcić za pomocą eq. (3), a znasz A i j z jednorazowego obliczenia wykonanego dla tej konkretnej transformacji całkowej, równ. (5), aby uzyskać C js , wykonując mnożenie macierzy (w których komputery są bardzo dobre), a następnie zrekonstruuj funkcję F ( y ) z tych, które używają eq. (2).CjciAijciAijCjF(y)
I odwrotnie, aby wykonać odwrotną transformację, zaczynasz od funkcji , oblicz z niej C js za pomocą eq. (4), a następnie musisz rozwiązać układ liniowyF(y)Cj
Cj=∑iciAij
Można tego dokonać mnożąc obie strony przez odwrotność macierzy , ale w praktyce istnieją bardziej wydajne sposoby na to. Użyj solvera systemu liniowego dowolnej biblioteki algebry liniowej, którą masz pod ręką.A
ij1NNf(x)T1(x),…,TN(x)1MF(y)T1(y),…,TM(y)M=NMNNciAM×NA11ANM
[−1,1]TiW(x)=11−x2√a=−1b=1⟨Ti,Tj⟩=δijπ/2i=j≠0⟨T0,T0⟩=π