公告:本站正式转型为非交互式静态网站!
转型:本站将通过笔记和博客的形式继续为大家服务,关于 Mathematica 问答服务请移步至QQ群:365716997
联系:如有问题请联系QQ群管理员,或发送邮件至:lixuan.xyz@qq.com。
感谢:最后非常感谢大家多年来的支持与帮助!
参考《互联网跟帖评论服务管理规定》《中华人民共和国网络安全法》《网络信息内容生态治理规定》《互联网用户账号信息管理规定》

—— 2022-11-27

欢迎来到 Mathematica 问答社区

提问时请贴上文本代码

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

被禁止的话题:广告破解

请阅读:《提问的智慧》

备用域名:mma.ooo

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

社区建议QQ群:365716997

分类

+3 投票
2.6k 浏览

上次解决了根号了规则替换问题,那个看懂了,现在遇到加法乘法混合类的规则替换问题,代码如下:

a (a + b) + a^2 + a b + 1/(a (a + b)) + 1/(a^2 + a b) /. 
  a_^Rational[r_, 1] :> (FullSimplify@a)^Rational[r, 1] /. 
 a^2 + a b -> Expression1

我进行了如下尝试,可是还是达不到要求:

a (a + b) + a^2 + a b + 1/(a (a + b)) + 1/(a^2 + a b) /. 
 a (a + b) | a^2 + a b -> Expression1

分类:函数 | 用户: mma-2-2-2 (1.3k 分)
修改于 用户:mma-2-2-2

3 个回答

+3 投票
 
已采纳
a (a + b) + a^2 + a b + 1/(a (a + b)) + 
  1/(a^2 + a b) //. {a (a + b) :> Exp1, a^p_ (a + b)^p_ :> Exp1^p, 
  Plus[a^2, a b, q___] :> Plus[Exp1, q]}

如果不想用算术的那些函数估计你的问题一变,还得增加rule。因为这些rule都太特殊了,很多时候形式一变就不能用了,全都得看他fullform。

根据FullForm写的大概思路就是先查看这个表达式的FullForm,然后根据他的结构自己写建立相应的pattern,然后可以用MatchQ判断一下对不对。还要考虑最外面函数的Head和性质(比如说这里的plus就有orderless)。因为同类项合并之后前面会产生系数,原来的表达式中的单个字母什么的会被分开放入Times,取倒数也会被分开放入Power,这些都是要考虑的。

用户: happyfish (1.8k 分)
采纳于 用户:mma-2-2-2
我就是想掌握根据FullForm自己写规则的方法,求指点,给些入门链接学习资源
十分感谢你提供的方法,我自己也多想想,最好给出一些根据FullForm编写规则的资料链接一类的...
大概思路加到编辑里面了,资料什么的我也没啥啊,都是自己摸索着来的。
其实你可以去stack exchange 上问一下这种
万分感谢 我也自己多摸索多总结 向你们学习
+2 投票
Simplify[a (a + b) + a^2 + a b + 1/(a (a + b)) + 1/(a^2 + a b), 
 a^2 + a b == Expression1]
(*2 (1/Expression1 + Expression1)*)
用户: amita (481 分)
我想通过规则替换,这个只是简化过的问题,真正的那个问题还有一大坨公式,对整体用Simplify会改变希望的输出样式,总之想不用Simplify改变整体的输出样式的前提下替换
题主的意思应该是比如a (a+b)+a^2+a b+1/(a (a+b))+1/(a^2+a b)+c (c+sin[d]),替换后是2 (1/Expression1+Expression1)+c (c+sin[d]),而不是这种方法的c^2+2 (1/Expression1+Expression1)+c sin[d]
+2 投票

我想的是

a (a + b) + a^2 + a b + 1/(a (a + b)) + 1/(a^2 + a b) + 
  c (c + sin[d]) /. tt_?(Expand[tt] == a^2 + a b) :> Expression1

失败了,还请多多指教

用户: Lozmlve*永 (1.2k 分)
嗯 互相学习交流 这个我也不会的 学了好久也没掌握这个技巧
...