永发信息网

java编程:利用级数展开式计算cos(x)

答案:3  悬赏:10  手机版
解决时间 2021-02-19 06:32
  • 提问者网友:伴风望海
  • 2021-02-19 00:26
java编程:利用级数展开式计算cos(x)
最佳答案
  • 五星知识达人网友:空山清雨
  • 2021-02-19 01:06
spublic class Test{
static public double cos(double x){
int max_n=50; //计算精度,越大越精确
double sum=1;
double sq_x=x*x;
double usum=1;
double lsum=1;
int sign=1;
for(int n=1;n sign*=-1;
usum*=sq_x;
final int dn=2*n, dn_1=2*(n-1);
for(int i=dn;i>dn_1;i--){
lsum*=i;
}
sum+=sign*usum/lsum;
}
return sum;
}
public static void main(String[] args){
System.out.println("角度 自制cos函数输出 系统cos函数输出");
for(int a=0;a<=360;a+=10)
System.out.println(a+" "+cos(Math.toRadians(a))+" "+Math.cos(Math.toRadians(a)));
}
}
角度 自制cos函数输出 系统cos函数输出
0 1.0 1.0
10 0.9848077530122081 0.984807753012208
20 0.9396926207859085 0.9396926207859084
30 0.8660254037844386 0.8660254037844387
40 0.766044443118978 0.766044443118978
50 0.6427876096865393 0.6427876096865394
60 0.5000000000000001 0.5000000000000001
70 0.3420201433256688 0.3420201433256688
80 0.17364817766693047 0.17364817766693041
90 4.264460367971268E-17 6.123233995736766E-17
100 -0.17364817766693033 -0.1736481776669303
110 -0.3420201433256687 -0.3420201433256687
120 -0.4999999999999999 -0.4999999999999998
130 -0.6427876096865393 -0.6427876096865394
140 -0.766044443118978 -0.7660444431189779
150 -0.8660254037844387 -0.8660254037844387
160 -0.9396926207859084 -0.9396926207859083
170 -0.9848077530122079 -0.984807753012208
180 -1.0000000000000002 -1.0
190 -0.9848077530122081 -0.984807753012208
200 -0.9396926207859081 -0.9396926207859084
210 -0.8660254037844386 -0.8660254037844386
220 -0.7660444431189778 -0.7660444431189781
230 -0.6427876096865386 -0.6427876096865395
240 -0.5000000000000017 -0.5000000000000004
250 -0.3420201433256711 -0.3420201433256694
260 -0.17364817766693233 -0.17364817766693033
270 -1.7589294315635386E-15 -1.8369701987210297E-16
280 0.17364817766692894 0.17364817766692997
290 0.34202014332566927 0.342020143325669
300 0.499999999999999 0.5000000000000001
310 0.6427876096865434 0.6427876096865393
320 0.7660444431189771 0.7660444431189778
330 0.8660254037844417 0.8660254037844384
340 0.939692620785908 0.9396926207859081
350 0.9848077530122056 0.984807753012208
360 0.9999999999999953 1.0

用级数展开式,纯为了展示概念,效率一般不是求cos的最佳方法。

加大max_n的值可以扩大精度。精度50下,求得的值基本和系统函数一致
全部回答
  • 1楼网友:拜訪者
  • 2021-02-19 02:37
额,我只想问一下,这是新课改高一的内容吗?
  • 2楼网友:爱难随人意
  • 2021-02-19 01:59
因为级数增的快,对于一般的数,在循环条件还没有被破坏之前,就已经造成溢出,因此,您必须在接收到x后用一个循环对其进行处理,具体就是不断减去两倍圆周率,把结果控制在负二拍和二拍之间就可以做了
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯