如果循环内的语句找到最小值C++

如果循环内的语句找到最小值C++,c++,if-statement,for-loop,C++,If Statement,For Loop,在我的最后一个for循环中,我想重复这些方程并调整Ea的值,直到我找到“平方差2”的最小值及其对应的Ea值。我不确定if语句将如何工作,因此它将在该点停止,而不是继续,在这种情况下,我找不到最小值 int main() { int T[] = { 700,730,760,790,810,840,910,1000 }; double k[] = { 0.011,0.035,0.105,0.343,0.789,2.17,20,145 }; float Yhat[8] = {}; int n = 0;

在我的最后一个for循环中,我想重复这些方程并调整Ea的值,直到我找到“平方差2”的最小值及其对应的Ea值。我不确定if语句将如何工作,因此它将在该点停止,而不是继续,在这种情况下,我找不到最小值

int main()
{
int T[] = { 700,730,760,790,810,840,910,1000 };
double k[] = { 0.011,0.035,0.105,0.343,0.789,2.17,20,145 };
float Yhat[8] = {};
int n = 0;
float Ea = 150000; //kJ
float A = (1.1)*10E12;
float R = 8.3144598; //kj K mol-1
float bestchisquared = 0;
float BestEa = 0;

for (int i = 0; i < 8; i++)
{
cout << "Temp (K): " <<  T[i] << endl;
}
for (int i = 0; i < 8; i++)
{
    cout << "Rate (L mol-1 s-1): " <<  k[i] << endl;

}
float differenceofsquares = 0.0;

for (int i = 0; i < 8; i++)
{
    differenceofsquares += (k[i] - (A*exp(-Ea / (R*T[i]))))*(k[i] - (A*exp(-Ea / (R*T[i]))));
}


cout << "chi squared for 150kJ: " << differenceofsquares << endl;
float differenceofsquares2 = 0;


for (int i = 0; i < 8; i++)
{
    differenceofsquares2 += (k[i] - (A*exp(-Ea / (R*T[i]))))*(k[i] - (A*exp(-Ea / (R*T[i]))));


    if (differenceofsquares2 < differenceofsquares)
        Ea = Ea + 10000;
}
else if  bestchisquared = differenceofsquares;
}

cout <<"Pre-exponential coefficient = "<< A << endl;
cout << "Best chi squared = " << bestchisquared << endl;
cout << "Best Activation Energy = " << BestEa << endl;
system("Pause");

return 0;

}

您正在使用differenceofsquares2+=作为for循环的第一行。因此,在复合+=变量时,方差平方2永远不会自行减小。为了找到最小值,您必须在整个For循环中循环,并注意最小的差异cfsquares,但我不能使用if语句找到最小值吗?可以,但您需要另一个变量。在温度变量中读取方程式的结果。如果该变量小于differenceofsquares2,那么将临时值复制到differenceofsquares2tanks,您能解释一下我在代码中的位置吗?在for循环中,声明float tempResult=[expression];如果tempResult