積分変換実体ストア
積分変換は, の形の積分によって,関数 を他の関数 にマップする数学操作である. は核として知られている.積分変換は,信号処理,医用画像,確率論を含む多くの分野で非常に重要である.ここでは,多くの重要な変換を含む実体ストアの構築について説明する.
実体ストアは,EntityStoreデータ構造にある積分変換の最も重要な特性を記録することで,手作業でコード化することができる.
In[1]:=
EntityStore[<|
"Types" -> <|
"IntegralTransform" -> <|
"Entities" -> <|
"ExponentialFourierTransform" -> <|
"Label" -> "exponential Fourier transform",
"StandardName" -> "ExponentialFourierTransform",
"StandardNotation" -> Hold[f[t]],
"Definition" -> Inactive[FourierTransform][f[t], t, z] \!\(\*
TagBox["==",
"InactiveToken",
BaseStyle->"Inactive",
SyntaxForm->"=="]\)
Inactive[Integrate][
E^(I t z) f[t], {t, -\[Infinity], \[Infinity]}]/Sqrt[
2 \[Pi]],
"GeneralProperties" -> <|
"Linearity" -> {Inactive[FourierTransform][
a f[t] + b g[t], t, z] \!\(\*
TagBox["==",
"InactiveToken",
BaseStyle->"Inactive",
SyntaxForm->"=="]\)
a Inactive[FourierTransform][f[t], t, z] +
b Inactive[FourierTransform][g[t], t, z],
Inactive[FourierTransform][f[t], t, z] \!\(\*
TagBox["==",
"InactiveToken",
BaseStyle->"Inactive",
SyntaxForm->"=="]\)
Inactive[FourierTransform][f[-t] UnitStep[t], t, -z] +
Inactive[FourierTransform][f[t] UnitStep[t], t, z]},
"Reflection" -> {Inactive[FourierTransform][f[-t], t,
z] \!\(\*
TagBox["==",
"InactiveToken",
BaseStyle->"Inactive",
SyntaxForm->"=="]\) Inactive[FourierTransform][f[t], t, -z]},
"Dilation" -> {ConditionalExpression[
Inactive[FourierTransform][f[a t], t, z] \!\(\*
TagBox["==",
"InactiveToken",
BaseStyle->"Inactive",
SyntaxForm->"=="]\) Inactive[FourierTransform][f[t], t, z/a]/Abs[a],
a \!\(\*
TagBox["\[Element]",
"InactiveToken",
BaseStyle->"Inactive",
SyntaxForm->"\[Element]"]\) Reals && a \!\(\*
TagBox["!=",
"InactiveToken",
BaseStyle->"Inactive",
SyntaxForm->"!="]\) 0]},
"Shifting or translation" -> {ConditionalExpression[
Inactive[FourierTransform][f[-a + t], t, z] \!\(\*
TagBox["==",
"InactiveToken",
BaseStyle->"Inactive",
SyntaxForm->"=="]\) E^(I a z) Inactive[FourierTransform][f[t], t, z],
a \!\(\*
TagBox["\[Element]",
"InactiveToken",
BaseStyle->"Inactive",
SyntaxForm->"\[Element]"]\) Reals]}|>|>|>|>|>|>]
Out[1]=
次のCloudObjectから,より完全なバージョンを取り出すことができる.
In[2]:=
itstore =
CloudGet[CloudObject[
"https://www.wolframcloud.com/objects/c21b356b-607a-406c-af91-\
5088f435fe99"]]
Out[2]=
このセッションのためにストアを登録する.
In[3]:=
PrependTo[$EntityStores, itstore];
ストアの実体を見る.
In[4]:=
EntityValue["IntegralTransform", "Entities"]
Out[4]=
新たな変換を加える.
In[5]:=
Entity["IntegralTransform", "HilbertTransform"]["Label"] =
"Hilbert transform";
Entity["IntegralTransform", "HilbertTransform"]["Definition"] =
Inactive[HilbertTransform][f[t], t, x] \!\(\*
TagBox["==",
"InactiveToken",
BaseStyle->"Inactive",
SyntaxForm->"=="]\)
1/\[Pi] Inactive[Integrate][f[t]/(
t - x), {t, -\[Infinity], \[Infinity]}, PrincipalValue -> True,
Assumptions -> x \!\(\*
TagBox["\[Element]",
"InactiveToken",
BaseStyle->"Inactive",
SyntaxForm->"\[Element]"]\) Reals];
積分変換のために現在使用可能な特性を返す.
In[6]:=
EntityValue["IntegralTransform", "Properties"]
Out[6]=
指数フーリエ(Fourier)変換とメリン(Mellin)変換の定義を取り出す.
In[7]:=
EntityValue[
Entity["IntegralTransform", "LaplaceTransform"], "Definition"]
Out[7]=
In[8]:=
EntityValue[
Entity["IntegralTransform", "MellinTransform"], "Definition"]
Out[8]=
対応する組込み関数が返した結果の式と比較する.
In[9]:=
Activate[EntityValue[Entity["IntegralTransform", "LaplaceTransform"],
"Definition"][[2]] /. f :> Function[t, ArcTan[t]]]
Out[9]=
In[10]:=
LaplaceTransform[ArcTan[t], t, z]
Out[10]=
Z変換のたたみ込み特性を表示する.
In[11]:=
Entity["IntegralTransform", "ZTransform"][
"GeneralProperties"]["Convolution"]
Out[11]=
指数フーリエ変換とメリン変換の現在保存されている特性を比較する.
完全なWolfram言語入力を表示する
Out[14]//TraditionalForm=