私のプログラムには、正割法を使用して関数の根を見つける非常に単純な関数があります。以下に示す printf() で正常に動作します。しかし、コメントアウトすると、ループが際限なく繰り返されます。理由がわかりません...
変数を変更するprintfについて読んだことがありますが、変数のストレージを変更するものは何もありません。何か不足していますか?繰り返しは重要ではなく、関数は何百万回も呼び出されるため、印刷するのは優れたソリューションではありません。
double guess1=500.;
double y1=estimater(r,volume,guess1,adm,tm,rr[r]);
double guess2=adm/30.;
double y2=estimater(r,volume,guess2,adm,tm,rr[r]);
int i;
double guess3=0.;
double y3;
double tol =heightTOL;
int secmax=SECANTMAX;
for(i=1;i<=secmax;i++){
guess3=guess2-y2*(guess2-guess1)/(y2-y1);
if(guess3>adm/2.){
guess3=adm/2.;
}
if(guess3<=0.){
guess3=0.;
}
y3=estimater(r,volume,guess3,adm,tm,rr[r]);
y1=y2;
y2=y3;
guess1=guess2;
guess2=guess3;
if(fabs(guess2-guess1)<tol){
break;
}
if(i==secmax){
printf("\nRan out of iterations in height finder\n");
}
printf("%d %f",i,guess3); //THIS ONE HERE!!!!!!!!
}
return guess3;