Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C程序-泰勒级数长公式_C_Numerical Methods - Fatal编程技术网

C程序-泰勒级数长公式

C程序-泰勒级数长公式,c,numerical-methods,C,Numerical Methods,这个公式是我一个朋友给我的,我给他准备好了。但我似乎不知道如何获得每个角度的正确正弦计算。有人能帮我在罪的部分得到正确的命令吗 代码: #包括 #定义PI 3.141592653589 #定义\u术语的数量\u 10 双阶乘(双x) { 双计数器,总计; 计数器=x; 总数=x; 而(计数器>1) { 计数器--; 总计=总计*计数器; } 返回总数; } 双功率(双x,双y) { 双计数器,j; 计数器=0; j=x; while(柜台) f2用3初始化,然后在条件部分检查f2是否等于1,返回

这个公式是我一个朋友给我的,我给他准备好了。但我似乎不知道如何获得每个角度的正确正弦计算。有人能帮我在罪的部分得到正确的命令吗

代码:

#包括
#定义PI 3.141592653589
#定义\u术语的数量\u 10
双阶乘(双x)
{
双计数器,总计;
计数器=x;
总数=x;
而(计数器>1)
{
计数器--;
总计=总计*计数器;
}
返回总数;
}
双功率(双x,双y)
{
双计数器,j;
计数器=0;
j=x;
while(柜台)
f2用3初始化,然后在条件部分检查f2是否等于1,返回false

这个循环甚至没有运行一次。第一次条件为false。所以

fac2*=f2;
永远不会被执行

并且您在下一个循环中都犯了相同的错误。

f2用3初始化,然后在条件部分检查f2是否等于1,返回false

这个循环甚至没有运行一次。第一次条件为false。所以

fac2*=f2;
永远不会被执行


并且您对下一个循环都犯了相同的错误。

大多数for循环从未运行过。请检查它们的正确语法。例如:

for(f2=3;f2==1;f2--)

从未执行,因为f2=3和3!=1

大多数for循环从未运行。请检查它们的正确语法。例如:

for(f2=3;f2==1;f2--)
#include<stdio.h>
#define PI 3.141592653589
#define NUMBER_OF_TERMS 10

int
main()
{
 double angle_degrees, angle_radians;
 double sin, i, i2, i3, i4 , i5, i6, i7, i8, i9, i10;
 double fac1, fac2, fac3, fac4, fac5, fac6=1, fac7, fac8, fac9, fac10;
 double f1, f2, f3, f4, f5, f6, f7, f8, f9, f10;
 double p1, p2, p3, p4, p5, p6, p7, p8, p9, p10;
 for(angle_degrees = -180; angle_degrees <= 180; angle_degrees += 5){
    p1 = angle_radians;
    p2 = angle_radians; 
    p3 = angle_radians;
    p4 = angle_radians;
    p5 = angle_radians;
    p6 = angle_radians; 
    p7 = angle_radians;
    p8 = angle_radians; 
    p9 = angle_radians;
    p10 = angle_radians;

    angle_radians = angle_degrees*PI/180;
    for(f1=3;f1>=1;f1--){
        fac1*=f1;
    }
    for(f2=5;f2>=1;f2--){
        fac1*=f2;
    }
    for(f3=7;f3>=1;f3--){
        fac1*=f3;
    }
    for(f4=9;f4>=1;f4--){
        fac1*=f4;
    }
    for(f5=11;f5>=1;f5--){
        fac1*=f5;
    }
    for(f6=13;f6>=1;f6--){
        fac1*=f6;
    }
    for(f7=15;f7>=1;f7--){
        fac1*=f7;
    }
    for(f8=17;f8>=1;f8--){
        fac1*=f8;
    }
    for(f9=19;f9>=1;f9--){
        fac1*=f9;
    }
    for(f10=21;f10>=1;f10--){
        fac1*=f10;
    }

    sin = angle_radians - (pow(p1, 3)/fac1) + (pow(p2, 5)/fac2) - (pow(p3, 7)/fac3) + (pow(p4, 9)/fac4) - (pow(p5, 11)/fac5) + (pow(p6, 13)/fac6) - (pow(p7, 15)/fac7) + (pow(p8, 17)/fac8) -(pow(p9, 19)/fac9) - (pow(p10, 21)/fac10);
    printf ("%.2lf\t\t%.12lf\t\t%.12lf\n", 
        angle_degrees, angle_radians, sin);
    }
 }
从不执行,因为f2=3和3!=1
#include<stdio.h>
#define PI 3.141592653589
#define NUMBER_OF_TERMS 10

int
main()
{
 double angle_degrees, angle_radians;
 double sin, i, i2, i3, i4 , i5, i6, i7, i8, i9, i10;
 double fac1, fac2, fac3, fac4, fac5, fac6=1, fac7, fac8, fac9, fac10;
 double f1, f2, f3, f4, f5, f6, f7, f8, f9, f10;
 double p1, p2, p3, p4, p5, p6, p7, p8, p9, p10;
 for(angle_degrees = -180; angle_degrees <= 180; angle_degrees += 5){
    p1 = angle_radians;
    p2 = angle_radians; 
    p3 = angle_radians;
    p4 = angle_radians;
    p5 = angle_radians;
    p6 = angle_radians; 
    p7 = angle_radians;
    p8 = angle_radians; 
    p9 = angle_radians;
    p10 = angle_radians;

    angle_radians = angle_degrees*PI/180;
    for(f1=3;f1>=1;f1--){
        fac1*=f1;
    }
    for(f2=5;f2>=1;f2--){
        fac1*=f2;
    }
    for(f3=7;f3>=1;f3--){
        fac1*=f3;
    }
    for(f4=9;f4>=1;f4--){
        fac1*=f4;
    }
    for(f5=11;f5>=1;f5--){
        fac1*=f5;
    }
    for(f6=13;f6>=1;f6--){
        fac1*=f6;
    }
    for(f7=15;f7>=1;f7--){
        fac1*=f7;
    }
    for(f8=17;f8>=1;f8--){
        fac1*=f8;
    }
    for(f9=19;f9>=1;f9--){
        fac1*=f9;
    }
    for(f10=21;f10>=1;f10--){
        fac1*=f10;
    }

    sin = angle_radians - (pow(p1, 3)/fac1) + (pow(p2, 5)/fac2) - (pow(p3, 7)/fac3) + (pow(p4, 9)/fac4) - (pow(p5, 11)/fac5) + (pow(p6, 13)/fac6) - (pow(p7, 15)/fac7) + (pow(p8, 17)/fac8) -(pow(p9, 19)/fac9) - (pow(p10, 21)/fac10);
    printf ("%.2lf\t\t%.12lf\t\t%.12lf\n", 
        angle_degrees, angle_radians, sin);
    }
 }
#定义PI 3.141592653589 #定义\u术语的数量\u 10 int main() { 双角度度,角度弧度; 双正弦,i,i2,i3,i4,i5,i6,i7,i8,i9,i10; 双fac1、fac2、fac3、fac4、fac5、fac6=1、fac7、fac8、fac9、fac10; 双f1、f2、f3、f4、f5、f6、f7、f8、f9、f10; 双p1,p2,p3,p4,p5,p6,p7,p8,p9,p10; 对于(角度=-180;角度=1;f1-){ fac1*=f1; } 对于(f2=5;f2>=1;f2--){ fac1*=f2; } 对于(f3=7;f3>=1;f3--){ fac1*=f3; } 对于(f4=9;f4>=1;f4--){ fac1*=f4; } 对于(f5=11;f5>=1;f5--){ fac1*=f5; } 对于(f6=13;f6>=1;f6--){ fac1*=f6; } 对于(f7=15;f7>=1;f7--){ fac1*=f7; } 对于(f8=17;f8>=1;f8--){ fac1*=f8; } 对于(f9=19;f9>=1;f9--){ fac1*=f9; } 对于(f10=21;f10>=1;f10--){ fac1*=f10; } sin=角度弧度-(pow(p1,3)/fac1)+(pow(p2,5)/fac2)-(pow(p3,7)/fac3)+(pow(p4,9)/fac4)-(pow(p5,11)/fac5)+(pow(p6,13)/fac6)-(pow(p7,15)/fac7)+(pow(p8,17)/fac8)-(pow(p9,19)/fac9)-(pow(p10,21)/fac10); printf(“%.2lf\t\t%.12lf\t\t%.12lf\n”, 角度_度、角度_弧度、sin); } }
这是一个全新的——我也忘记了这些限制: 1) 除了main()之外,没有其他函数。 2) 没有投入。 3) 角度=双数据。 4) 输出=角度(度数和弧度)、余弦(一旦完成正弦解算,余弦将起作用)和正弦 #定义PI 3.141592653589 #定义\u术语的数量\u 10 int main() { 双角度度,角度弧度; 双正弦,i,i2,i3,i4,i5,i6,i7,i8,i9,i10; 双fac1、fac2、fac3、fac4、fac5、fac6=1、fac7、fac8、fac9、fac10; 双f1、f2、f3、f4、f5、f6、f7、f8、f9、f10; 双p1,p2,p3,p4,p5,p6,p7,p8,p9,p10; 对于(角度=-180;角度=1;f1-){ fac1*=f1; } 对于(f2=5;f2>=1;f2--){ fac1*=f2; } 对于(f3=7;f3>=1;f3--){ fac1*=f3; } 对于(f4=9;f4>=1;f4--){ fac1*=f4; } 对于(f5=11;f5>=1;f5--){ fac1*=f5; } 对于(f6=13;f6>=1;f6--){ fac1*=f6; } 对于(f7=15;f7>=1;f7--){ fac1*=f7; } 对于(f8=17;f8>=1;f8--){ fac1*=f8; } 对于(f9=19;f9>=1;f9--){ fac1*=f9; } 对于(f10=21;f10>=1;f10--){ fac1*=f10; } sin=角度弧度-(pow(p1,3)/fac1)+(pow(p2,5)/fac2)-(pow(p3,7)/fac3)+(pow(p4,9)/fac4)-(pow(p5,11)/fac5)+(pow(p6,13)/fac6)-(pow(p7,15)/fac7)+(pow(p8,17)/fac8)-(pow(p9,19)/fac9)-(pow(p10,21)/fac10); printf(“%.2lf\t\t%.12lf\t\t%.12lf\n”, 角度_度、角度_弧度、sin); } } 这是一个全新的——我也忘记了这些限制: 1) 除了main()之外,没有其他函数。 2) 没有投入。 3) 角度=双数据。 4) 输出=角度(度数和弧度)、余弦(一旦完成正弦解算,余弦将起作用)和正弦。

正弦(x)的泰勒级数是x-x^3/3+x^5/5。在您的代码中,我假设p1应该表示x^1=x,p2=x^3。。f1=1!f2=3。现在在结果行中编写

 sin = angle_radians - (p1/fac1) + (p2/fac2) + //...
其中的系列符号错误+第一个术语再次出现

 sin = (p1/fac1) - (p2/fac2) + //...
而且代码过于复杂。您可以在单个循环中收集结果:

double p=x;
double f=1;
double res=0;
int k=1;
for (int i=0;i<n;i++){
  res+=p/f;
  p*=-x*x;
  k+=2;
  f*=(k-1)*k;
}
double p=x;
双f=1;
双res=0;
int k=1;
对于(inti=0;isin(x)的泰勒级数是x-x^3/3!+x^5/5!-…在您的代码中,我假设p1应该表示x^1=x,p2=x^3,…和f1=1!f2=3!…现在在您编写的结果行中

 sin = angle_radians - (p1/fac1) + (p2/fac2) + //...
其中的系列符号错误+第一个术语再次出现

 sin = (p1/fac1) - (p2/fac2) + //...
此外,代码过于复杂。您可以在单个循环中收集结果:

double p=x;
double f=1;
double res=0;
int k=1;
for (int i=0;i<n;i++){
  res+=p/f;
  p*=-x*x;
  k+=2;
  f*=(k-1)*k;
}
double p=x;
双f=1;
双res=0;
int k=1;
for(int i=0;iCode允许任意数量的术语
抄袭


避免重新计算递归函数(如相同参数的幂和阶乘)始终是一个好主意。因此,减少(最少数量的)基本算术运算如下所示:

public static double sine(int terms, double x) {
    double result = 1;
    double mxx = -x*x;
    double addens = 1;
    double temp = 2;
    for(int n = 2; n <= terms; n++) {
        addens *= mxx/temp++/temp++;
        result += addens; 
    }
    return x*result;

}
这可以放入一个循环中

res = 1
for( k=num_terms; k-->1;) {
    res = 1-x*x*res/(2*k*(2*k+1))
}
res = res*x;
也可以展开循环

res = 1-x*x/42;
res = 1-x*x/20*res;
res = 1-x*x/6*res;
res = x*res;
您可以自由组合
x2=x*x
或重命名
x=angle\u radians

代码,允许任意数量的术语 抄袭


避免重新计算递归函数,如相同参数的幂和阶乘,这始终是一个好主意(