2017-04-27 92 views
0

我有一個簡單的Mathematica代碼,下面我首先介紹一個標量函數ϕ = ϕ[x,y,z],然後計算ϕ的梯度。現在,我想通過用適當的值代替x, y, z來評估點P處的梯度。請用最後一步幫助我,將xy的值插入漸變。請參見下面的代碼:如何用Mathematica中的值代替矢量來估計矢量

ϕ = y^2 + z^2 - 4; 
varlist = {x, y, z} 
Delϕ = Table[D[ϕ, varlist[[i]]], {j, 1, 1}, {i, 1, 3}] 
Delϕ // MatrixForm 
P = {2, 1, Sqrt (3)} 

感謝

回答

1

假設你的意思y^2 + z^2 - 4 x

φ = y^2 + z^2 - 4 x; 
varlist = {x, y, z}; 
g = D[φ, #] & /@ varlist 

{-4,2 Y,2 Z}

p = {2, 1, Sqrt[3]}; 
grad = g /. Thread[varlist -> p] 

{-4,2,2的Sqrt [3]}

+0

謝謝!這提供了正確的答案!你介意解釋Thread [varlist - > p]是如何得到正確結果的嗎? – PatStarks

+0

@PatStarks這不是劃分,它是ReplaceAll,即https://reference.wolfram.com/language/ref/ReplaceAll.html –

1

另一種方法是使你的衍生功能:

\[Phi] = y^2 + z^2 - 4 x; 
varlist = {x, y, z}; 
Del\[Phi][{x_, y_, z_}] = Table[D[\[Phi], varlist[[i]]], {i, 1, 3}]; 

,那麼你可以簡單地這樣做:

P = {2, 1, Sqrt[3]}; 
Del\[Phi][P] 

{-4,2,2 Sqrt [3]}