【发布时间】:2017-07-06 21:44:31
【问题描述】:
你能给我关于计算指数泰勒级数精度的建议吗?我们有一个指数和一个精度计算的数字作为输入数据。我们应该收到一个具有给定精度的计算数字作为输出数据。我写了一个程序,但是当我计算一个答案并将其与嵌入式函数的答案进行比较时,它有不同之处。你能告诉我,我怎样才能消除答案之间的差异? formula of exponent's calculating
#include "stdafx.h"
#include "iostream"
#include <math.h>
#include <Windows.h>
#include <stdlib.h>
using namespace std;
int Factorial(int n);
double Taylor(double x, int q);
int main()
{
double res = 0;
int q = 0;
double number = 0;
cout << "Enter positive number" << "\n";
cin >> number;
cout << "Enter rounding error (precision)" << "\n";
cin >> q;
cout << "\n" << "\n";
res = Taylor(number, q);
cout << "Answer by Taylor : " << res;
cout << "Answer by embedded function: " << exp(number);
Sleep(25000);
return 0;
}
int Factorial(int n) {
int res = 1;
int i = 2;
if (n == 1 || n == 0)
return 1;
else
{
while (i <= n)
{
res *= i;
i++;
}
return res;
}
}
double Taylor(double x, int q) {
double res = 1;
double res1 = 0;
int i =1;
while (i)
{
res += (pow(x, i) / Factorial(i));
if (int(res*pow(10, q)) < (res*pow(10, q)))
{//rounding res below
if ( ( int (res * pow(10,q+1)) - int(res*pow(10, q))) <5 )
res1 = (int(res*pow(10, q))) * pow(10, (-q));
else
res1 = (int(res*pow(10, q))) * pow(10, (-q)) + pow(10,-q);
return res1;
}
i++;
}
}
【问题讨论】:
-
有什么区别?您尝试扩展什么功能?
-
我想让泰勒函数像嵌入函数一样更准确。例如,您可以尝试输入变量,您会看到答案有所不同。
-
你得到了什么结果,它们与你想要得到的结果有何不同?
-
@tryuf 至少,在询问之前修复所有警告,因为它们可能是您的问题的原因:
warning C4715: 'Taylor' : not all control paths return a value。 -
如果一个结果是 39,334,另一个是 148,413,那么这很可能不是精确问题,但更有可能是您的结果完全错误
标签: c++ taylor-series