Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Sin-taylor级数递推逼近_Java_Recursion_Trigonometry_Taylor Series - Fatal编程技术网

Java Sin-taylor级数递推逼近

Java Sin-taylor级数递推逼近,java,recursion,trigonometry,taylor-series,Java,Recursion,Trigonometry,Taylor Series,我需要一些关于计算sin-Taylor级数的递归方法的见解,它不能正常工作。该方法调用另外两个递归方法,即递归pow方法和递归阶乘方法。我将我的发现与给出正确答案的迭代sin方法进行了比较。我的递归sin方法缺少什么 sin(x)=x-x^3/3!+x^5/5-x^7/7!+ 第一步是以明确递归关系的方式编写函数(不能为不明确的内容编写代码),因此,不要从以下内容开始: sin(x)= x - x^3/3! + x^5/5! -x^7/7!+ ... 但是,要问“我怎样才能使x的所有术语看起来

我需要一些关于计算sin-Taylor级数的递归方法的见解,它不能正常工作。该方法调用另外两个递归方法,即递归pow方法和递归阶乘方法。我将我的发现与给出正确答案的迭代sin方法进行了比较。我的递归sin方法缺少什么

sin(x)=x-x^3/3!+x^5/5-x^7/7!+


第一步是以明确递归关系的方式编写函数(不能为不明确的内容编写代码),因此,不要从以下内容开始:

sin(x)= x - x^3/3! + x^5/5! -x^7/7!+ ...
但是,要问“我怎样才能使
x
的所有术语看起来都一样”:

好的开始,但如果我们是递归的,我们真正要寻找的是只计算其中一个项,然后用更新的参数调用自己来计算下一个项的东西。理想情况下,我们想要的是:

doThing(args) {
  return simpleComputation() + doThings(updatedargs);
}
然后递归完成其余的工作。因此,让我们首先确保我们只需要处理
+
,而不是混合处理
+
-

sin(x)= (-1)^0 * x^1/1! + (-1)^1 * x^3/3! + (-1)^2 * x^5/5! + ...
现在你可以用递归关系来表达,因为:

sin(x,n) {
  return (-1)^n * x^(2n+1) / (2n+1)! + sin(x, n+1);
}
使用“快捷方式”功能:

sin(x) {
  return sin(x,0); 
}

这就是提示停止的地方,您应该能够自己实现其余的。只要你记得停止递归,因为泰勒级数是无限的,而计算机程序和资源不是无限的。

你是为了家庭作业而用递归实现这个吗?因为如果你真的要实现这一点,那么递归调用就没有理由这么做。是的,这是我的家庭作业,我需要使用pow和阶乘递归方法来实现我的递归sin方法。但是这不是(-1)^0*x^1/1吗!应该是积极的吗-1^0是-1。当然不是<代码>-1^0肯定是+1(有几种解释,所有解释都可以在网上找到)我的错误,对不起,谢谢你,它起作用了=),但我还有另一个问题。我的recursivePow方法只适用于正数。你有什么建议我可以用实数来实现它,比如:-0.12^2?
sin(x,n) {
  return (-1)^n * x^(2n+1) / (2n+1)! + sin(x, n+1);
}
sin(x) {
  return sin(x,0); 
}