gpt4 book ai didi

Mathematica 不计算具有实系数的复数的绝对值

转载 作者:行者123 更新时间:2023-12-04 17:11:52 26 4
gpt4 key购买 nike

使用代码 FullSimplify[Abs[q + I*w], Element[{q, w}, Reals]]结果是

Abs[q + I w]

并不是
Sqrt[q^2 + w^2]

我错过了什么?

附言 Assuming[{q \[Element] Reals, w \[Element] Reals},
Abs[q + I*w]]
也不起作用。
注: Simplify[Abs[w]^2, Element[{q, w}, Reals]]Simplify[Abs[I*q]^2, Element[{q, w}, Reals]]工作。

最佳答案

问题是你认为“简单”的东西和 MMA 认为简单的东西是两件不同的事情。看看ComplexityFunction表示 MMA 主要查看“LeafCount”。应用 LeafCount 给出:

In[3]:= Abs[q + I w] // LeafCount
Out[3]= 8

In[4]:= Sqrt[q^2 + w^2] // LeafCount
Out[4]= 11

因此,MMA 考虑 Abs形式更好。 (可以使用 TreeForm 或 FullForm 直观地探索简单性)。我们需要做的是告诉MMA将MMA视为更昂贵的。为此,我们以 ComplexityFunction 中的示例为例。和写:
In[7]:= f[e_] := 100 Count[e, _Abs, {0, Infinity}] + LeafCount[e]
FullSimplify[Abs[q + I w], Element[{q, w}, Reals],
ComplexityFunction -> f]

Out[8]= Sqrt[q^2 + w^2]

按照要求。基本上,我们通过 f[e] 告诉 MMA表示形式 Abs 的所有部分的计数应该算作100片叶子。

编辑:正如 Brett 所提到的,您也可以使其更通用,并使用 _Complex作为寻找的规则:
In[20]:= f[e_] := 100 Count[e, _Complex, {0, Infinity}] + LeafCount[e]
FullSimplify[Abs[q + I w], Element[{q, w}, Reals],
ComplexityFunction -> f]

Out[21]= Sqrt[q^2 + w^2]

关于Mathematica 不计算具有实系数的复数的绝对值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9605214/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com