1樓:大灰熊
(發現偏題了……不過應該沒事)
去查了查,大概整理了一下這個回答。
是這樣的,mma裡面的變數替換是一種模式匹配的過程,就是它會去式子裡面尋找對應的結構然後整體替換。
現在的問題在於,它內部的內容和你實際上看到的內容不一樣,所以替換會失敗。
比如這樣:
x/(y*z) /. y*z -> w
不管加不加括號都會替換失敗。
可以使用FullForm檢查內部結構:
x/(y*z) // FullForm
Out[1]= Times[x,Power[y,-1],Power[z,-1]]
發現內部就沒有出現Times[y,z]這種結構,自然就會替換失敗。
解決方法1:
使用長得一模一樣的匹配模式來替換。
x/(y*z) /. 1/(y*z) -> w
解決方法2:
使用Simplify,直接化簡。
Simplify[x/(y z), w == y z]
Out[2]= x/w
解決方法3:
使用Eliminate,進行消元。
Eliminate[, ]
Out[3] = f == a^5 - 5 a^3 b + 5 a b^2
解決方法(推薦)4:
使用Unevaluated,禁止內部對原式進行重寫。
Unevaluated[(x + Log[y*z])/(y*z)] /. (y*z)-> w
Out[4] = (x + Log[w])/w
使用HoldPattern,保持被替換的式子的形式。
Unevaluated[(x + Log[(y*z)/2])/((y*z)/2)] /. HoldPattern[((y*z)/2)]-> w
Out[5] = (x + Log[w])/w
怎麼一看這是個三年前的問題,為什麼今天才出現在我的首頁上?但是逛了一圈知乎並沒有發現類似問題下有比較簡便的方法,那麼這篇回答還可以再完善一下。
2樓:高安
w1=(
Sqrt[g1
^2+4
k1]+g1
)/2;
qv1[
T0_]=H1
[T1]E
^(Iw1
T0);
rules=;
eq1=cD
[qv1[T0
],T0
];ReplaceRepeated
[eq1
,rules
]mathmatica替換時,常常失效。結果似乎沒有出現替換的跡象,請問怎麼解決呢?
真不好意思lz,借你的提問貼追加乙個問題。
3樓:
可以,ax+b==0/.
或者用 ReplaceAll 函式
4樓:四零七
可以這樣,
ax+b==0/.
為什麼Mathematica的DSolve函式會解不出顯式解??
不同的軟體演算法不同,可能這題正好對不上MMA的胃口 這題maple和matlab mupad 都能算出來,不過兩者解的形式很不相同 In 6 DSolve v t 3 v t 2 v t 2 v t 2 2 v t v t v t t Out 6 說明書裡面是這麼說的,DSolve include...
mathematica中畫圖函式的區分?
吉聆遠 具體的區別 withparadox2 已經說得很明晰了。但對於 3,當不好求出顯示解時,如 x 2 Sin y Cos x y,不好寫出以上兩種形式時便可以用ContourPlot ImplicitPlot淘汰掉 來繪製,例如 ContourPlot x 2 Sin y Cos x y,我來...
求問deep learning書中關於RNN反向傳播計算梯度的公式10 20和10 21?
lixing 10.21是錯的,在最新版的書中已經更正了。diag應該在W T和delta h t 1 L中間,大家參考一下這個資料,就會推了,大概可能要學習一兩天。我從接觸rnn到弄懂這一步,過去了三年,不禁感嘆如果當初沒有急功近利,慢慢學早就會推了吧。欲速則不達,見小利則大事不成。另外補充一句,...