gpt4 book ai didi

optimization - Mathematica 求幂并查找指定系数

转载 作者:行者123 更新时间:2023-12-03 17:10:53 25 4
gpt4 key购买 nike

我有以下代码,它完全按照我想要的方式执行,只是速度慢得离谱。我不会那么烦恼,除了当我“手动”处理代码时,即我将其分成几个部分并单独执行它们时,它几乎是瞬时的。

这是我的代码:

Coefficient[Product[Sum[x^(j*Prime[i]), {j, 0, Floor[q/Prime[i]]}], 
{i, 1, PrimePi[q]}], x, q]

为了清晰起见添加了图片:

enter image description here

我认为它正在尝试优化总和,但我不确定。有办法阻止吗?

此外,由于我所有的系数都是正数,并且我只想要第 x^q 个系数,有没有办法让 Mathematica 丢弃所有大于该系数的指数,而不与这些指数进行所有乘法?

最佳答案

我可能会误解您想要的内容,但是由于系数取决于 q,我假设您希望针对特定的 q 对其进行评估。由于我(像您一样)怀疑优化乘积和总和需要花费时间,因此我重写了它。你有类似的东西:

With[{q = 80}, Coefficient[\!\(
\*UnderoverscriptBox[\(\[Product]\), \(i = 1\), \(PrimePi[q]\)]\((
\*UnderoverscriptBox[\(\[Sum]\), \(j = 0\), \(\[LeftFloor]
\*FractionBox[\(q\), \(Prime[i]\)]\[RightFloor]\)]
\*SuperscriptBox[\(x\), \(j*Prime[i]\)])\)\), x, q]] // Timing
(*
-> {8.36181, 10003}
*)

我用纯粹的结构操作重写为

With[{q = 80},
Coefficient[Times @@
Table[Plus @@ Table[x^(j*Prime[i]), {j, 0, Floor[q/Prime[i]]}],
{i, 1, PrimePi[q]}], x, q]] // Timing
(*
-> {8.36357, 10003}
*)

(这只是构建一个术语列表,然后将它们相乘,因此不执行符号分析)。

建立多项式是瞬时的,但它有几千个项,所以可能发生的情况是 Coefficient 花费大量时间来确保它具有正确的系数。实际上,您可以通过展开多项式来解决这个问题。因此:

 With[{q = 80}, Coefficient[Expand[\!\(
\*UnderoverscriptBox[\(\[Product]\), \(i = 1\), \(PrimePi[q]\)]\((
\*UnderoverscriptBox[\(\[Sum]\), \(j = 0\), \(\[LeftFloor]
\*FractionBox[\(q\), \(Prime[i]\)]\[RightFloor]\)]
\*SuperscriptBox[\(x\), \(j*Prime[i]\)])\)\)], x, q]] // Timing
(*
-> {0.240862, 10003}
*)

它也适用于我的方法。

总而言之,只需将 Expand 粘贴在表达式前面和获取系数之前即可。

关于optimization - Mathematica 求幂并查找指定系数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6485636/

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