首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何实现数学公式

如何实现数学公式
EN

Stack Overflow用户
提问于 2012-01-23 14:44:44
回答 3查看 307关注 0票数 0

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

代码语言:javascript
复制
My formula :0.00005*t^3 + 0.0045*t^2 + 0.7542*t + 23.459 = p

还有一个数学问题:我有一个值,从find p t,有人能帮我解这个方程,或者帮我找到t。

EN

回答 3

Stack Overflow用户

发布于 2012-01-23 14:49:41

您需要一个三次方程的根的公式-您可以从wikipedia获得这些公式

票数 1
EN

Stack Overflow用户

发布于 2012-01-25 13:20:30

如果你想简单地计算这个方程,你可以像下面的函数一样来实现:

代码语言:javascript
复制
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来求解其中一个根:

代码语言:javascript
复制
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;
}

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

票数 0
EN

Stack Overflow用户

发布于 2012-01-23 14:48:49

不需要实现额外的框架。

您可以执行以下操作:

代码语言:javascript
复制
double p = 0.00005*pow(t, 3) + 0.0045*pow(t, 2) + 0.7542*t + 23.459;

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

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8968056

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档