将学术数学符号转换为C代码

jam*_*ack 0 c math notation

那些甚至中等数学知识数学的人都会笑,但我不记得数学中有多少符号规则,我需要帮助将其转换为C代码.非常感谢您的帮助:

                                         214
          10,000 {(10,000 × [1+.0599/365]   )} +300
answer = ????????????????????????????????????????????
                                   214
                     .1+(1+(i/365))
Run Code Online (Sandbox Code Playgroud)

Mik*_*iak 12

您正在寻找一个程序来为您翻译,或只是一次性转换?如果它只是一次性转换,那就不那么令人兴奋了.

假设我已正确阅读您的语法:

double ans = 10000 * (10000 * pow(1.0 + 0.0599 / 365, 214) + 300;
ans /= (0.1 + pow(1.0 + (i / 365.0), 214));
Run Code Online (Sandbox Code Playgroud)

不过,我会说,你可能会遇到一个问题,那就是将事物提升到指数的高位并分裂.您更有可能需要转换为日志并在日志空间中进行数学运算,然后进行转换.

可能是这样的:

double lognumerator = log(10000) + log(10000) + 214 * log(1 + 0.0599 / 365);
double logdenominator = log(0.1 + exp(214 * log(1.0 + (i / 365.0))));
double ans = exp(lognumerator - logdenominator) + exp(log(300) - logdenominator);
Run Code Online (Sandbox Code Playgroud)

使用日志可能会阻止您使用下溢,这可能会受到这些类型的计算的影响.

  • `(1 + .0599/365)^ 214`是1.036,我不会太担心它.`(1+(i/365))^ 214`在i = 100左右开始变大. (3认同)