NSolve 与根

NSolve vs Roots

我需要在 Mathematica 中计算以下表达式:

(1/((3 + E^(4 k))^8))
 2 (1 + E^(4 k))^2 k (729 + E^(24 k) + 210 k + 2 E^(20 k) (9 + 7 k) + 
4 E^(12 k) (135 + 49 k) + 6 E^(4 k) (243 + 61 k) + 
E^(16 k) (135 + 82 k) + E^(8 k) (1215 + 284 k)) == k

其中 E 是指数。在 Maple 中,使用 Roots(function(k)=k,k,numeric) 很简单,但在 Mathematica 中,运行.

花费的时间太长

你知道我怎么解k吗?答案应该是 0.2788....

我们需要事先找到近似解。

从图中我们可以看到有两个解 - 接近 0 和 0.2。

Plot[(1/((3 + E^(4 k))^8)) 
2 (1 + E^(4 k))^2 k (729 + E^(24 k) + 210 k + 
 2 E^(20 k) (9 + 7 k) + 4 E^(12 k) (135 + 49 k) + 
 6 E^(4 k) (243 + 61 k) + E^(16 k) (135 + 82 k) + 
 E^(8 k) (1215 + 284 k)) - k, {k, -1, 1}]

plot.png

您可以使用 FindRoot.

FindRoot[(1/((3 + E^(4 k))^8))
2 (1 + E^(4 k))^2 k (729 + E^(24 k) + 210 k + 
  2 E^(20 k) (9 + 7 k) + 4 E^(12 k) (135 + 49 k) + 
  6 E^(4 k) (243 + 61 k) + E^(16 k) (135 + 82 k) + 
  E^(8 k) (1215 + 284 k)) == k, {k, 0.2}]

其中 0.2 是我们的近似解。我们得到:

{k -> 0.278869}

您可以将计算限制为实数解。此解决方案耗时 0.1 秒。

Timing[
 NSolve[(1/((3 + E^(4 k))^8)) 2 (1 + E^(4 k))^2 k (729 + E^(24 k) + 
      210 k + 2 E^(20 k) (9 + 7 k) + 4 E^(12 k) (135 + 49 k) + 
      6 E^(4 k) (243 + 61 k) + E^(16 k) (135 + 82 k) + 
      E^(8 k) (1215 + 284 k)) == k, k, Reals]]

{0.109375, {{k -> 0.}, {k -> 0.278869}}}