公告:1)网站程序升级:Q2A升级到1.8.6,Wordpress升级到5.7.2
2)修复了头像加载慢与提交问题反应慢等问题
2021-06-16

欢迎来到 Mathematica 问答社区

提问时请贴上文本代码

语法高亮:在编辑器中点击

被禁止的话题:广告破解

请阅读:《提问的智慧》

备用域名:mma.ooo

支持LaTex数学公式
行内公式标识符:\$ 或“$\backslash ($”+“$\backslash )$”,
行间公式标识符:\$\$ 或 “$\backslash [$”+“$\backslash ]$”

社区建议QQ群:365716997

分类

+2 投票
2.6k 浏览

我想用Mathematica推导公式,过程中,用复杂表达式去代替单一变量可以做到,但有时,也需要用一个变量对公式中的表达式进行化简,Mathematica有办法做到吗?

代码如下:

Zs = RL + \[Omega]*Ls*I + 1/(\[Omega]*Cs*I)
Zr = \[Omega]^2 * M^2 / Zs
Zp = Zr + \[Omega]*Lp*I + 1/(\[Omega]*Cp*I)
Gv = \[Omega]*M*RL*I/(Zp*Zs)
Gv = Simplify[Gv]
Gv1 = Gv /. {\[Omega] -> \[Omega]n*1/Sqrt[Ls*Lp]}
Replace[Gv1, \[Omega]n/Sqrt[Ls*Lp] -> \[Omega]]

结果如下:

用户: Jalon (26 分)
修改于 用户:Jalon
至少贴出mathematica的代码吧?
好的,这回贴了,多谢!

2 个回答

+1 投票
 
已采纳

你的问题,基本无解。

规则替换,是很严格的匹配,但是这个严格不是按照人眼瞅着的结果,是mma表达式意义上的严格。

看下面这个代码领悟一下。

a b/(c + d) // FullForm
 b/(c + d) // FullForm

人眼瞅上去,似乎可以理解成a乘以b/(c + d),两者完全分离。但是对于mma来说,a b/(c + d)和b/(c + d)的结构完全不一样。所以ReplaceAll认为a b/(c + d)压根就不包含 b/(c + d)。

Times[a,b,Power[Plus[c,d],-1]]里当然不包含Times[b,Power[Plus[c,d],-1]]。

所以问题基本无解。

用户: 苹果 (2.2k 分)
采纳于 用户:Jalon
已经放弃了,多谢你的解释!
+1 投票

直接倒过来写当然是成不了,但是适当地改写规则的话还是能得到相似的结果的……:

Gv1 /. (Ls Lp)^n_ :> (ωn/ω)^(2 n)

用户: xzczd (2.2k 分)
...