我正在尝试用Java编写泰勒扩展计算器,但该程序无法正确计算

时间:2018-09-27 23:05:56

标签: java

我正在尝试创建一个Java程序,该程序将使用以下公式计算余弦值: enter image description here

程序的代码位于下面。我的程序似乎没有任何错误,但是无论我将xk设置为什么值,我都会得到答案Infinity,但我无法弄清楚做错了。

代码的工作方式是,控制台要求您输入x的值,然后要求k的值。然后的想法是让Java将方程式的结果(脚本中的方法cosineMath.cos()函数进行比较。

方法cosine分为两部分,cosinenumeratorcosinedenominator,然后彼此分开,最后变成cosineresult

cosinedenominator的循环应该在方程式中模拟“阶乘”。

任何帮助将不胜感激。

import java.util.Scanner;
public class Cosine {
    public static void main(String[] args) {
        Scanner consolecosine = new Scanner(System.in);
        System.out.println("Enter x value:");
        double x = consolecosine.nextDouble();
        System.out.println("Enter k value:");
        int k = consolecosine.nextInt();
        double cosineresult = cosine(x, k);
        System.out.println("Using the Math.cos function yields: " + Math.cos(90));
        System.out.println("Using the Taylor expansion equation yields: " + cosineresult);
    }
    public static double cosine(double x, int k) {
        double cosineresult = 0;
        double cosinenumerator = 0;
        double cosinedenominator =0;
        int i = 0;
        int j = 0;
        for(i = 0; i <= k; i++) {
            cosinenumerator += Math.pow((-1),i) * Math.pow(x, (2*i));
        }
        for(j = 0; j <= (2*i); j++) {
            cosinedenominator *= (2*j);
        }
        cosineresult = cosinenumerator / cosinedenominator;
        return cosineresult;
    }
}

1 个答案:

答案 0 :(得分:0)

这是一个可行的版本(请注意,x以弧度表示;不是度数):

<tbody> <tr ng-repeat="x in namss"> <td> {{x.sys_name}} </td> <td ng-repeat="t in timess"> <?php $sol_id='{{x.id}}'; $ddate='{{t.date}}'; $ttime='{{t.timee}}'; $atime = $ttime; $adate = $ddate; $asol = $sol_id; include "db.php"; $query = mysql_query("SELECT * FROM render_sys WHERE sol_id='$sol_id' AND date='$ddate' AND (frm_time BETWEEN '$atime' AND '$atime%' OR frm_time ='$atime' OR frm_time BETWEEN '00:00%' AND '$atime%') AND action='on' ORDER by frm_time DESC"); $roww = mysql_fetch_array($query); $count = mysql_num_rows($query); $fftime = $roww['frm_time']; $tetime = $roww['to_time']; $description = $roww['description']; ?> <button class="btn btn-default" ng-click="upda_dt(x.id, t.date, t.timee)" value="available" style="background:#C3D79A !important;" > available <?php echo $description; ?> </button> </td> <td ng-repeat="u in timese" style="background:#C3D79A; color:#000;"> <button class="btn btn-default" ng-click="updat_dt(x.id, u.date, u.timee)" value="available" style="background:#C3D79A; color:#000;"> available </button> </td> </tr> </tbody> 产生-1.0000000000000002,大约是正确的。

cosine(Math.PI, 15)