プログラムテストメモについて


1週間以上忙しくて、すべての時間と精力がプログラムのテストに費やされました.codeを書く時間を比較すると、これはもう何倍もあります.プログラムにコンパイル上のエラーはありませんが、テストの実行結果は私たちが予測したように完璧ではありません.私は自分のアルゴリズム自体の欠陥なのか、ある問題をうまく解決できないのか、それともプログラムを書く上でミスをしたのか全く分かりません.テストの結果の一部が正常に表示されたため、いくつかの条件での入力を処理する際にエラーがあったようです.私たちは頭のないハエのように、何度も壁にぶつかっても、問題の所在が分からず、少しがっかりした.
 
 
プログラムには、引数dの値を[min,max]とする関数があり、この区間でf(x)をゼロにできる変数があるかどうかを見つけ、f(x)がこの区間でX軸を通り抜けたかどうかをテストします.使用方法は簡単で,まず粗いサンプリング区間,例えばt=(max−min)/10000.0のような間隔でそれぞれの値を算出し,隣接する2つの数の成績がゼロ未満であるか否かを判断する.もちろん、サンプリング間隔が重要な問題になることがあります.一つの先入観は軌跡円の方程式が大きくないので,このdの取値範囲は小さいはずであり,彼らの間で[max-min]が何部に分けて需要を満たすことができると考えられてきた.結局この陥落主の考えは、私を正解の端に遮った.
Thread 5 has entered into ^_^ 
 max and min are 73.04481725355387:0.4966007122005891
 original d is 0.5328748204712658 distance is 0.2412947474691374
 original d is 0.5691489287419425 distance is 0.4509871765772213
 original d is 0.6054230370126191 distance is 0.5994128821785287

その後のテストの結果、私は驚いた.maxの最大値は73以上なので、何万部を分けても正確な効果は得られません.通常の精度値は10の負の8乗である.だからこれで間隔が大きくなり、多くの値が省略されます.結果は想像できる.引き続き測定すると、[0.49,73.0]の真の有効値は[0.49,16.5]にすぎないことが分かったので、この73.0はまずサンプリング間隔を拡大し、プログラムに無効な計算をさせます.最適化アルゴリズムを考慮します
 
だから、総括して、盲目的にプログラムをテストしてデバッグしないでください.本当の問題が分からないなら、まずプログラムの作成に問題がないことを確保して、それからテストの結果を検査して、その実行過程のデータを分析して、これはきっと役に立つと思います.
 
これは1門のとても大きい学問で、経験の蓄積と自分の探求だけあって、やっと速くてよくすることができます.