2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Свертку двумерных функций в Wolfram Mathematica
Сообщение02.05.2022, 22:03 
Всем здравствуйте!

Пытаюсь свернуть в Математике две довольно сложные для вычисления двумерные функции:

Код:
g[y_, d_, a_] :=  InverseFourierTransform[1/(d*Sqrt[2*Pi])*Exp[-(x - a)^2/(2*d^2)], x,   y]
IFT[z_, t_, d_, a_] :=  Sum[FourierTransform[(g[y, d, a]*t)^m/(m!), y, z], {m, 1, 3}]
IFT[z, t, d, a]

Smax = 110;
K  = 100;
sigma = 0.4;
r  = 0.1;
CDFN[x_] := 1/Sqrt (2*Pi)*Integrate[Exp[-(y^2)/2], {y, -Infinity, x}]
CDFN[x];
d1 = (Log[Exp[z]/K] + (r + sigma^2/2) t)/(sigma*Sqrt[t]);
d2 = d1 - sigma*Sqrt[t];
CC[z_, t_] := Exp[z]*CDFN[d1] - K*Exp[-r*t]*CDFN[d2]
CC[z, t];


DiscreteConvolve[IFT[z, t, 0.2, 0.5], CC[z, t], {z, t}, {x, y}]


Математика считает, но очень уж долго.
Вообще желательно в
Код:
IFT[z_, t_, d_, a_] :=  Sum[FourierTransform[(g[y, d, a]*t)^m/(m!), y, z], {m, 1, 3}]

просчитать все до 7, а не до 3.

Может, пожалуйста, кто-то попробовать у себя запустить программу с суммой до 7 в отмеченной выше части? Ну или хотя бы до трех...

Или может быть кто-то сможет мне помочь с тем, как посчитать свертку по-другому? Я уже и так взяла дискретную в надежде на хоть какой-то ответ. Очень нужно построить затем график в Plot3D.

 
 
 
 Re: Свертку двумерных функций в Wolfram Mathematica
Сообщение03.05.2022, 16:20 
tobybot в сообщении #1553786 писал(а):
Очень нужно

Если что, я Математикой не пользуюсь, но судя по слову Fourier в вашем коде, вы наверняка воспользовались известным тождеством $F[f\ast g] = F[f]F[g]$. И всё равно не работает? Странно. Oт вида ф-ии не должно вроде зависеть.

 
 
 
 Re: Свертку двумерных функций в Wolfram Mathematica
Сообщение03.05.2022, 19:07 
Исправила ошибки в:

Код:
CDFN[x_] := 1/Sqrt[2*Pi]*Integrate[Exp[-(y^2)/2], {y, -Infinity, x}]
d1[S_, t_] = (Log[S/K] + (r + sigma^2/2) t)/(sigma*Sqrt[t]);
d2 [S_, t_] = d1 [S, t] - sigma*Sqrt[t];
CC[S_, t_] := S*CDFN[d1[S, t]] - K*Exp[-r*t]*CDFN[d2[S, t]];

 
 
 [ Сообщений: 3 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group