求解一个方程组,结果始终无法化到最简形式,请问该怎么办
mathematica吧
全部回复
仅看楼主
level 7
如题,我想求两个未知数x和y组成的方程组的解,就输入了如下命令:
FullSimplify[
Solve[{(1 - t) b x^a y^(b - 1) == p2, (1 - t) a x^(a - 1) y^b ==
p1}, {x, y}], {0 < t < 1, 0 < a < 1, 0 < b < 1, p1 > 0, p2 > 0}]
然后mathematica输出结果是:
{{x -> E^((-b Log[b p1] + b Log[a p2] + Log[p1/(a - a t)])/(-1 + a +
b)), y -> E^((
a Log[b p1] - a Log[a p2] + Log[p2/(b - b t)])/(-1 + a + b))}}
这个显然不是最简的结果,在已经给定的参数范围内,完全是可以把log符号消去的。但是我试了很多次(simplify,fullsimplify,refine命令都试过)发现就是无法化到最简,始终都是上面这个很笨拙的表达式。
请问有高手知道怎样才能消去对数和指数符号把结果化到最简么?求指教啊!
最后附上截图:
2020年06月08日 05点06分 1
level 3
可以用ComplexityFunction选项,具体可以参考一下文档
2020年06月08日 06点06分 2
谢谢!我试试 看你写的命令有点复杂阿
2020年06月08日 07点06分
@云淡风轻_2024 文档里有一个示例,我只是改了一下
2020年06月08日 08点06分
我在mma自带的帮助里看到了 但是看不懂complexityfunction里的这一长串命令是啥意思[黑线]
2020年06月09日 00点06分
@云淡风轻_2024 这里只是把文档里的复杂函数写成了纯函数。如果你明白了ComplexityFunction选项的用法,再看一下Function函数的文档就知道上面写的代码的含义了
2020年06月09日 02点06分
level 7
@zjnone
您好!还想请教你一下 下面这个表达式改怎么化简:
FullSimplify[((p1/(a (1 - t1)))^(a/(-1 + a + b)) (p2/((1 - t1) b))^((
1 - a)/(-1 + a + b)))^
b ((p1/(a (1 - t1)))^(-1 + a/(-1 + a + b)) (p2/((1 - t1) b))^(
b/(-1 + a + b)))^a, {0 < t1 < 1, 0 < a < 1, 0 < b < 1, p1 > 0,
p2 > 0}]
我输入上面的命令后发现mathematica竟然原封不动的把上式给输出了。。感觉mma在化简指数表达式方面是短板
附上截图
2020年06月09日 00点06分 3
2020年06月09日 00点06分
level 3
额我只能说FullSimplify不是万金油,有时候你得尝试一下其他变换才能得到满意的效果
比如你下面这个,可以先PowerExpand再FullSimplify
我其实对mma的表达式化简也没有太多了解,只能说如果结果不太满意的话多试试各种变换的组合吧
2020年06月09日 03点06分 4
谢谢!我用assuming命令尝试化简了几个含有指数的表达式,感觉不是很可靠,有些表达式MMA化简出错了,自带的帮助里也说这个命令输出结果容易出错?
2020年06月09日 23点06分
化简的时候MMA对底数的正负情况不敏感,然后结果就错了
2020年06月09日 23点06分
1