【初心者歓迎】C/C++室 Ver.34【環境依存OK】

このエントリーをはてなブックマークに追加
299デフォルトの名無しさん
逐次計算をCのプログラムでやれそうなので書いていたのですが、手詰まりになったので質問させてください。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3534.zip

水流と勾配から水深を逐次計算法によって出力するプログラムを作っています。
川は限界水深の地点を境に上流側が上流で動水勾配は1/1000、下流は射流で動水勾配は1/250です
流量2210 川幅200 粗度係数0.02 限界水深2.3175として、適当な値をh2以下に当てはめて計算するのですが

常流では適当な値を入れても悪くても20~30回のループで計算が終了するのですが
射流では1000回超えてもループが止まらない場合が多々あります
計算式としては常流analise.cの
hi = D1->H + D1->Z + term1(D1,D2) + term2(D1,D2,dx) - D2->Z;
ここの部分が
hi = D1->H + D1->Z + term1(D1,D2) - term2(D1,D2,dx) - D2->Z;
に変わるだけなのですが、どう修正すればいいでしょうか?