Вопрос что называется философский, но я всё же надеюсь получить конкретные рекомендации.
Когда я пытаюсь что-то посчитать с помощью Wolfram Mathematica, но это почти всегда оканчивается зависанием процесса вычислений.
Иногда это удаётся обойти, ещё чаще приходится воспользоваться другими средствами (грубо говоря "сделать самому").
Что нужно сделать, чтобы это исправить? Может почитать что-то о том, как устроена Mathematica? Если так, то что вы порекомендуете?
Ниже приведён конкретный свежий пример, демонстрирующий то, что я говорю. Меня интересует в первую очередь не как его исправить, а что нужно исправить в себе как пользователе Wolfram Mathematica, чтобы не пытаться делать такого, что сделать нельзя. Но и рекомендации по конкретной ситуации тоже приветствуются.
Итак, что я хочу сделать? Я хочу посчитать свёртку "тусовки дельта-функций" с прямоугольной ступенькой единичной площади и изобразить график результата. В коде ниже все строчки до той, где определяется
points, просто формируют некий список чисел
, из которого затем получается функция
. В последней строке я пытаюсь посчитать свёртку этой функции с
и получаю зависание. И я не понимаю почему.
Код:
f0[x_] = Exp[-4 x^2]
f0S = Integrate[f0[x], {x, -Infinity, Infinity}]
f0N[x_] = f0[x]/f0S
Plot[f0N[x], {x, -1, 1}]
points = #[[1]] & /@ Select[{2 #[[1]] - 1, #[[2]]} & /@ RandomPoint[Rectangle[], 5000], #[[2]] < f0N[#[[1]]] &]
m[x_] = Total[DiracDelta[x - #] & /@ points]
n[y_] = Convolve[m[x], 10 (HeavisideTheta[x] - HeavisideTheta[x - 0.1]), x, y]