2012-05-15 136 views
2

我有一個matlab m文件以便繪製一個積分如下。我想在mathematica中重寫這段代碼,但是我不知道subs()的任何等價函數!有任何身體幫助我嗎?在mathematica中matlab subs()的等價函數

syms x y w; 
fun = (-1/(4.*pi)).*log(x.^2+(y-w).^2); 
integral = int(fun, w); 
res_l = subs(integral, w, -0.5); 
res_u = subs(integral, w, 0.5); 
res = res_u - res_l; 
ezsurf(res, [-1,1]); 
+2

對於那些我們誰知道Mathematica但不是Matlab,你可以解釋什麼潛艇應該做什麼?它是下標格式嗎? –

+1

Subs是替代x,y和w等符號變量值的一種方法。以下是文檔http://www.mathworks.com/help/toolbox/symbolic/subs.html – kitchenette

回答

5

等效數學運算是使用ReplaceAll函數可如下寫實現。

Integrate[Sin[x], x] /. x -> 3 
(*Out: -Cos[3] *) 

如果您要更換幾個值,可以這樣實現:

Integrate[Sin[x], x] /. x -> # & /@ { 7, 5, 8, 11, 13} 
(* Out: {-Cos[7], -Cos[5], -Cos[8], -Cos[11], -Cos[13]} *) 

或由Mr.Wizard提出了更緊湊,更高效的方法:

Integrate[Sin[x], x] /. x -> {7, 5, 8, 11, 13} 
+0

+1,但您的第二個示例正在對列表中的每個值再次評估「集成」。另外,感謝'Cos'的'Listable'屬性,你可以這樣寫:'Integrate [Sin [x],x] /。 x - > {7,5,8,11,13}' –

+0

非常感謝您親愛的image_doctor您的解釋! – Roboticist

相關問題