使用Math.pow()函数

时间:2013-10-17 12:12:41

标签: java math

我正在尝试用Java编写一个程序来计算Ricker小波的公式:

enter image description here

但结果与实际结果不符。

这就是我正在使用的:

private static double rickerWavelet(double t, double f){

   double p = (Math.pow(Math.PI, 2))*(Math.pow(f, 2))*(Math.pow(t, 2));

   double lnRicker = 1 - (2 * p) * Math.exp(-p);

   return lnRicker;
}

我错误地使用数学函数吗?

3 个答案:

答案 0 :(得分:11)

要匹配公式,

double lnRicker = 1 - (2 * p) * Math.exp(-p);

需要

double lnRicker = (1 - (2 * p)) * Math.exp(-p);

由于*的运算符优先级高于-,因此在您的表达式中,(2 * p)Math.exp(-p)的乘法将首先完成,这不是您想要的。< / p>

答案 1 :(得分:3)

我只想补充一点,Math.pow(x, 2)可以更简单地编写(并且可能更准确,更有效)x * x ...用于任何变量或常量x

答案 2 :(得分:2)

如果您了解BODMAS方法,请查看您执行的等式:

你应该这样做:(1-(2*p))* Math.exp(-p);

我刚刚在1-2*p附近插入圆括号来改变你的等式。