關於mathematica的問題 如何變數替換?

時間 2021-05-06 23:44:53

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到弄懂這一步,過去了三年,不禁感嘆如果當初沒有急功近利,慢慢學早就會推了吧。欲速則不達,見小利則大事不成。另外補充一句,...