Я мало что знаю о Mathematica, поэтому могу помочь вам (частично) только в части Matlab.
Выполнение свертки с функциями функций Matlab означает, что вы делаете это численно. Что вы подразумеваете под интегральным определением, так это то, что вы хотите сделать это символически. Для этого вам понадобится Matlab Symbolic Toolbox. По сути, это плагин Maple для Matlab. Так что вы хотите знать, как это работает в Maple.
Вы можете найти эту ссылку полезной (wikibooks) для ознакомления с MuPad в Matlab.
Я пытался реализовать вашу функцию box как функцию в Matlab как
t = sym('t')
f = (t > -1) + (t < 1) - 1
Однако это не работает, когда t является символьным типом Function 'gt' is not implemented for MuPAD symbolic objects
.
Вы можете объявить f
как кусочную функцию, см. (онлайн-справка по matlab) , это не сработало в моем Matlab. Все примеры имеют синтаксис Maple, поэтому они сразу же будут работать в Maple.
Чтобы обойти это, я использовал
t = sym('t')
s = sym('s')
f = @(t) heaviside(t + 1) - heaviside(t - 1)
К сожалению, это не удачно
I = int(f(s)*f(t-s),s, 0, t)
дает
Warning: Explicit integral could not be found.
и не дает явного результата. Вы все еще можете оценить это выражение, например,
>> subs(I, t, 1.5)
ans =
1/2
Но Matlab / MuPad не смогли дать вам и явного выражения в терминах t. Это не является неожиданным, поскольку функция f
является прерывистой. Это не так просто для символических вычислений.
Теперь я пойду и помогу компьютеру, к счастью, пример, который вы задали, очень прост. Свертка в вашем примере это просто int_0^t BoxFunction(s) * BoxFunction(t - s) ds
. Интегрант BoxFunction(s) * BoxFunction(t - s)
снова является блочной функцией, просто не той, которая идет от [-1,1], а на меньший интервал (который зависит от t). Тогда вам нужно только интегрировать функцию f(x)=1
за этот меньший интервал.
Некоторые из этих шагов сначала нужно выполнить вручную, а затем попытаться повторно ввести их в Matlab. Вам даже не нужна программа компьютерной алгебры, чтобы получить ответ.
Может быть, Matematica или Maple действительно могли бы решить эту проблему, помните, что MuPad, поставляемый с Matlab, является только урезанной версией Maple. Возможно, вышесказанное все еще может помочь вам, оно должно дать вам представление о том, как все работает вместе. Попробуйте добавить более приятную функцию для f, например полином, и вы должны заставить его работать.