有什么办法让Simplify不用sinh,cosh,cot之类的函数
mathematica吧
全部回复
仅看楼主
level 5
KeyTo9 楼主
Integrate[E^(-x), {x, 0, t}]
输出 1 - Cosh[t] + Sinh[t]
FullSimplify后没变,事实上这个式子最简结果1-E^(-t)
有时一些计算结果居然用cot之类的古书里才出现的函数表示了,现在我不用啊
F1过了,说Simplify是可以限定只用某些函数,可是要我全列出来我想用的函数办不到,有无禁止使用指定函数的办法?
有条路或许可以,用LeafCount把那些讨厌的函数复杂度调高,太麻烦 有无更好办法?版本11
2020年06月25日 09点06分 1
level 5
KeyTo9 楼主
TrigToExp 会误伤sin,cos, tan,在我的项目里不适合
2020年06月26日 15点06分 6
level 5
KeyTo9 楼主
(*不准用双曲函数 用2楼asdasd1dsadsa的方法 *)
killsinh[exp_]:=exp/.{Sinh[x_]->(E^(x)-E^(-x))/2,Cosh[x_]->(E^(x)+E^(-x))/2,ArcSinh[x_]->Log[x+Sqrt[1+x^2]]}
si2[exp_]:=Simplify[killsinh@exp,ComplexityFunction->(If[FreeQ[Cosh|Sinh|Tanh|Cot|Sec]@
#,LeafCount@#
,10000]&)];
测试例子
FullForm@si2[Sin[t]/(1 - Cos[t])]
结果是Times[-1, Power[Plus[-1, Cos[t]], -1], Sin[t]]
在前面多了个负号,实质上复杂度更大了,
这只是小小式子的问题,如果式子更复杂, 说不定会有其他BUG[阴险]
2020年07月05日 03点07分 7
这应该是LeafCount的问题
2020年07月05日 12点07分
1