是泰勒公式吧,給你參考
創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比浪卡子網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式浪卡子網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋浪卡子地區(qū)。費(fèi)用合理售后完善,10余年實(shí)體公司更值得信賴。
#includestdio.h
double getEx(double x,int n){
double temp=1;
for(int i=0;in;i++){
temp*=x;
}
return temp;
}
double getJiecheng(int n){
double temp=n;
for(int i=n-1;i=1;i--){
temp*=i;
}
if(n/2%2==0)
return temp;
else
return -1*temp;
}
double getfabs(double t){
if(t=0)
return t;
else
return -1*t;
}
void main(){
const double E=1e-6;
double x,t,ans=1;
int n=2;
x=0.5
do{
t=getEx(x,n)/getJiecheng(n);
ans+=t;
n+=2;
if(getfabs(t)=E){
break;
}
}while(true);
printf("cos(%f)=%f\n",x,ans);
}
根據(jù)泰勒公式:
sin(x)=x-x^3/3!+x^5/5!+……+(-1)^(n-1)*x^(2n-1)/(2n-1)
可以使用迭代法來求sin了,如果需要精度計(jì)算,則需要bigdecimal工具來保存精確的浮點(diǎn)數(shù)
import java.util.Scanner;
public class Test{
public static void main(String[] args){
System.out.print("輸入x:");
Scanner in=new Scanner(System.in);
double x=in.nextDouble();
System.out.println("cos"+x+"="+Taylor(x));
}//COSx=1-x2/2!+x4/4!-x6/6!+x8/8!..
public static double Taylor(double x){
int i,k;
long fac=1;//階乘
double n=1,y=1,sum=1;
for(i=2;(Math.abs(y))=1e-8;i+=2)
{ n=n*(-1);
for(k=1;k=i;k++)
fac=fac*k;
y=Math.pow(x, i)*n/fac;
sum+=y;
fac=1;
}
return sum;
}
}
//請采納!
package?com.cainiaoqi;
import?java.util.Scanner;
public?class?Test?{
public?static?void?main(String[]?args)?{
//?TODO?Auto-generated?method?stub
double?x?=?0;
Scanner?in?=?new?Scanner(System.in);
System.out.print("請輸入x:");
x?=?in.nextDouble();
System.out.println("sin("+x+")?=?"+calcsin(x));
}?
static?double?calcsin(double?x)?{
double?result?=?0;
int?temp?=?0;
while((Math.pow(x,2*temp+1)/jiecheng(2*temp+1))??1.0E-8)?{
result?+=?(Math.pow(x,2*temp+1)/jiecheng(2*temp+1))*Math.pow(-1,?temp);
temp?++;
// System.out.print("第"+temp+"次迭代!"?);
// System.out.println(result);
}
return?result;
}
static?int?jiecheng(int?x)?{
if(x==1)
return?1;
else?
return?jiecheng(x-1)*x;
}
}