如何在java中评估e^(-x)^2?
Posted
技术标签:
【中文标题】如何在java中评估e^(-x)^2?【英文标题】:How to evaluate e^(-x)^2 in java?如何在java中评估e^(-x)^2? 【发布时间】:2017-04-06 19:42:02 【问题描述】:在 Allen B. Downey 的“Think Java”中,我被困在问题 7.6 上。该问题要求在不使用阶乘或指数函数的情况下评估 e^(-x)^2
。我得到的代码适用于 x = 2,但不适用于其他数字。
public static double gauss2(double x, double n)
double i = 2;
double count = n;
double num = 1;
while (i <= n)
num = ((x*x)/(i - 1))*num;
i = i + 1;
if (n == 1)
return 1;
else if (n%2 == 0)
return num*(-1) + gauss2(x,n-1);
else
return num + gauss2(x, n-1);
【问题讨论】:
“不工作”是什么意思? 首先要注意的是(-x)^2 == x*x
【参考方案1】:
The Maclaurin series for ex 很有用。它去:
ex = Σn = 0 to ∞ (xn/n!)
所以,获得近似结果的一些简单代码是:
public final class Exponential
private static final int ITERATIONS = 32;
public static final double exp(final double x)
double power = 1.0;
double factorial = 1.0;
double result = 1.0;
for (int n = 1; n <= ITERATIONS; n++)
power *= x;
factorial *= n;
result += power/factorial;
return result;
public static final void main(String[] args)
System.out.println("Testing Math.exp against Exponential.exp for a few inputs");
for (double exponent = -5.0; exponent <= 5.0; exponent += 0.1)
System.out.printf("e^%f = %f = %f\n", exponent, Math.exp(exponent), exp(exponent));
然后您可以使用exp((-x)*(-x))
。
【讨论】:
以上是关于如何在java中评估e^(-x)^2?的主要内容,如果未能解决你的问题,请参考以下文章
如何在chrome headless + puppeteer评估()中使用xpath?