importjava.util.Scanner;publicclassMain{publicstaticvoidmain(String[] args){Scanner sc =newScanner(System.in);double x, e;
x = sc.nextDouble();//读入x
e = sc.nextDouble();//最后一项要小于e,通常取1e-7double ret =1, c =1;//c记录每一项,cosx第一项为1int sign =1, n;//sign记录符号,i记录当前的阶乘//第一项为1,为了统一代码,从第二项开始计算for(n =2;Math.abs(c)>= e; n +=2){//新的一项是在前一项的基础上乘上x方再除以i*(i-1)得到,这样可尽量避免溢出和重复计算
c = c * x * x / n /(n -1);
sign *=-1;
ret += sign * c;}System.out.println("结果为: "+ ret);System.out.println("库函数计算结果为cos("+ x +")= "+Math.cos(x));System.out.print("误差为:"+Math.abs(Math.cos(x)- ret));}}
题目二 用泰勒展开式求
s
i
n
(
x
)
sin(x)
sin(x)近似值
1.题目描述:要求同上
2.代码实现
importjava.util.Scanner;publicclassMain{publicstaticvoidmain(String[] args){Scanner sc =newScanner(System.in);double x, e;
x = sc.nextDouble();//读入x
e = sc.nextDouble();//最后一项要小于e,通常取1e-7double ret = x, c = x;//c记录每一项,sinx第一项为xint sign =1, n;//neg记录符号,n记录当前的阶乘//第一项为x,为了统一代码,直接从第二项开始计算for(n =3;Math.abs(c)>= e; n +=2){//新的一项是在前一项的基础上乘上x方再除以i*(i-1)得到,这样可尽量避免溢出和重复计算
c = c * x * x / n /(n -1);
sign *=-1;
ret += sign * c;}System.out.println("结果为: "+ ret);System.out.println("库函数计算结果为sin("+ x +")= "+Math.sin(x));System.out.print("误差绝对值为:"+Math.abs(Math.sin(x)- ret));}}
记录用泰勒求三角函数近似值的问题题目一 用泰勒展开式求cosx近似值1.题目描述按上述公式求近似值,要求最后一项绝对值小于给定值e。最后结果与库函数进行比较求误差。2.代码实现import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); double x, e; x = sc.nextDo