我有一个作业,教授要我们用泰勒级数计算sin(x)。他希望我们在两个连续分数之间的差小于10^-6时停止迭代。
最后,我说,例如x^5/5!与(x^3/3!)*相同(x^2/4*5),所有分数都是如此。所以我可以保留之前计算的分数,并在下一次迭代中使用。问题是,我最终得到的数字与它的实际罪过有点偏差,我不知道为什么。提前谢谢。这是我的代码:
#include <stdio.h>
#include <Math.h>
#define pi 3.14159265358979323846
int main(int argc, int **argv){
int sign = -1, pwr = 3;
double previous, current, rad,sum, degr;
printf("Calculating sin using Taylor Series\n\n");
printf("Give degrees: ");
scanf("%lf", °r);
// translate to rads
rad = degr*(pi/180);
sum = rad;
previous = rad;
do{
current = (previous * pow(rad, 2))/(pwr* pwr-1);
sum += sign*current;
pwr += 2;
sign *= -1;
}
while(abs(current - previous) > pow(10, -6));
printf("The sin of %lf degrees is ", degr);
printf("%.6f\n", sum);
printf("%.6f", sin(rad));
return 0;
}
您正在使用< code>abs函数,该函数需要一个< code>int并返回一个< code>int。如果当前项和先前项之间的差小于1,这会导致循环存在,因为它会将< code>diff设置为0。
相反,你想要期待并返回双精度
的晶圆厂
。
我试着做x正弦的泰勒展开,但是如果x大于150度,函数就会发散。 这是我的代码: 在这里,我将自治领绑定为[0,2pi]。 这里,我定义了一个阶乘函数 这是sin(x)的Taylor(Maclaurin)级数展开式 } 问题是它必须在[0,2pi]中为x定义,所以我不知道该怎么做。 谢谢
这是我的代码: 但它不起作用并显示此错误:
在数学中,泰勒级数对于用低次多项式逼近函数是很重要的。 我想看看这样的近似如何有帮助,例如为了加快计算速度。让我们使用著名的泰勒级数: 从道德上讲,计算2次多项式的值应该比计算快得多。 因此,一个测试代码: 为什么多项式法比实际测井慢10倍?我期待的正好相反。 PS:这个问题可能在SO和math.SE.
我需要对我的递归方法的一些洞察力来计算辛泰勒级数,它不能正常工作。该方法调用了另外两个递归方法,即递归pow方法和递归阶乘方法。我将我的发现与迭代罪方法进行了比较,给了我正确的解决方案。我的递归罪方法中缺少什么? sin(x)= x - x^3/3的近似值!x^5/5!-x^7/7!...
我使用泰勒级数来计算< code>sin()。对原罪的泰勒级数是: 我使用的实现如下所示: 据我所知,该代码是多项式的项的近似(换句话说,该近似是从零到 系列编写相同类型的实现。 你能帮我理解一下吗?
目前,我们正在将我们的软件与Thales Payshield 9000 HSM集成,存在以下问题: 我们在使用GK(RSA公钥下的导出密钥)命令时遇到困难。我们使用A0命令成功地生成了DEK密钥。我们还使用EO命令成功地将公钥导入HSM。现在我们想使用导入的公钥导出DEK密钥。为此,我们使用GK命令。在向HSM发送命令后,我们从HSM得到响应,错误代码为15(表示“输入数据无效…”)。我们无法找到