C语言中sin()函数用的什么算法?
C语言中sin()函数用的哪种算法?可以在哪儿直接查看吗?库函数math.h中只包含了这样一条子函数的定义double_Cdeclsin(doublex);我要问的是正是...
C语言中sin()函数用的哪种算法?
可以在哪儿直接查看吗?
库函数math.h中只包含了这样一条子函数的定义
double _Cdecl sin (double x);
我要问的是正是它用的什么算法!!!
也就是说它是如何计算的!
“用”一般人儿都会呵……
非常感谢各位!
“库函数没有源文件可以看的,只有二进制可执行代码
连接时,加到你的程序中。
这是编译器提供的。”
用泰勒级数是一种方法,我也是这么猜的,不过不确定。
这是最快的方法么?
也许我应该计算一下它的收敛速度。 展开
可以在哪儿直接查看吗?
库函数math.h中只包含了这样一条子函数的定义
double _Cdecl sin (double x);
我要问的是正是它用的什么算法!!!
也就是说它是如何计算的!
“用”一般人儿都会呵……
非常感谢各位!
“库函数没有源文件可以看的,只有二进制可执行代码
连接时,加到你的程序中。
这是编译器提供的。”
用泰勒级数是一种方法,我也是这么猜的,不过不确定。
这是最快的方法么?
也许我应该计算一下它的收敛速度。 展开
4个回答
展开全部
C语言中要编写sin函数,实质上要利用sin的泰勒公式,然后根据泰勒公式,将其中的每一项进行分解,最后用循环,累加计算出最终结果
下面用for循环实现sin的算法,程序代码如下:
#include<stdio.h>
#include<math.h>
void main()
{
int i;
float x,sum,a,b; //sum代表和,a为分子,b为分母
char s;
printf("please input x");
scanf("%f",&x);
s=1;
sum=0;
a=x; //分母赋初值
b=1; //分子赋初值
for(i=1;a/b>=1e-6;i++)
{
sum=sum+s*a/b; //累加一项
a=a*x*x; //求下一项分子
b=b*2*i*(2*i+1); //求下一项分母
s*=-1;
}
printf("sum=%f\n",sum);
}
3. 关于上述程序的几点说明:上述程序的计算结果精确到小数点后六位;上述程序运用了sin的泰勒展开式 sin
x=x-x^3/3!+x^5/5! ...... ,程序中将sin泰勒公式中的每一项拆成了分子,分母以及每一项前的符号这三项,以便于每一项的累加
下面用for循环实现sin的算法,程序代码如下:
#include<stdio.h>
#include<math.h>
void main()
{
int i;
float x,sum,a,b; //sum代表和,a为分子,b为分母
char s;
printf("please input x");
scanf("%f",&x);
s=1;
sum=0;
a=x; //分母赋初值
b=1; //分子赋初值
for(i=1;a/b>=1e-6;i++)
{
sum=sum+s*a/b; //累加一项
a=a*x*x; //求下一项分子
b=b*2*i*(2*i+1); //求下一项分母
s*=-1;
}
printf("sum=%f\n",sum);
}
3. 关于上述程序的几点说明:上述程序的计算结果精确到小数点后六位;上述程序运用了sin的泰勒展开式 sin
x=x-x^3/3!+x^5/5! ...... ,程序中将sin泰勒公式中的每一项拆成了分子,分母以及每一项前的符号这三项,以便于每一项的累加
展开全部
这个是库函数吧
只有有说明就可以用了,你试一下,不用包含 math.h
直接写一个声明,double _Cdecl sin (double x);
就可以用了
库函数没有源文件可以看的,只有二进制可执行代码
连接时,加到你的程序中。
这是编译器提供的。
--------------------
补充一下
楼主问的是 sin 这个函数,CPU是如何实现的
CPU能做加减乘除还有逻辑运算
不知道楼主有没有学过极数?
把sin(x)按 泰勒极数展开,可以变在一个 sin(x)=f(x)
f(x) 是一个关于x的加减乘除的函数,极数无限的
当然,极数越多,精度越高,运算量越大
计算机取有限极数,作近似计算即可
sin(x)=x-x^3/3!+x^5/5!-x^7/!+....
只有有说明就可以用了,你试一下,不用包含 math.h
直接写一个声明,double _Cdecl sin (double x);
就可以用了
库函数没有源文件可以看的,只有二进制可执行代码
连接时,加到你的程序中。
这是编译器提供的。
--------------------
补充一下
楼主问的是 sin 这个函数,CPU是如何实现的
CPU能做加减乘除还有逻辑运算
不知道楼主有没有学过极数?
把sin(x)按 泰勒极数展开,可以变在一个 sin(x)=f(x)
f(x) 是一个关于x的加减乘除的函数,极数无限的
当然,极数越多,精度越高,运算量越大
计算机取有限极数,作近似计算即可
sin(x)=x-x^3/3!+x^5/5!-x^7/!+....
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询