当 x 为 90 度或 pi/2 弧度时,将 cos(x) 计算为 0,以C++为单位
Compute cos(x) to 0 when x is 90 degree or pi/2 radian in C++
# include <iostream>
# include <math.h>
# include <cstdlib>
using namespace std;
double cosin_value( double value);
double sin_value( double value);
double big_degree (double value);
double big_radian (double value);
double x;
double value;
double degree;
double radian;
const double PI = 3.14159;
char choice;
char yes ;
int main()
{
cout << "Please enter an angle value => ";
cin >> value;
cout << "Is the angle in Degree or Radian?" << endl;
cout << "t" << "Type D if it is in Degree" << endl;
cout << "t" << "Type R if it is in Radian" << endl;
cout << "Your response => ";
cin >> choice; //degree or radian?
cout.setf(ios::fixed);
cout.setf(ios::showpoint);
cout.precision(10);
if (choice == 'D' || choice == 'd')
{
big_degree (value);
cout << " " << "sin(x) = " << "t" << sin_value(degree) << endl;
cout << " " << "cos(x) = " << "t" << cosin_value(degree) << endl;
cout << " " << "tan(x) = " << "t" << sin_value(degree)/cosin_value(degree) << endl;
}
else if (choice == 'R' || choice == 'r')
{
cout << " " << "sin(x) = " << "t" << sin_value(radian) << endl;
cout << " " << "cos(x) = " << "t" << cosin_value(radian) << endl;
cout << " " << "tan(x) = " << "t" << sin_value(radian)/cosin_value(radian) << endl;
}
return 0;
}
// Sine,cosine functions
// angle -360<value<360
double sin_value( double value)
{
int count=1;
double sine, num, dem, sign, term;
sine=0;
sign = 1;
num = value;
dem = count;
while ( count <= 20 )
{
term = (num/dem);
sine = sine + term*sign;
num = num*value*value;
count = count + 2;
dem = dem * count * (count-1);
sign = -sign;
}
return (sine);
}
double cosin_value( double value)
{
int count=0;
double cosine, num, dem, sign, term;
cosine=0;
sign = 1;
num = 1;
dem = 1;
while ( count <= 20 )
{
term = (num/dem);
cosine = cosine + term*sign;
num = num*value*value;
count = count + 2;
dem = dem * count * (count-1);
sign = -sign;
}
return (cosine);
}
double big_degree (double value)
{
int result;
const int angle=360;
if (value >= 360 || value <= -360)
{
result=value/angle;
degree=(value-(result* angle))*PI/180;
}
else
{
degree = (value*PI)/180;
}
return (degree);
}
double big_radian (double value)
{
int result;
if (value >= 2*PI || value <= -2*PI)
{
result=value/(2*PI);
radian=(value-(result* 2*PI));
}
else
{
radian = value;
}
return (radian);
}
嗨,这基本上是我编写的整个程序,用于使用我在初学者C++时所知道的范围知识来计算三角函数值。为了获得更好的视图,您可以参考有关我上面的代码的此链接:codepad.org从第 114 行开始的行是我创建的函数。那里有一个问题,当值为 0 度或 pi/2 弧度时,我如何计算我的 cosx 为 90?由于该程序仍然会为我计算 TANX,即使值是 90 度。假设通过给程序值 90 度,它将给我值 0.0000013268 而不是 0.000000抱歉,由于我只是一个初学者,因此代码对你们来说看起来很奇怪。我感谢您的导游!双big_degree(双值(表示当值为>= 360 或 <= -360* 时
我没有在
大脑中为 pi 的数字分配任何堆空间,但我确实记得那个atan
(1) == pi / 4
。
像这样更改PI
常量:
const double PI = atan(1) * 4;
拿你的代码,做出改变,我得到
Please enter an angle value => 90
Is the angle in Degree or Radian?
Type D if it is in Degree
Type R if it is in Radian
Your response => d
sin(x) = 1.0000000000
cos(x) = 0.0000000000
tan(x) = 15555226593901466.0000000000
const double PI = 3.14159;
你做这个定义越精确,cos PI/2
的值就越接近0
!
如果以弧度为单位获取输入本身,则也适用相同的条件。
问题不在于你的代码。您给出的输入不够准确。计算 pi/2 的正确值,您将获得足够准确的值。
另外,如果要舍入可以使用
的值 #rounded 请关闭值=Math.Round(#old 值,4(
我的灵魂:
double mySin(double x)
{
if (fmod(x, std::numbers::pi) == 0)
return 0;
return sin(fmod(x, std::numbers::pi * 2.0));
}
double myCos(double x) { return mySin(x + std::numbers::pi / 2); }
myCos(std::numbers::pi / 2) == 0 //True
myCos(std::numbers::pi) == -1 //True
myCos(std::numbers::pi * 2) == 1 //True
相关文章:
- 为什么"do while"循环不断退出,即使条件计算结果为 false?
- 递归函数计算序列中的平方和(并输出过程)
- (C++)分析树以计算返回错误值的简单算术表达式
- 我的字符计数代码计算错误.为什么
- 在计算中使用二的幂有多有利可图
- 如何计算文件中的"columns"数?
- 计算排序向量的向量中唯一值的计数
- 如何使用 std::累积在 C++ 中计算总和立方体
- 使用Qt C++计算类似Git的SHA1哈希
- OpenCV C++.快速计算混淆矩阵
- cpp二进制搜索问题,计算给定数组中输入元素的出现次数
- C++如何计算用户输入的数字中的偶数位数
- 如何计算数据类型的范围,例如int
- 类似枚举的计算常量
- 计算每个节点的树高,帮助我解释这个代码解决方案
- 多个If语句与使用逻辑运算符计算条件的单个语句的比较
- 毕达哥拉斯恒等式:如何计算正确的cos符号
- 简单的三角函数算法,用于计算定点数的 sin() 和 cos()
- 在表中预先计算一次cos()和sin()
- 当 x 为 90 度或 pi/2 弧度时,将 cos(x) 计算为 0,以C++为单位