展开全部
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("角度\t\t自制cos函数输出\t\t系统cos函数输出");
for(int a=0;a<=360;a+=10)
System.out.println(a+"\t\t"+cos(Math.toRadians(a))+"\t\t"+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
用级数e68a8462616964757a686964616f31333332613663展开式,纯为了展示概念,效率一般不是求cos的最佳方法。
加大max_n的值可以扩大精度。精度50下,求得的值基本和系统函数一致