2012-01-21 62 views
-1

我想知道爲什麼,如果我有一個變量下保存一個表達式說溶膠,爲什麼我不能做它的數學運算,如:Mathematica:FourierTransform中的變量表達式?

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

+0

有這個問題,只是太多的打字錯誤。我知道你可能不是母語的人,我理解這可能是什麼(我不想用我自己的第二語言在這裏提問和回答問題)。但是花時間仔細檢查你的語法和拼寫是有幫助的。你遇到的問題可能是一個簡單的錯字。 – Verbeia

回答

2

試試這個,看看是否有幫助。

ClearAll[m, y, x, c, b, w] 
sol = [email protected][{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]是積分常數。

+0

謝謝,我想這樣: 1.評估FourierTransform的參數 2.更改y [x]的規則溶膠 3.繼續評估 – AimForClarity

2

的第一個問題是,你的第一行有它一個錯字,我已經固定。

的第二個問題是,您要指派兩個固定的定義和功能定義名稱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只是混淆的問題。

納賽爾的答案給你你需要什麼,以獲得所需的輸出,但如果你必須有一個功能,下面的工作。

sol = DSolve[{m y''[x] + 2 b y'[x] + c y[x] == 0}, y[x], x][[1]]; 
mysol[x_] := Evaluate[y[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] 
+0

謝謝!這工作。順便說一下,爲什麼你需要Mysol定義中的Evaluate,它似乎沒有它的工作。只是爲了確保替換髮生在任何可能持有並調用mysol的函數內? – AimForClarity

+0

如果沒有它(我沒有廣泛檢查),它可能會工作得很好,但我把它放在那裏,因爲你真正想要的是替換規則的右側(' - >'後面的位)而不是' y [x] - >'位。在某些情況下,'/ .'不夠,還需要'Evaluate'。在一個'Plot []'函數中。 – Verbeia

+0

是的,我注意到你需要評估內部情節,如在使用表格: 情節[評估@表[BesselJ [n,x],{n,3}],{x,0,15}] 你知道嗎你爲什麼需要它?我很好奇!謝謝 :) – AimForClarity