- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的 C 作业之一是编写 arctan(x)
的近似值在 C 语言中。我应该基于的方程是
arctan(x)=\sum {k=0}^{\infty }(-1)^{k} \tfrac{x^{2k+1}}{2k+1}
另外x仅定义为-1<=x<=1
.
这是我的代码。
#include <stdio.h>
#include <math.h>
double main(void) {
double x=1;
double k;
double sum;
double sum_old;
int count;
double pw(double y, double n) {
double i;
double number = 1;
for (i = 0; i < n; i++) {
number *= y;
}
return(number);
}
double fc (double y) {
double i;
double number = 1;
for (i = 1; i <= y; i++){
number *= i;
}
return(number);
}
if(x >= (-1) && x <= 1) {
for(k=0; sum!=sum_old; k++) {
sum_old = sum;
sum += pw((-1), k) * pw(x, (2*k) + 1)/((2*k) + 1);
count++;
printf("%d || %.17lf\n", count, sum);
}
printf("My result is: %.17lf\n",sum);
printf("atan(%f) is: %.17f\n", x, atan(x));
printf("My result minus atan(x) = %.17lf\n", sum - atan(x));
} else {
printf("x is not defined. Please choose an x in the intervall [-1, 1]\n");
}
return 0;
}
它似乎适用于每个值,除了值 1
和-1
。如果x=1
,那么输出结束于:
...
7207 || 0.78543285189457468
7208 || 0.78536
而输出应该看起来更像这样。在本例中 x=0.5。
25 || 0.46364760900080587
26 || 0.46364760900080587
My result is: 0.46364760900080587
atan(0.500000) is: 0.46364760900080609
My result minus atan(x) atan(x) = -0.00000000000000022
如何改进我的代码,使其可以使用 x=1
运行和x=-1
.
提前致谢。
PS:我用的是我自己创建的pw()
函数而不是 pow()
,因为我想绕过不使用 pow()
的限制因为我们的讲座中还没有这样的内容。
PPS:如果您提供有关如何改进我的代码的建议,我将不胜感激。
最佳答案
在每次迭代中,您添加 (-1)k • x2k+ 1/(2k+1),当总和没有变化时停止。
如果这是用理想算术(精确、无限精确的算术)计算的,它永远不会因非零 x 而停止,因为你总是在改变总和。当使用固定精度算术进行计算时,当项太小时,由于精度有限,它不会改变总和,因此会停止。
当 |x|小于 1 任何显着的量,这很快就会发生,因为 x2k+1 变得更小。当 |x|是 1 时,该项就变成 1/(2k+1),它会非常缓慢地变小。直到 k 大约为 253 时,总和才会停止变化。
您可能会考虑将停止条件更改为 sum
与 sum_old
相比没有发生太大变化,而不是根本没有变化。
关于c - 我应该更改什么以便我的 arctan(x) 近似可以正确显示 x=1 和 x=-1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53382349/
我尝试从点 (n,m) 确定角度至 (0,0) .无 arctan2可用,我遇到了 m 的问题可以是 0,这导致可能被零除。 解决这个问题的优雅、正确的解决方案是什么? 最佳答案 不要使用传统的象限,
该库的许多实现深入到所有弧函数的 FPATAN 指令。 FPATAN 是如何实现的?假设我们有 1 位符号,M 位尾数和 N 位指数,得到这个数反正切的算法是什么?应该有这样的算法,因为 FPU 做到
我尝试使用两者,但它给了我错误的答案,根据我的计算器,答案应该是: arctan(0.35) = 19.29 我使用的: Math.atan(Math.toRadians(angle)) and Ma
我正在使用 arctan(x) 的麦克劳林级数,但没有得到正确的答案。我正在以弧度进行计算。这是到目前为止的功能: fp32 t32rArcTangent(fp32 number) { fp32 a,
我正在尝试使用OpenCvSharp计算灰度图像的梯度大小和方向。问题在于“Pow”功能似乎不适用于IplImage。 我也想知道如何计算FeatureImage的tan-1(或arctan)。 谢谢
基于 Sjoerd,很好的解决方案和扩展 From Cartesian Plot to Polar Histogram using Mathematica ,请考虑以下事项: list = {{21,
在下面的代码中, float i = Float.parseFloat(a); float j = Float.parseFloat(b); double div = (double)j/i; fl
我需要对反正切值执行泰勒级数 50 次。表示 arctan Taylor 级数的域之间的 50 个数字,即 [-1,1]。我已经用手动用户输入对其进行了测试并且它工作正常,但是我在代码中递增 0.01
你好,我必须以度数来区分计算,我有以下代码,但我没有返回确切的值。唯一对的就是sin90的值degree = 1 //////***** DEGREES ******////// var sinus
如何在 iphone SDK 中获取 arctan MATH 函数? 最佳答案 你要找的函数是atan(double) 关于ios - 如何在 iOS 中获取 arctan MATH 函数?,我们在S
在 Python 和 Matlab 中,我编写了生成矩阵并使用索引函数填充它的代码。 Python代码的执行时间是Matlab代码执行时间的20倍左右。两个具有相同结果的函数是用 python 编写的
如何在没有数学函数(arctan)的情况下快速计算点和 org(0,0) 之间的角度(最接近八个提供值之一)?我将 xy 坐标系分成 8 个部分(0、45、90、135、180、225、270、315
我正在尝试复制 Curtis 在 Orbital Mechanics 中的情节,但我就是不太明白。但是,我通过从 np.arctan 切换到 np.arctan2 取得了进展。 也许我错误地实现了 a
我的 C 作业之一是编写 arctan(x) 的近似值在 C 语言中。我应该基于的方程是 arctan(x)=\sum {k=0}^{\infty }(-1)^{k} \tfrac{x^{2k+1}}
我对 Python 完全陌生,并且在完成部分作业时遇到了一些问题。 首先,我们必须定义一个使用泰勒级数展开来近似 arctan(x) 的函数。 现在,我必须利用 arctan(1) = pi/4 这一
我是一名优秀的程序员,十分优秀!