【问题标题】:how to implement math formula如何实现数学公式
【发布时间】:2012-01-23 06:44:44
【问题描述】:

我必须在我的 iPhone 应用程序中实现数学方程。但我不知道如何实施。是否需要添加框架进行计算?

My formula :0.00005*t^3 + 0.0045*t^2 + 0.7542*t + 23.459 = p

还有一个数学问题:我有p 的值,并且从找到t 中任何人都可以帮助我解决这个等式或帮助我如何找到t。

【问题讨论】:

标签: iphone ipad math xcode4.2


【解决方案1】:

您想要三次方程的根公式 - 您可以从 wikipedia 获得它们

【讨论】:

  • 更一般地说,OP 正在寻找的是一种找到方程根的方法。这可能稍微偏离主题。
  • OP 中提供的公式是三次方,并且链接页面包含几种查找所述根的方法 - 因此我认为它是正确的主题?
  • 确实如此。我只是指出,他的 specific 问题可以通过指向一个更普遍适用的概念来变得更有用。但是,将他指向三次方程的根是合适的。
【解决方案2】:

如果您想简单地计算方程,您可以实现为以下函数:

double f(double t)
{
    return 0.00005 * (t * t * t) + 0.0045 * (t * t) + 0.7542 * t + 23.459;
}

如果你想找到方程的根,你有两个选择:解析解和数值解。从分析上讲,您只能找到一小组多项式的根(Linear,QuadraticCubicQuartic)一般来说,大多数多项式很难找到解析解,如果不是不可能的话。

我为三次方程提供的链接向您展示了如何求解方程的根。我不会在这里重复它们,因为它很容易实现。如果您想要一种“更简单”的方法来求方程的根,可以使用所谓的牛顿法。

你可以把你的函数写成f(t, p) = 0.00005 * t^3 + 0.0045 * t^2 + 0.7542 * t + 23.459 - p。既然你知道方程,你可以计算它的导数并使用Newton's Method 来求解 一个的根:

double FindRoot(double t0, double p)
{
    double eps = 1E-6; // The accuracy of the found root
    double t;
    do
    {
        t = t0;
        double f  = 0.00005 * t * t * t + 0.0045 * t * t + 0.7542 * t + 23.459 - p;
        double fp = 0.00015 * t * t + 0.009 * t + 0.7542;
        t0 = t - f / fp;
    } while(abs(t - t0) > eps);

    return t0;
}

您必须提供一个起始位置来查找第一个根。你应该小心选择它,因为起始位置决定了它收敛到哪个根以及它是否完全收敛。

【讨论】:

    【解决方案3】:

    无需实现额外的框架。

    你可以这样做:

    double p = 0.00005*pow(t, 3) + 0.0045*pow(t, 2) + 0.7542*t + 23.459;
    

    要找到t,您必须求解this 链接中给出的三次方程

    【讨论】:

    • 如果你读到他有 p 值并想为 t 解决的问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多