最近我一直致力于发动机推力计算给定值的斜率。
我已经有很多代码可以使用,但我似乎无法使方程函数正常工作。该人应该根据图表和牛顿上的特定点列出值,然后给出不同的时间,计算机将在给定的时间之间找到一个值并进行斜率计算。
当然那不起作用,我现在真的迷失了,我100%肯定我的循环在函数中是错的,但我不确定我的方程是错的。
基本上该程序应该这样做
id
来源
x y
.19 14.5
.24 6.0
.40 4.4
Enter a time: .21
((.21-.19)/.24-.19))*(6-14.5)+14.5=11.1
the thrust at time .21 is 11.1
答案 0 :(得分:1)
double slope(double thrust[50][2],double time)
{
double newton;
while(time > thrust[50][2]);
{
for(int i=0;i < grid_rows; i++)
{
for( int j=0; j< grid_cols;j++)
{
newton=((time - thrust[i][j])/(thrust[i][j]-thrust[i][j]))
*(thrust[i][j]-thrust[i][j])+thrust[i][j];
return newton;
}
}
}
}
我发现你的算法存在一些问题。
1)你在这里得到零除错误。
((time - thrust[i][j])/(thrust[i][j]-thrust[i][j]))
2)你的循环永远不会运行(总是在第一次迭代时返回)。
return newton;
3)如果你修复(2)记住你可能永远被困在循环中,(时间和推力的值[50] [2]从未改变过。)
也是“;”在while循环结束时是故意的吗?
while(time > thrust[50][2]);
您可能希望将斜率方法更改为以下内容。
double slope (double x1, double x2, double y1, double y2, double time){
double result = 0;
if ((x2-x1) != 0 ){ // google 'double comparison" you may want to use EPSILON instead
result = ((time - x1)/(x2-x1)) * (y2-y1) + y1
}
return result;
}
使用它你可能想要做以下事情。
... assuming trust
[row][0] contains all the x
[row][1] contains all the y
double [lastEntry-1] results;
for(int i=0; i< lastEntry-1; i++){
results[i] = slope ( thrust[i][0], //x1
thrust[i+1][0],//x2
thrust[i][1], //y1
thrust[i+1][1],//y2
time);
}
我留下如何将cin的推力作为锻炼给你。