Mathematica: FourierTransform выражения в переменной? - PullRequest
0 голосов
/ 21 января 2012

Я пытаюсь понять, почему, если у меня есть выражение, сохраненное в переменной скажем sol, почему я не могу выполнять математические операции над ним, как в:

DSolve[{m y''[x] + 2b y'[x] + c y[x] == 0}, y[x], x];
sol = %[[1, 1, 2]];
sol[x_] = sol;
FourierTransform[sol[x], x, w]

не дает мне преобразование Фурье,но ошибка о том, что x защищена.Я пытался поместить sol непосредственно в FourierTransform, но это тоже не работает.

Это проблема с лексическим кодированием?т.е. переменная x должна явно указываться в аргументе FourierTransform?

Ответы [ 2 ]

2 голосов
/ 21 января 2012

Первая проблема заключается в том, что ваша первая строка содержит опечатку, которую я исправил.

Вторая проблема заключается в том, что вы пытаетесь назначить как фиксированное определение, так и определение функции для имениsol.

Ответ Насера ​​показывает, как очистить код, но не объясняет, почему у вас возникли проблемы с вашей версией.Проблема в третьей строке вашего примера, sol[x_] = sol;.Результат sol является правилом замены, как показано ниже:

{y[x] -> E^(((-b - Sqrt[b^2 - c*m])*x)/m)*C[1] + 
 E^(((-b + Sqrt[b^2 - c*m])*x)/m)*C[2]}

Это не имеет никакого смысла в определении функции sol[x_]:=..., и в любом случае, имея sol с обеих сторонпросто запутывает проблему.

Ответ Насера ​​дает вам то, что вам нужно, чтобы получить желаемый результат, но если у вас должна быть функция, сработает следующее.

mysol[2.] // InputForm
E^((2.*(-b - Sqrt[b^2 - c*m]))/m)*C[1] + 
 E^((2.*(-b + Sqrt[b^2 - c*m]))/m)*C[2]
2 голосов
/ 21 января 2012

Попробуйте, чтобы увидеть, поможет ли это.

ClearAll[m, y, x, c, b, w]
sol = First@DSolve[{m y''[x] + 2 b y'[x] + c y[x] == 0}, y[x], x]
FourierTransform[y[x] /. sol, x, w]

дает

Sqrt[2*Pi]*C[2]*DiracDelta[(I*b - I*Sqrt[b^2 - c*m] + m*w)/m] + 
Sqrt[2*Pi]*C[1]*DiracDelta[(I*b + I*Sqrt[b^2 - c*m] + m*w)/m]

, где C[1] и C[2] - постоянные интегрирования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...