修正java中的公式

Posted

技术标签:

【中文标题】修正java中的公式【英文标题】:Correcting a formula in java 【发布时间】:2020-09-30 01:51:19 【问题描述】:

我的第一个任务要求我编写一个表达公式的程序。作业中写的公式:

y   =   4x^3 + 8x^2 - 31x - 35 / (3x2 + 1)^1/2  + 2 * | x - 1.5 |  

          

|指绝对值; (...)1/2 表示平方根

另外我应该如何创建一个代码来打印公式打印出正数或负数或零的次数?

这是我创建作业程序的方式:

import java.io.*;

public class hw1 

    public static void main(String[] args) throws IOException
    
        System.out.println("My name is Jibran Khan and this is the output of my first program.");
        
        double x; double y;
        
        PrintWriter outFile = new PrintWriter("testfile.txt");
    
        for(x=-3.00; x <= 3.0; x = x + 0.50)
         
        
        y=((4*(x*x*x))) + (8*(x*x))-(31*x)-35/Math.sqrt(3*x*x+1)+2* Math.abs(x-1.5);
        System.out.println("X = " + x + "Y = " + y );
        
        if (y<=0.0) System.out.println("Y is negative");
        if (y>=0.0) System.out.println("Y is positive");
        if (y == 0.0) System.out.println("Y is zero");
        
        
        
        
        System.out.println();
        System.out.println("My first program is complete");
        
        outFile.close();
        

    
    

【问题讨论】:

那么你有什么问题? 我的公式不正确,也没有编写一个程序来打印一个数字是正负还是零。 如果 y 为零,则 if (y&lt;=0.0) 为真,if (y&gt;=0.0) 也是如此 至于你的逻辑,先搞清楚计算的优先顺序,然后用括号/或中间变量确保顺序如你所愿。 你怎么知道你的公式不正确? 【参考方案1】:

好的,您想对一个简单的数学公式进行测试。您必须测试结果并定义有多少结果是正数、负数或等于 0 ... 您必须更新您的测试...结果等于 0,您的测试返回正、负和空结果。

您还必须计算结果。因此,为每种类型的结果实现计数器并在 if 语句中递增它们。

public static void main(String[] args) throws IOException 
    double x; double y;
    int positive = 0;
    int negative = 0;    
    int equalZero = 0;
    PrintWriter outFile = new PrintWriter("testfile.txt");

    for(x=-3.00; x <= 3.0; x = x + 0.50)  
        y = Math.pow(4,3) + ... ( your formula) 
        System.out.println("X = " + x + "Y = " + y );
        if (y < 0.0) 
            System.out.println("Y is negative");
            negative++;
         else if (y > 0.0) 
            System.out.println("Y is positive");
            positive++;
         else  
            System.out.println("Y is zero");
            equalZero++;
        
    

    System.out.println();
    System.out.println("Positive results : " + positive);
    System.out.println("Negative results : " + negative);
    System.out.println("Equal to zero   : " + equalZero);
   
    outFile.close();

【讨论】:

【参考方案2】:

用不同的变量计算分母和分子,这将提高可读性,您将能够轻松发现错误。

此外,您为 y: (y &lt;= 0.0) and (y &gt;= 0.0) 提供的条件将为零,因此最后一个条件 y == 0.0 不可达。

【讨论】:

以上是关于修正java中的公式的主要内容,如果未能解决你的问题,请参考以下文章

读论文《BP改进算法在哮喘症状-证型分类预测中的应用》

方差为什是是除以(n-1)而不是除以n啊

Java中的Luhn公式实现

Java中的Haversine公式产生不正确的结果

石油行业里的计量中有个VCF,好象叫"体积修正系数" 这个VCF到底是怎么算出来的?公式是啥?VCF代表啥?

Java执行字符串中的运算公式