C 如何计算钟摆的周期
任务是计算钟摆的周期。我的一个值在接近t=0时爆炸了,这让我很困惑。我也不知道我的价值观是否正确 以下是我的插值函数Interp:C 如何计算钟摆的周期,c,physics,numerical-methods,ode,C,Physics,Numerical Methods,Ode,任务是计算钟摆的周期。我的一个值在接近t=0时爆炸了,这让我很困惑。我也不知道我的价值观是否正确 以下是我的插值函数Interp: #include <stdio.h> #include <math.h> double Interp(double x_1, double y_1, double x_2, double y_2, double x){ double k,y,b; k=(y_2-y_1)/(x_2-x_1);
#include <stdio.h>
#include <math.h>
double Interp(double x_1, double y_1, double x_2, double y_2, double x){
double k,y,b;
k=(y_2-y_1)/(x_2-x_1);
b=y_2-(k*x_2);
y=k*x+b;
return(y);
}
这些值对我来说似乎是合理的,但我不明白为什么它会在n=0.05时爆炸到无穷大。我也不完全确定如何检查我的结果是否正确
任何帮助都将不胜感激。提前谢谢你至少要解决这个问题
sol=crosst2-crosst1代码>可以使用crosst2、crosst1
而不设置其中一个或两个,从而导致未定义的行为
最好是初始化它们,或者在两者都设置好之前不执行减法
对于进一步调查,建议如下:GTG
fprintf(fp, "%.17g %.17g %lf\t%lf\n", crosst1, crosst2, n, sol);
注意:我使用了#define M#u PI 3.1415926535897932384626433832795
至少解决了这个问题
sol=crosst2-crosst1代码>可以使用crosst2、crosst1
而不设置其中一个或两个,从而导致未定义的行为
最好是初始化它们,或者在两者都设置好之前不执行减法
对于进一步调查,建议如下:GTG
fprintf(fp, "%.17g %.17g %lf\t%lf\n", crosst1, crosst2, n, sol);
注意:我使用了#定义M#PI 3.1415926535897932384626433832795
M#PI值是多少?我将其定义为3.1428,并在年执行。当n为0.5时,我得到了6.281470。我使用了#include,所以M#PI应该定义为3.14159265358979323846。在该编译器中,看起来M#PI没有定义。但是,我将M_PI定义为3.14159265358979323846并重新运行。n=0.5时仍为6.284170。我建议您在代码中打印中间值,并找出问题所在。M_PI值是什么?我将其定义为3.1428,并在年执行。当n为0.5时,我得到了6.281470。我使用了#include,所以M#PI应该定义为3.14159265358979323846。在该编译器中,看起来M#PI没有定义。但是,我将M_PI定义为3.14159265358979323846并重新运行。n=0.5时仍为6.284170。我建议您在代码中打印中间值,并找出问题所在。
fprintf(fp, "%.17g %.17g %lf\t%lf\n", crosst1, crosst2, n, sol);