以下是书中的内容:
“值e^x
可以用以下总和近似:
1 + X + X ^ 2/2!+的x ^3分之3!+ ... +的x ^ N / N!
编写一个以值x作为输入的程序,并输出n的总和作为值1到10,50和100中的每一个。您的程序应该重复计算x的新值,直到用户说她或他是通过。表达式n!被称为n的阶乘,定义为
N! = 1 * 2 * 3 * ... * n
使用double类型的变量来存储阶乘(或安排计算以避免直接计算阶乘);否则,您可能会产生整数溢出,即大于Java的整数允许。“
我没有任何编码问题(至少还没有),我的问题是我不知道它要求我做什么。我得到了阶乘部分(ex. 3i = 1*2*3)
,但我不确定它还在询问什么。我让用户输入“x”的值,但“n”来自哪里?
“值e^x
可以用以下总和近似:
1 + X + X ^ 2/2!+的x ^3分之3!+ ... +的x ^ N / N!
“我不知道这是在说什么或要求什么。
我把这个for循环放在1-10,50,100部分,我不知道这是否有意义而不理解其余部分,但这里是:
for (counter = 1 ; counter <= 100 ;counter++)
{
//System.out.print("Enter value for x: ");
//x = keyIn.nextDouble();
if (counter >= 1 && counter <= 10)
{
if (counter == 1)
System.out.println("Iterations 1-10: ");
System.out.println("test to see if 10 show up");
}
else if (counter == 50)
{
System.out.println("Iteration 50: ");
}
else if (counter == 100)
{
System.out.println("Iteration 100: ");
}
}
我在大约两年内没有参加代数,所以有些东西让我失望了。请尽可能帮助,谢谢。
答案 0 :(得分:1)
它说e^x
可以通过泰勒级数近似:Sum(i:0:n)
(x i / fact(i))
所以,我们有:
double ex_taylor_series(double x, int n)
{
double value;
for(int i = 0; i < n; i++)
{
value += Math.pow(x, i)/(factorial(i));
}
return value;
}
private int factorial (int num)
{
int value = 1;
for(int i = num; i > 1; i--)
{
value *= i;
}
return value;
}
在您的情况下,您只需向ex_taylor_series
提供不同的n,10,50和100值。