Objective c 目标C中的数学表达式

Objective c 目标C中的数学表达式,objective-c,math,formula,Objective C,Math,Formula,请参见下面的公式 这是圆弦问题的解决方案,其中a是弧长,C是弦长。 我想找到半径r 下面的公式使用阶乘和幂等,我不知道如何在目标C中表示 有人能帮忙把公式转换成C语言吗 a = A² – C² b = -2A^4/4! c = 2A^6/6! d = -2A^8/8! //Let: f = c/a-b²/3a² g = d/a+2b³/27a³-bc/3a² x = cuberoot(-g/2 + sqrt(g²/4+f³/27)) – cuberoot(g/2 + sqrt(g²/4+f

请参见下面的公式

这是圆弦问题的解决方案,其中a是弧长,C是弦长。 我想找到半径r

下面的公式使用阶乘和幂等,我不知道如何在目标C中表示

有人能帮忙把公式转换成C语言吗

a = A² – C²
b = -2A^4/4!
c = 2A^6/6!
d = -2A^8/8!

//Let:
f = c/a-b²/3a²

g = d/a+2b³/27a³-bc/3a²

x = cuberoot(-g/2 + sqrt(g²/4+f³/27)) – cuberoot(g/2 + sqrt(g²/4+f³/27)) - b/3a

r = sqrt(x)
标题为
。你可以用一个因子乘以它本身来求平方;您可以通过将因子自身乘以两次来创建立方体。阶乘是常数;您可以预先计算它们,或者让计算机进行计算:

enum { factorial_3 = 1 * 2 * 3 };  // Not needed, but an example
enum { factorial_3 = 3 * factorial_2 };  // Alternative technique
函数
sqrt()
给出平方根。如果它可用,那么C99中的
cbrt()
将为您提供一个立方根。当它不可用时,您可以使用
pow()
。如果符号
A^4
A^6
A^8
等同于
A
4
A
6
A
8
,那么这些都很容易作为乘法处理

您可以使用此信息组装位和块。

标题为
。你可以用一个因子乘以它本身来求平方;您可以通过将因子自身乘以两次来创建立方体。阶乘是常数;您可以预先计算它们,或者让计算机进行计算:

enum { factorial_3 = 1 * 2 * 3 };  // Not needed, but an example
enum { factorial_3 = 3 * factorial_2 };  // Alternative technique
函数
sqrt()
给出平方根。如果它可用,那么C99中的
cbrt()
将为您提供一个立方根。当它不可用时,您可以使用
pow()
。如果符号
A^4
A^6
A^8
等同于
A
4
A
6
A
8
,那么这些都很容易作为乘法处理


您可以使用此信息组合位和段。

对于指数,您可以使用math.h(需要导入)的
pow(浮点基数,浮点指数)
函数。然后对于阶乘,您必须自己创建一个。下面的函数应该可以工作(我还没有试过)。

长阶乘(整数)
{
长麻木=1;

对于(int i=1;i对于指数,您可以使用math.h(需要导入)的
pow(float base,float exponent)
函数。然后对于阶乘,您必须自己创建一个。以下函数应该可以工作(我还没有尝试过)。

长阶乘(整数)
{
长麻木=1;
对于(int i=1;i这应该可以:

double factorial(int x)
{
    double result = 1;
    for (x = x; x > 0; x--)
    {
        result *= x;
    }
    return result;
}

这应该起作用:

double factorial(int x)
{
    double result = 1;
    for (x = x; x > 0; x--)
    {
        result *= x;
    }
    return result;
}


或者简而言之,
long factorial(int n){if(n)或者简而言之,
long factorial(int n){if(n)编写一个递归函数来生成3个常量似乎很愚蠢。4!=24.6!=720.8!=40320这没什么坏处。总之,它是迭代的,不是递归的;-)你好,尼克,谢谢你的全面解决方案。我在我的应用程序中尝试了代码,但我有一个问题。如果我用20表示a,用25表示C,我会得到以下a=225 b=nan C=1.033137 d=nan f=nan g=nan x=nan和r=nan……你认为哪里出了问题。谢谢我更新了我的答案-现在试试,我想我可能已经得到了答案b、c和d值在错误的位置。嗨,尼克,事实上,你的更新对情况没有帮助,反而使情况变得更糟。我认为问题来自最初的阶乘计算,因为当我使用阶乘方法时,我得到的结果与仅使用woodchips建议的常量不同。有什么想法吗?这看起来很愚蠢使用递归函数生成3个常量。4!=24.6!=720.8!=40320这没什么。总之,它是迭代的,不是递归的;-)你好,尼克,谢谢你的全面解决方案。我在我的应用程序中尝试了代码,但我有一个问题。如果我用20表示a,用25表示C,我会得到以下a=225 b=nan C=1.033137 d=nan f=nan g=nan x=nan和r=nan……你认为哪里出了问题。谢谢我更新了我的答案-现在试试,我想我可能已经得到了答案b、c和d值的ets位置错误。嗨,尼克,事实上你的更新对情况没有帮助,反而使情况变得更糟。我认为问题来自最初的阶乘计算,因为当我使用阶乘方法时,我得到的结果与仅使用woodchips建议的常数不同。有什么想法吗?为什么我的问题是这样的当我的问题是有效问题时,为什么我的问题会被否决?