C 中的余弦功能,没有任何数学功能
cosine function in c++ without any math function
我正在使用代码来计算十进制数字的余弦(弧度(。问题在于,只有在我放置少量数字时才能得到正确的答案。它使用泰勒系列。
double coseno(float x)
{
double t = x;
double cos= t;
for ( int a=1; a<20.0; ++a)
{
double mult = -x*x/((2*a)*(2*a-1));
t *= mult;
cos += t;
}
return cos;
}
- 你犯了一个错误。开始时,您应该将t设置为1(不是x(;
- 您忘记了术语。如果数字太大或太小,您可以简单地使用一些hiles。
最终它可以很好地工作:
#include <math.h> //for M_PI
double coseno(float x){
while(x<0) x+=2*M_PI;
while(x>2*M_PI) x-=2*M_PI;
double t = 1;
double cos= t;
for ( int a=1; a<40; ++a)
{
double mult = -x*x/((2*a)*(2*a-1));
t *= mult;
cos += t;
}
return cos;
}
我认为问题是当您使用所需的精度评估操作时,该操作不会评估。当您使用小值时,近似足以获得正确的结果,但是当您使用较大的值时,您会陷入近似问题。
您在for循环中多次重复近似错误,因此随着输入增加而获得错误结果
相关文章:
- 是否有任何C++功能可以对地图进行排序?
- C++ 将 CIN 值存储到任何类型的数组中
- 这是使用回溯的 nqueen 问题,但我使用了动态 2d 数组,我的程序编译良好,但不返回任何输出
- 为什么静态数组成员变量在调用对象的实例后不显示任何内容?
- 计算单词中的音节数,但考虑到单词中彼此相邻的任何元音都算作一个音节
- RtMidi - MidiInDummy:此类不提供任何功能
- 零四元数和任何向量都不为零的特征积,这是一个错误吗?
- C++:功能在输出前自动使用50减/增加输入数
- 是否有任何模式等效于虚拟模板功能?
- 如何创建我稍后在代码中定义大小的任何数组?
- 编写一个递归功能,该功能采用数组并以相反顺序显示元素,而无需在末尾启动数组的索引
- 可用于任何大小的数组的功能
- 如何使用GSL :: SPAN来修复任何数组以降低指示警告
- 我在 36603 以上输入的任何数组大小时都会返回"堆栈溢出"错误。如何使字符串能够捕获整个.txt文件?
- 如何以递归方式反转任何数组?(不使用C++标准库)
- 带有Boost Python的Wrap C 功能 - Numpy数组类型
- C 制造功能返回数组交叉文件
- 访问C 类中功能指针数组的输入
- 功能指针数组(包括成员功能)投掷模板专业化错误
- 这个用于写入任何数组内容的宏是否100%安全?c++11