我做了一個程序來計算各自的泰勒級數,但是教授希望我們通過先除,然後相乘來改變它。這是我的代碼,我使用divide()作爲第一部分。我的power()和fact()只是對舊代碼的引用。C中的泰勒級數,功能除以先乘後數
#include <stdio.h>
#include <math.h>
int main()
{
double x, mySin(), myCos(), myExp();
char more;
do {
printf ("\n\t\t\t\t\tInput x: ");
scanf ("%lf", &x);
printf ("\n\t\t\t\t\t\t\tLibraryResult \t MyResult");
printf ("\n\t\t\tSin(%6.2f)\t %9.6f\t\t%9.6f", x, sin(x), mySin(x));
printf ("\n\t\t\tCos(%6.2f)\t %9.6f\t\t%9.6f", x, cos(x), myCos(x));
printf ("\n\t\t\tExp(%6.2f)\t %9.6f\t\t%9.6f", x, exp(x), myExp(x));
printf ("\n\n\t\t\t\t\tDo more (Y/N) ?");
scanf ("%s", &more);
} while (more == 'y' || more == 'Y');
}
double mySin(double x)
{
double sum = 0., divide();
int i, sign = 1;
for (i = 0; i < 30; i++, sign = - sign)
sum = sum + sign * divide(x) ; //power(x, 2 * i + 1)/fact(2 * i + 1);
return sum;
}
double myCos(double x)
{
double sum = 0., divide();
int i, sign = 1;
for (i = 0; i < 30; i++, sign = - sign)
sum = sum + sign * divide(x);//power(x, 2 * i)/fact(2 * i);
return sum;
}
double myExp(double x)
{
double sum = 0., divide();
int i;
for (i= 0; i < 30; i++)
sum = sum + divide(x); //power(x, i)/fact(i);
return sum;
}
double divide(int n, double x)
{
int i;
double div = 1.;
for (i = 1; i < n; i++)
div = x/i;
return div;
}
/*double fact(int n)
{
int i;
double prod = 1.;
for (i = 1; i <= n; i++)
prod = prod * i;
return prod;
}
double power (double x, int n)
{
int i;
double prod = 1.;
for (i = 0; i < n; i++)
prod = prod * x;
return prod;
}
*/
我一直在用的代碼,當在除()插科打諢,用我<ň產生任何結果,當我輸入x。但是,使用我也可以,但計算錯誤。我試圖自己弄清楚這一點,所以只要一個指針會有幫助!謝謝!
在'divide'函數中,'for'循環什麼都不做,因爲每次只覆蓋'div'的值。因此,函數相當於'return x /(n-1);'。也許你的意思是'div * = x/i;'。 – user3386109
另外請注意,你的'divide'有兩個參數,'divide(int n,double x)',但你只用一個'sum = sum + sign * divide(x)'來調用它。這應該會給你一個錯誤,但是你聲明瞭一個'局部'除法爲'double sum = 0.,divide();'編譯器只是隨之而來,但是你只指定了x,所以它不知道該怎麼做與...一起做通過額外的'n',它應該開始變得更有意義。 – LambdaBeta
一般提示避免LambdaBeta指出的問題:永遠不要將函數原型放在其他函數中,也絕不要指定函數原型。有兩種標準做法。 1)將所有函數原型放在文件的頂部。複製函數定義,將其粘貼到文件頂部並添加分號。 2)按相反順序排列功能。也就是說,'divide'是文件中的第一個,後面是'myCos','mySin','myExp','main'放在文件的末尾。這樣,函數定義就像函數原型一樣,避免了原型中的錯誤。 – user3386109