【问题标题】:Algorithm mistake, finding areas between lines算法错误,寻找线之间的区域
【发布时间】:2014-01-26 17:39:39
【问题描述】:

我正在做数学运算,它要求我计算 2 行之间的面积。我解决了其中几个,我做对了(它在线,所以它告诉我我是错还是对),然后我想写一个程序来为我计算,我创建了一个很好的算法,使用 java程序,但最后它没有给我正确的答案。 我将数据来自我已经解决的问题之一,无论我做对了还是错了。

你能告诉我算法中的错误吗?

public class DailyHelper {

public static double f(double x) {
    double y = 5*x;
    return y;
}

public static double g(double x) {
    double y= 4*x*x;
    return y;
}

public static void main(String[] args) {
    double xLower = 0;
    double xHigher = 5/4;
    double areaF=0;
    double areaG=0;
    double change = (xHigher-xLower)/100000;
    for(double k=xLower; k<xHigher; k=k+change) {
        areaF = areaF+(change*f(k));
    }

    for(double k=xLower; k<xHigher; k=k+change) {
        areaG = areaG+(change*g(k));
    }
    double area = areaF-areaG;
    System.out.println(area);
}
}

【问题讨论】:

  • 两行之间的区域?你能解释一下吗?
  • 我们应该知道算法首先应该做什么。 计算两条线之间的区域 是对它应该做什么的非常模糊的描述,我在代码中看不到任何“线”的概念。也完全没有评论。命名方法“f”和“g”也无助于理解它们应该做什么。
  • 我想您正在尝试执行两个函数的集成以找到函数下方的区域?
  • @user2864414:你去上编程课怎么样?你是一个寻求帮助的人,对问题的描述很差,代码很糟糕。如果你太聪明而且懒得正确命名变量和方法并解释你想要做什么,那么不要寻求帮助。或者至少要有礼貌。
  • 您是 100% 正确的,对于您的不礼貌,我深表歉意。我应该更清楚地提出我的问题,而不是对试图帮助我的人无礼。

标签: java algorithm calculus


【解决方案1】:

只是一个快速的想法。 您的 xHigher 变量始终为 1,因为您将 int 除以 int。试试5/4d

【讨论】:

  • 或者只是double xHigher = 1.25
  • @user14325 是的,它也是正确的。我只是指出了他所犯的确切错误:)
【解决方案2】:

如果有 2 条直线随机线,并且您想从垂直线 L1 和 L2 计算面积,L1 http://en.wikipedia.org/wiki/Numerical_integration#Methods_for_one-dimensional_integrals

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多