∑{y*(1+x) –n } = 100;
公式显示的有问题,-n 不是减n 是-n次方;
也就是 (1+x)的-n次方乘y 求和等于100;
已知y 和 n 求x;
其中y 和 n的值一一对应,y和n包含的值如下:
y {11,12,13,14,15}
n {28,30,31,32,28};
求x。
我用递归方式折中算法的方式可以算出来,但需要指定范围,范围太大的话会堆栈溢出。
求其他办法,谢谢!

解决方案 »

  1.   


    设计代码:
    public double goCal(double result,double[] y,double[] n) {

    double up=0,down=0;
    for(int i=0;i<y.length;i++)
    {
    up+=Math.log10(y[i]);
    }
    up-=Math.log10(result);
    for(int i=0;i<n.length;i++)
    {
    down+=n[i];
    }
    return Math.pow(10,up/down)-1;
    }
      

  2.   

    3楼。。你确定第三行可以这样取log?
      

  3.   

    其实整个方程化出来就是这样。。
    如果设t = x + 1
    26t^4 + 12t^2 + 13t + 14 = 100t^32
    t的取值区间在0和1之间然后是不是可以用迭代了?