当前位置:编程学习 > JAVA >>

技术问题也是数学问题,高手们看看喽,谢啦。

∑{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。
我用递归方式折中算法的方式可以算出来,但需要指定范围,范围太大的话会堆栈溢出。
求其他办法,谢谢! --------------------编程问答-------------------- 学习。。关注中。。 --------------------编程问答-------------------- 指定的范围是什么…… --------------------编程问答--------------------
设计代码:
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;
}
--------------------编程问答-------------------- 3楼。。你确定第三行可以这样取log? --------------------编程问答-------------------- 新手表示围观!顶起求大神解答!!! --------------------编程问答--------------------
引用 4 楼 lcf 的回复:
3楼。。你确定第三行可以这样取log?


引用 3 楼 sunquan291 的回复:

设计代码:
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;
}


谢谢,提醒,
第三行,只有乘积时才能那样取。若求和变为求连乖。到是可以!
等待高手吧! --------------------编程问答-------------------- 其实整个方程化出来就是这样。。
如果设t = x + 1
26t^4 + 12t^2 + 13t + 14 = 100t^32
t的取值区间在0和1之间

然后是不是可以用迭代了? --------------------编程问答-------------------- 顶起。高手继续。谢谢! --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- 除
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,